Programmierung (Fach) / Java1 (Lektion)
In dieser Lektion befinden sich 37 Karteikarten
Objektorientierte Programmierung
Diese Lektion wurde von Valita erstellt.
Diese Lektion ist leider nicht zum lernen freigegeben.
- Instanzmethoden innerhalb der Klasse, aber ohne Schlüsselwort static nur zusammen mit einem Objekt der Klasse verfügbar muss mit vorangestelltem Objektnamen aufgerufen werden, um dem Compiler anzuzeigen, welches Objekt bzw. welche Methode wir meinen m7.mul(5); beschreiben die Funktionalität der Klassenattribute haben direkten Zugriff auf Instanzvariablen, Klassenvariablen und Klassenmethoden der Klasse
- Statischer Import Vereinfachung für den Import von Klassenmethoden (->Übersichtlichkeit) Import einer einzelnen Komponente: import static <<Paketname>>.<<Klassenname>>.<<Komponentenname>>; Import aller Klassenvariablen und Klassenmethoden: import static <<Paketname>>.<<Klassenname>>.*; Bsp.: import static java.lang.Math.*;
- Zugriffsrechte Modifikatoren: public private protected public = erlaubt Zugriff von allen anderen Klassen aus private = keine Klasse kann auf Variablen zugreifen (nicht mal eigene Subklasse) ohne Modifikator = package = erlaubt Zugriff von anderen Klassen des gleichen Pakets aus protected: erlaubt Zugriff von anderen Klassen desselben Pakets aus & von abgeleiteten Klassen (auch in anderen Paketen) aus (-> nur für geerbte Variablen und Methoden)
- Generalisierung (Abstraktion) Generalisierung und Hierarchiebildung durch Erkennen von "ist-ein" Beziehungen Objekte mit gemeinsamen eigenschaften werden zu einer allgemeinen Kategorie, der Superklasse, zusammengefasst
- Spezialisierung der Generalisierung entgegengesetzter Schritt (von oben nach unten)
- Aufzählungs -Typen selbst definierter Datentyp umfasst nur ganz bestimmte (endliche) Menge von Werten Schlüsselwort enum <<Modifizierer>> enum <<Aufzählungsname>> { <<Konstantenliste>>; } enum-Objekt besitzt Methoden: toString (liefert Namen) equals (liefert true/false-Wert) ordinal (liefert die Ordinalzahl)
- Aufzählungs-Typen 2 enum-Konstanten können in switch-Anweisungen verwendet werden Schlüsselwort this (switch(this)) zeigt aktuelle Ausprägung Objekte sind über Ordinalzahl identifizierbar toString - enum-Konstanten als Zeichenkette equals(Object o) - Vergleich der enum-Konstanten ordinal() - Ordinalzahl der enum-Konstanten values() - liefert Liste aller enum-Kostanten
- Methoden-Deklaration public static <<Rückgabetyp>> <<Methodenname>> (<<Parameterliste>>){ //Code }
- Rückgabetyp Typ des Ergebnisses, das die Methode zurückliefern soll (int, char, double, etc.) soll sie kein Wert zurückliefern, schreiben wir void
- Parameterliste Kommaliste von Variablendeklarationen (formale Parameter) fungieren als Platzhalten für Werte, die an Methode übergeben werden sollen zu jeden Parameter muss eine Typbezeichnung angegeben werden
- return - Befehl Ergebnisrückgabe an die aufrufende Umgebung Ausführung der Methode wird beendet, Inhalt der Variable zurückgegeben Variable muss vom gleichen Typ wie Rückgabetyp sein (oder implizit umwandelbar)
- Sichtbarkeit & Verdecken von Variablen innerhalb von Methoden verdecken: lokale Variablen & formale Variablen die Klassen-/Instanzvariablen gleichen Namens -> während der Ausführung der Methoden nicht sichtbar und nicht zugreifbar deshalb: public Klassenname (int a, double b){ this.a = a this.b = b
- Runtime Exception leitet sich aus Klasse Exception ab muss nicht explizit behandelt werden gilt für sämtliche Subklassen von Runtime Exception
- throws-Klausel im Methodenkopf weißt darauf hin, dass Exception weitergeworfen wird eine Ebene nach oben main-Methode = höchste Ebene
- Konstruktoren zur vereinfachten Erzeugung und Initialisierung von Objekten einer Klasse keine Methode im eigentlichen Sinn, da nicht explizit aufgerufen kein Rückgabetyp Konstruktor heißt immer wie die Klasse public <<Klassenname>> (<<Parameterliste>>){ //Code }
- Standard-Konstruktor wird nur bei fehlendem expliziten Konstruktor automatisch vom Compiler ergänzt, ansonsten nicht leere Parameterliste ...(); besitzt keine Argumente, tut nichts
-
- Instanzvariablen Komponenten/Attribute einer Klasse werden mit jedem neuen Objekt neu erzeugt Aufruf: <<Objektname>>.<<Variablenname>> Bsp.: adr.wohnort = "Ludwigshafen" dem Objekt adr wird ein Wohnung zugewiesen System.out.println(adr.wohnort); Wohnort auslesen & ausgeben
- Objekt (Instanz) Erzeugung: <<Instanzname>> = new <<Klassenname>>(); Bsp.: Adresse adr; adr = new Adresse();
- Felder Initialisierung: <<Variablenname>>[<<Index>>] = <<Wert>> ; z.B. feld1 [3] = 7; Alternative: Initialisierung schon bei Deklaration z.B. int[ ] feld1 = {1,2,3,4,5}; Regelmäßigkeit der Startwerte nutzen z.B. for(int i = 0; i<5; i++) feld2 [i] = i+1;
- Überladen von Methoden man kann mehrere Methoden mit dem gleichen Namen definieren - sofern sie sich in ihrer Parameterliste unterscheiden anhand der Anzahl der Parameter des Typs der Parameter der Position der Parameter es wird nicht nach Rückgabetyp und nicht nach Namen der Parameter unterschieden Bsp.: public static int max (int x){ ... } public static int max (int x, int y, int z){...} public static int max (double x, int y){...}
- Abstrakte Klassen bei Klassendeklaration mit Wort abstract gekennzeichnet können nicht instantiiert werden (keine Objekte bilden) können selbst von anderen Klassen erben Oberklassen sind eher allgemein gehalten, Unterklassen spezifizieren weiter Methodenrumpf ist leer Versuch, ein Objekt der abstrakten Klasse zu bilden führt zu Compilerfehler
- Vererbung Weiterreichen von Eigenschaften an Unterklassen Aussagen der Superklasse können auf Subklasse übertragen werden Subklasse erbt Eigenschaften ihrer Superklasse Eigenschaften können für mehrere Klassen zugleich modelliert werden, indem wir sie 1.Mal in der gemeinsamen Superklasse definieren
- Felder -Deklaration <<Komponententyp>>[ ]<<Variablenname>>; z.B. int[ ] feld1; Feldlänge und Inhalt sind noch unbekannt
- Felder -Erzeugung <<Variablenname>> = new <<Komponententyp>> [<<Feldlänge>>] z.B. feld1 = new int[5] Es wird entsprechend Speicherplatz angelegt und die entsprechenden Referenzen gesetzt
- Klassenmethoden Schlüsselwort static macht Methode zur Klassenmethode Zugriff auf: die Klassenvariablen der Klasse die Klassenmethoden der Klasse keinen Zugriff auf Instanzvariablen der Klasse
- Felder unbekannter Länge Feldlänge kann eine Variable sein, deren Wert laufzeitabhängig festgelegt ist, sich aber nach der Felderzeugung wieder ändern kann Bei der Felderzeugung wird die Länge in einem zusätzlichen Element vom Typ int abgespeichert <<Variablenname>>.length for (int i = 0; i<feld2.length; i++) feld2[i] = i +1;
- Polymorphismus Überschreiben von Methoden innerhalb der Klassenhierarchie Definieren 2er Methoden mit identischem Rückgabetyp u. identischer Argumentenliste in einer Sub- und einer Superklasse Wir überschreiben so in den Instanzen der Subklasse die allgemeinere Methode durch eine speziellere Fassung (zB Nahrung aufnehmen - fressen) Individuelles Verhalten von Objekten verschiedener Klassen auf dieselbe Anweisung
- toString-Methode aus Instanzvariablen eine textuelle Beschreibung generieren public String toString() { return name + "("+ nummer + ")" System.out.println(studi.toString());
- get- & set-Methoden public int getNummer() liest Inhalt der Nummer aus und gibt ihn als Ergebnis zurück public void setNummer (int n) Methode zum Setzen der Instanzvariablen
- Überladen von Konstruktoren Eigenschaften als einen Parameter übergeben Beispiel: public Student (int geburtsjahr) { this.geburtsjahr = 1990; } public Student (int geburtsjahr) { zaehler ++; this.geburtsjahr = geburtsjahr;
- Binärbaum mehrfachverkettete, nichtlineare Liste Elemente der Baum-Struktur heißen Knoten ohne Vorgänger: Wurzelknoten ohne Nachfolger: Blatt mit einem o. mehreren Nachfolgern: Kind-Knoten bzw. Eltern-Knoten Sortierte Ausgabe durch Traversieren: Preorder: W-L-R Postorder: L-R-W Inorder: L-W-R W = Wurzelknoten eines Teilbaumes L = Linker Teilbaum R = Rechter Teilbaum
- Selectionsort - sortieren durch Auswahl man sucht in einer (Teil-)Liste nach dem kleinsten Element und vertauscht es mit dem ersten Element der (Teil-)Liste Aufwand: O(n²) 1,6,4,3,9,8,2,9 1,2,4,3,9,8,6,9 1,2,3,4,9,8,6,9 ...
-
- Insertionsort - sortieren durch Einfügen Liste wird der Reihe nach durchgegangen und das gerade betrachtete Element bei Bedarf in die bereits bearbeitete Teilliste sortiert eingefügt Aufwand: O(n²) 6,9,4,3,9,8,2,1 4,6,9,3,9,8,2,1 3,4,6,9,9,8,2,1
- Quicksort - rekursives Aufteilen beliebiges Element x (Pivotelement) aus Liste L auswählen, in 2 Teillisten L1 und L2 aufteilen alle Elemente < x = L1 alle Elemente > x = L2 Elemente = x = L1 o. L2 Aufwand: O(n log n) im Durchschnitt
- Generische Datentypen Datentyp dessen Komponenten durch sog. Typparameter spezifizert werden Datentyp kann so in verschiedenen Ausprägungen eingesetzt werden Typsicherheit garantiert class <<Klassenname>> < <<Typvariablenliste>> > {
- Exceptions Ausnahmesituation (gestörte Übertragung im Netzwerk, Division durch 0) Instanzen der Klasse java.lang.Exception repräsentieren jeweils eine Ausnahmesituation get-Message -Methode liefert Fehlermeldung in Form eines Strings zurück excep.getMessage()
- Abfangen von Exceptions Ausführung des aktuellen Befehls wird abgebrochen Methode zur Fehlerbehebung wird ausgelöst - Werfen einer Exception (throw) (Erzeugen einer Exception) - Fangen einer Exception (catch) (Behandlung einer Exception) Schlüsselwort try Programm soll versuchen die Zeilen ganz normal auszuführen (Befehle in geschweiften Klammern zum Block zusammenfassen) Schlüsselwort catch zeigt das nachfolgenden Zeilen Ausnahmesituationen abfangen wollen catch (ArrayIndexOutOfBoundsException aioobe) { ... }
