/media/sda-magnetic/david/Dok-15-2023-11-27/fernuni-hagen/cs-i-ii/old-cs-2-03/java-new/java2.txt


Objektorientierte Programmierung
objektbasierte Sprachen 

Klasse
abstrakte Klasse
Klassifikation
Spezialisierung
Modularisierung
Subclassing
Überschreiben 
Kapselung
1. Klassenkonzept
2. Prototypkonzept
Instanz
Instanziieren 
Instanzvariable
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
Schnittstellenbildung
Strukturieren von Klassen 

Elementtyp
Objektzustand
Objeke: objects, Objekt
Klassentyp
Behälter, container 
Innere Klassen 
Statische Innere Klassen 
Nicht statische innere Klassen 

Werte: values
lokale Variable, objektlokale Variable 
Basisdatentypen: byte, short, int, long, float, double, char, boolean
Identität
Eigenschaft 
Verhalten 
aktueller Zustand 

Komponente 
Nachrichten
Methoden, Klassenmethoden
main-Methode 
Konstruktoren 
Default-Konstruktor 
Konstruktoraufruf 
Methodenaufruf
Attribut
Prozedur
Konstante
Variablen
Typkonstruktur
formale Parameter 
implizieter Parameter 
1. Methodendeklaration
2. Konstruktorendeklaration 

Objektreferenz
Zeiger
Array-Element 
this
this-Object 
self-Object
Schlüsselwort: static 
Schlüsselwort: private 

Vererbung
Spezialisierung
Klonen
Subtyping
Subtyp

Anweisungsblock
Zuweisung 
Ausdruck
Ausdruck.Methodenname (AktuelleParameterliste)
Typkonvertierung (cast)
Auswertung von Ausdrücken 
bedingte Anweisung 
Schleifenanweisung
for-each
break-Anweisung
return-Anweisung
normale und abrupte Terminierung von Ausdrücken 
try-Anweisung 
Ausnahmesituation 
throw-Anweisung
Ausnahmebehandlung + Nachrichtenversand

new
Überladen von Methodennamen und Konstruktoren 
Initilasieren und Überladen 
Intialisierung von Variablen und Attributne 
Initialisierungsblöcke
statische Initialisierungsblöcke
nicht statische  Initialsierungsblöcke

statisches Binden
dynamisches Binden
Bytecode
virtuelle Maschine
Übersetzungseinheiten 
package Paketname;
Strukturierung von Programmen: Pakete
Pakete 
Liste von import-Anweisungen
Liste von Typdeklarationen

Objekterzeugung 
Attributzugriff 

Klassenmethoden, beginnt mit Schlüsselwort static 
Klassenattribute, beginnt mit Schlüsselwort static
statische Fabrikmethoden, static factory methods 
Utility Class 
String: valueOf 
Subklassen-Instanzen 
Rekursive Klassendeklaration 
rekursiv 
Doppelt verkettete List 


public class Test {
    public static void main (String [] args) {
        //Anweisungsblock;
    }
}

System.out.println (Ausdruck);
System.out.print (Ausdruck);

String s = "Hallo Welt";
int i;
System.out.println (i + " Mal " + s);

i.toString();


try
    try-Block
catch (Ausnahme-Typ Bezeichner) catch-Block1
...
catch (Ausnahme-Typ Bezeichner) catch-Blockn
finally finally-Block


ArrayIndexOutOfBoundsException e
NumberFormatException e
ArithmeticExcpetion e
NullPointerException e


class Computer {
    String name;
    int MHz;
    
    Computer (String name; int MHz) {
        this.name = name;
        this.MHz = MHz;
    }
}


Modifikatorenliste class Klassenname {
    Liste von Attribut-, Konstruktor- und Methodendeklarationen
}

Modifikatorenliste Ergebnistyp Methodenname (Parameterliste) throws-Deklarationen

Modifikatorenliste Klassenname (Parameterliste) throws-Deklaration 

class LinListNode {
    String val;
    LinListNode next;
    LinListNode prev;
    
    LinListNode (... Konstruktor)
}

class LinList {
    LinListNode head;

}

public static final double PI = ...
public static double sin(double a)
public static double pow(double a)

static String valueOf (long l)
static String valueOf (double d)
static String valueOf (String s)