Objektorientierte Programmierung
Identität
Nachrichten
Methoden
Objektzustand
Attribut
Klasse
Klassifikation
abstrakte Klasse
Vererbung
Spezialisierung
Prozedur
statisches Binden
dynamisches Binden
Subtyping
Simula, Smalltalk
Objeke: objects
Werte: values
Basisdatentypen: byte, short, int, long, float, double, char, boolean
Konstante
Werte in Java
Objektreferenz
Zeiger
Typen in Java
Variablen
Elementtyp
Typkonstruktur
Array-Element
Zuweisung
Ausdruck
Typkonvertierung (cast)
Auswertung von Ausdrücken
Klassenmethoden
Bytecode
virtuelle Maschine
main-Methode
static
public class Test {
public static void main (String [] args) {
//Anweisungsblock;
}
}
System.out.println (Ausdruck);
System.out.print (Ausdruck);
Anweisungsblock
String s = "Hallo Welt";
int i;
System.out.println (i + " Mal " + s);
i.toString();
bedingte Anweisung
Schleifenanweisung
for-each
break-Anweisung
return-Anweisung
normale und abrupte Terminierung von Ausdrücken
try-Anweisung
Ausnahmesituation
try
try-Block
catch (Ausnahme-Typ Bezeichner) catch-Block1
...
catch (Ausnahme-Typ Bezeichner) catch-Blockn
finally finally-Block
ArrayIndexOutOfBoundsException e
NumberFormatException e
ArithmeticExcpetion e
throw-Anweisung
Ausnahmebehandlung + Nachrichtenversand
Objekte
Klassen
Methoden
Konstruktoren
class Computer {
String name;
int MHz;
Computer (String name; int MHz) {
this.name = name;
this.MHz = MHz;
}
}
this
this-Object
self-Object
formale Parameter
Spezialisierung
Vererbung
Subclassing
Überschreiben
Subtyp
Objekte
Klassen
Kapselung
objektbasierte Sprachen
1. Klassenkonzept
2. Prototypkonzept
Klonen
Eigenschaft
Verhalten
aktueller Zustand
Klasse
lokale Variable
Aliasing
Klassendeklarationen
Attribute
Objekte
// Code
Modifikatorenliste class Klassenname {
Liste von Attribut-, Konstruktor- und Methodendeklarationen
}
// Code
Klassentyp
Komponente
objektlokale Variable
Instanz
Instanziieren
Instanzvariable
1. Methodendeklaration
2. Konstruktorendeklaration
Methodendeklaration
// Code
Modifikatorenliste Ergebnistyp Methodenname (Parameterliste) throws-Deklarationen
//Code
implizieter Parameter
formaler Parameter
// Code
Modifikatorenliste Klassenname (Parameterliste) throws-Deklaration
// Code
Default-Konstruktor
new
Objekterzeugung
Attributzugriff
NullPointerException
Konstruktoraufruf
Methodenaufruf
Ausdruck.Methodenname (AktuelleParameterliste)
Schlüsselwort: static
Initilasieren und Überladen
Intialisierung von Variablen und Attributne
Initialisierungsblöcke
statische Initialisierungsblöcke
nicht statische Initialsierungsblöcke
Überladen von Methodennamen und Konstruktoren
Klassenmethoden, beginnt mit Schlüsselwort static
Klassenattribute, beginnt mit Schlüsselwort static
statische Fabrikmethoden, static factory methods
Utility Class
public static final double PI = ...
public static double sin(double a)
public static double pow(double a)
String: valueOf
static String valueOf (long l)
static String valueOf (double d)
static String valueOf (String s)
Subklassen-Instanzen
Modularisierung
Rekursive Klassendeklaration
rekursiv
Doppelt verkettete List
Behälter, container
class LinListNode {
String val;
LinListNode next;
LinListNode prev;
LinListNode (... Konstruktor)
}
class LinList {
LinListNode head;
}
Kapselung und Strukturierung von Klassen
Klasseninvarianten
Geheimnisprinzip
Information Hiding
Kapselung: Es ist der äußeren Klasse nicht erlaubt auf alle Methoden der inneren Klassen zu zu greifen
Schlüsselwort: private
Schnittstellenbildung
Strukturieren von Klassen
Innere Klassen
Statische Innere Klassen
Nicht statische innere Klassen
Strukturierung von Programmen: Pakete
Pakete
Übersetzungseinheiten
package Paketname;
Liste von import-Anweisungen
Liste von Typdeklarationen
lokale Variable
Aliasing