IOBP 1

Grundlagen der objektorientierten Programmierung. (IUBH-Fernstudium)

Grundlagen der objektorientierten Programmierung. (IUBH-Fernstudium)


Fichier Détails

Cartes-fiches 106
Langue Deutsch
Catégorie Informatique
Niveau Université
Crée / Actualisé 18.12.2015 / 27.08.2022
Lien de web
https://card2brain.ch/box/iobp_1
Intégrer
<iframe src="https://card2brain.ch/box/iobp_1/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>

Polymorphie?

Vielgestalt. Eine Variable die vom Typ einer bestimmten Klasse deklariert ist, kann auch Instanzen der Unterklasse annehmen. Man kann einer Variable Objekte unterschiedlicher Klassen zuweisen, falls die Klassen in einer Vererbungsbeziehung zueinander stehen. Das ermöglicht es über ein und dieselbe Variable verschiedene Methodenimplementierungen aufzurufen.

Test auf spezifische Klassenzugehörigkeit?

instanceof-Operator

Klassenvariablen?

Werden auch statische Attribute genannt. Sie werden durch das Schlüsselwort static deklariert, und legt feest dass dieses Attribut auch ohne die Erzeugung einer konkreten Instanz verfügbar ist. Angesprochen wird dieses Attribut über ihren Namen in Kombination mit dem Namen der Klasse in welcher es implementiert worden ist.

Dienen häufig zur Definition von Konstanten.

Statische Methoden?

Können ebenso wie statische Attribute ohne eine konkrete Instanz der Klasse verwendet werden, dürfen jedoch im methodenrumpf nicht aauf Instanzmethoden oder -variablen zugreifen. Beispiele für statische Methoden findet man z.B. in der Klasse Math.

Dienen zum implementieren von Funktionen deren Ergebnis nur von ihren Eingabeparametern abhängt.

new-Operator?

Erzeugt ein neues Objekt einer gegebenen Klasse. Im Zusammenspiel mit einem Standard-Konstruktor kann man die Attribute mit gewünschten Eingaben belegen.

Standard-Konstruktor?

Eine spzielle Methode, die der Erzeugung von neuen Objekten einer Klasse dient.

Für seine Definition gelten folgende Regeln:

  1. Der Name muss mit dem der Klasse übereinstimmen.
  2. Er besitzt keinen Rückgabetyp.
  3. Die Sichtbarkeit sollte immer public sein.
  4. Er hat im Gegensatz zu überladenen Konstruktoren keine Paarameter und erfüllt daher im Normalfall nur zwei Aufgaben:
    • Anpassen der Defaultwerte für primitive Datentypen.
    • Erzeugung von nicht-primitiven Attributen (Objekte).

 

leerer Standard-Konstruktor?

Wird vom Compiler erzeugt, falls keine Konstruktor programmiert wurde. Explizit kann gesagt werden, dass man den Standard-Konstruktor nicht definieren muss, falls bei der Objekterzeugung weder zusätzliche Objekte erzeugt, noch Defaultwerte angepasst werden müssen. Für die einfache Objekterzeugung genügt der vom Compiler eingefügte Standardkonstruktor.

Garabage-Collection?

Ist ein Konzept innerhalb Java zur automatischen Speicherverwaltung. Nicht mehr benötigte Objekte werden von der Java-Laufzeitumgebung automatisch gelöscht um nicht unnötig Speicherplatz zu belegen. Sollte es Bedarf geben bei Programmen mit besonders großem Speicherbedarf Freiraum zu schaffen, kann der Garabage-Collector durch die Anweisung "System.gc()" aufgerufen werden.

überladener Standard-Konstruktor?

Dient der Initialisierung eines Objekts mit Werten die erst zur Laufzeit festgelegt werden. Hierzu wird eine Parameterliste definiert, mit der die Werte dem Objekt übergeben werden können.

Desweiteren besteht die Möglichkeit den Konstruktor mehrfach zu überladen, um unetrschiedliche Parameterlisten, welche übergeben werden können, zu ermöglichen. Vereinfachen kann man dies indem die Konstruktoren ineinander verschachtelt werden. Ein 2. überladener Konstruktor kann mit der Anweisung " this(parameter1, parameter2)" eines vorrausgehenden Konstruktor aufrufen. Soll der Standard-Konstruktor aufgerufen werden geschieht dies mit "this()", also einer leeren Parameterliste.

Es kann also ein Konstruktor für jede kombination an bereitstehenden Informationen definiert werden.

Copy-Konstruktor?

Dieser dient dem Klonen von Objekten. Er kann eine tiefe Kopie (mit allen Referenzdatentypen) oder flache kopie (nur primitive Datentypen und Strings) erstellen, je nachdem wie er programmiert wurde.

Er kann folgendermaßen aussehen:

public Kunde(Kunde original) {

   vorname = original.vorname;

   geschlecht = original.geschlecht;

etc

}

Konstruktoren & Vererbung?

Mit dem Schlüsselwort super() kann man den Konstruktor einer Oberklasse aufrufen. Es kann genauso verwendet werden wie das Schlüsselwort this(). Es gibt also auch die Möglichkeit mit super() Parameter an einer Konstruktor der Oberklasse zu übergeben. Dies dient dem Sparen redundanter Programmierarbeit.

Ausnahme?

Ein Zustand, der das Programm an der Fortführung des normalen Ablaufs hindert.

Fehlersignal?

Kodiert eine Ausnahme anhand eines Wertes, der außerhalb des fachlich gültigen Wertebereichs liegt. Das aufrufende Programm muss die Kodierung kennen um auf die Ausnahme reagieren zu können.

Der Nachteil bei diesem Vorgehen ist, dass technische fehlersignale und fachliche Rückgabewerte über den gleich Kanal zurückgegeben werten. Diese vermischung führt zu schlechter Softwarequalität und sollte vermieden werden um Programme robuster zu machen.

Klasse Exception?

Objektorientiertes Konzept zur Definiton und Verwendung von Ausnahmen. Enthält eine umfangreiche Sammlung an vordefinierten Standard-Exceptions und liefert spezielle Sprachelemente zum Werfen und Abfangen von Exceptions.

Beispiele für vordefinierte Exceptions sind:

  • ArithmeticException
  • ArrayIndexOutOfBoundsException
  • NullPointerException

Alternativen zum Umgang mit Exceptions?

  1. Exception wird innerhalb der Methode abgefangen
  2. Die Exception wird an das aufrufende Programm weitergeleitet.
  3. Die Exception wird abgefangen und dann mit einer spezifischen Meldung an das aufrufende Programm weitergeleitet.

try/catch-Block?

Dient dem Abfangen von Exceptions. Im try-Block stehen die kritischen Programmanweisungen, im catch-Block werden die Ausnahmen behandelt.

In einem try/catch-Block können auch mehrere catch-Blöcke definiert werden, dies ist sinnvoll, wenn:

  • im try-Block unterschiedliche Exceptions auftretetn können und jede seperat behandelt werden soll.
  • sichergestellt werden soll, dass neben einer bestimmen Standard-Exception auch alle anderen Exceptions abgefangen werden sollen.

Schlüsselwort throws?

Zeigt in der Methodensignatur an welche Exceptions zuerwarten sind. Der try/catch-Block wird hierdurch in das aufrufende Programm verlagert. Über die Methode getMessage() wird die fehlermeldung ermittelt und auf der Konsole ausgegeben.

Unchecked / Checked Exceptions?

Unchecked Expections müssen nicht abgefangen werden, obwohl mit throws auf sie hingewiesen wurde. Dies gilt für alle Exceptions die Unterklassen von RuntimeException sind. Alle anderen Exceptions, also auch selbst definierte, müssen abgefangen werden.

Schlüsselwort throw?


Diese ermöglicht das Weiterleiten einer spezifischen Fehlermeldung, welche für den Nutzer verständlich ist.

Die Exception muss hierfür innerhalb der Methode mit einem try/catch-Block gefangen werden, um anschließend eine neue Exception zu werfen, die die spezifische Fehlermeldung enthält. Diese wird dem Konstruktor der Fehlermeldung als Parameter übergeben.

Finally-Block?

Hier werden alle Anweisungen festgehalten, die unabhängig vom Auftreten einer Exception, ausgeführt werden sollen.

Eigene Exceptions?

Müssen als Unterklasse der Klasse Exception programmiert werden. Mithilfe der Konstruktoren kann dann festgelegt werden welche Nachrichten von der Exception erzeugt werden. Für den Standardkonstruktor sollte eine Nachricht vordefiniert werden. Hierzu muss der Konstruktor der Oberklasse mit der gewünschten Zeichenfolge aufgerufen werden.

Einsatz von Interfaces?

Zur Trennung von Spezifikation und Implementierung. Man programmiert gegen eine Schnittstelle, statt gegen eine Implementierung. Diese Trennung ermöglicht es die Implementierung bei Bedarf einfach auszutauschen, ohne dass dadurch ein zu großer Anpassungsaufwand entsteht.

Außerdem wird hierdurch die Wiederverwendbarkeit von Klassen oder Paketen erhöht, da diese über die Schnittstelle an vielen Stellen wo sie benötigt wird implementiert werden kann.

Interface?

Werden mit dem Schlüsselwort interface definiert. DIe Syntax ähnelt stark der einer Klasse, mit dem Unterschied dass alle Methoden abstrakt sind. Die Methoden werden erst von den Klassen welche auf dem Interface beruhen implementiert.

Desweiteren ist es, mit Ausnahme von Konstanten, in interfaces nicht erlaubt Attribute zu definieren.

Eine Klasse die ein interface implementiert verwendet das Schlüsselwort implements und den Namen des interface.

use-Assoziation?

Kennzeichnet in der UML, dass eine Klasse eine Schnittstelle verwendet. Besteht aus einem gestricheltem Pfeil mit offener Spitze und wird durch den Stereotyp <<use>> gekennzeichnet. Diese Klasse ruft also mindestens eine Methode der Schnittstelle auf.

Kennzeichnung einer Schnittstelle in der UML?

<<interface>>

Die Vererbungsnotation zur implementierenden Klasse wwird durch einen gestrichelten Pfeil mit geschlossener Pfeilspitze dargestellt.

Vererbung bei Interfaces?

Auch Interfaces können untereinander erben, im Gegensatz zu Klassen unterstützt Java bei Interfaces auch die Vererbung von mehr als einem interface.