• Keine Ergebnisse gefunden

Zusammenfassung des Kapitel 8Küchlin, Weber, Einführung in die Informatik, 2.Auflage

N/A
N/A
Protected

Academic year: 2021

Aktie "Zusammenfassung des Kapitel 8Küchlin, Weber, Einführung in die Informatik, 2.Auflage"

Copied!
10
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Informatik I – Kapitel 8

„ Höhere objektorientierte Konzepte“

Zusammenfassung des Kapitel 8

Küchlin, Weber, Einführung in die Informatik, 2.Auflage

25.1.2004

(2)

m a r c – o l i v e r p a h l

Vererbung

Id

private static int counter private int myId

public Id()

public int getId()

Label

private String name

public String getName()

public class Id {

private static int counter = 1;

private int myId;

public Id(){ myId = counter++; } public int getId(){ return myId; } }

public class Label extends Id { private String name;

public Label() {

// super(); // -> Id(); implizit!

name = "unknown";

}

public Label(String val) { name = val;

}

public String getName(){

return name;

}

(3)

m a r c – o l i v e r p a h l

Vererbung

Id

private static int counter private int myId

public Id()

public int getId()

Label

private String name

public String getName()

public class Main {

public static void main(String[] args) { Label myLabel = new Label("as2004");

System.out.println(

“Das Gerät“ + myLabel.getName() + “hat die Id“+ myLabel.getId());

}

Die Methoden der Klasse Id, von der geerbt

wird, sind in Label auch automatisch vorhan-

den!

(4)

m a r c – o l i v e r p a h l

Vererbung/ Sichtbarkeit

Id

private static int counter private int myId

public Id()

public int getId()

Label

private String name

public String getName()

public class Id { ...

private int myId;

...

}

public class Label extends Id { ...

public Label(String val) {

name = val;

super.myId = 0; //hier:  myId = 0;

} ...

geht NICHT, da das Feld private ist!

(5)

m a r c – o l i v e r p a h l

Vererbung/ Sichtbarkeit

Id

private static int counter protected int myId

public Id()

public int getId()

Label

private String name

public String getName()

public class Id { ...

private int myId;

...

}

public class Label extends Id { ...

public Label(String val) { super();

name = val;

super.myId = 0; //hier:  myId = 0;

} ...

geht, da das Feld protected ist!

(6)

m a r c – o l i v e r p a h l

Vererbung/ Sichtbarkeit

Id

private static int counter protected int myId

public Id()

public int getId()

Label

private String name private int myId

public String getName()

public class Id { ...

private int myId;

...

}

public class Label extends Id { ...

public Label(String val) { super();

name = val;

super.myId = 0; // NICHT = myId = 0;

myId = 23;

} ...

(7)

m a r c – o l i v e r p a h l

virtuelle Funktionen/ Überschreiben

public class Parent { public void method(){

System.out.println("Methode des Parent.");

} }

public class Child extends Parent { public void method(){

System.out.println("Methode des Child.");

} }

public class Main {

public static void main(String[] args) { Parent eins = new Parent();

Parent zwei = new Child();

eins.method();

zwei.method();

}

}

(8)

m a r c – o l i v e r p a h l

virtuelle Funktionen/ Überschreiben/ final

public class Parent {

public final void method(){

System.out.println("Methode des Parent.");

} }

public class Child extends Parent { public void method(){

System.out.println("Methode des Child.");

} }

public class Main {

public static void main(String[] args) { Parent eins = new Parent();

Parent zwei = new Child();

eins.method();

zwei.method();

}

}

(9)

m a r c – o l i v e r p a h l

ADT/ Interfaces/ Selektoren

Kundenklasse

Schnittstelle/ Interface

interne Repräsentation/ Implementierung

public class Main {

public static void main(String[] args){

ZahlenSpeicher z1 = new ZahlenSpeicher1();

ZahlenSpeicher z2 = new ZahlenSpeicher2();

z1.setValue(7); z2.setValue(8);

System.out.println("z1+z2=

"

+(z1.getValue()+z2.getValue()));

}

public interface ZahlenSpeicher { public int getValue();

public void setValue(int val);}

public class ZahlenSpeicher1 implements ZahlenSpeicher { private int theValue = 0;

public int getValue(){ return theValue; }

public void setValue(int val){ theValue = val; } }

public class ZahlenSpeicher2 implements ZahlenSpeicher { private String theValue;

public int getValue(){ return Integer.parseInt(theValue); }

public void setValue(int val){ theValue = Integer.toString(val); }

(10)

m a r c – o l i v e r p a h l

generisches Programmieren

• Stichwort: Muster

– in C++

– in Java

template<class T> class Node{

private:

T data;

Node* next;

public:

T getData();

...

}

public static void inc(ZahlenSpeicher z){

z.setValue(z.getValue()+1);

}

Funktioniert „generisch“ für alle beliebigen Implementierungen

des Interface ZahlenSpeicher

Referenzen

ÄHNLICHE DOKUMENTE

[r]

Wir haben noch eine andere Formulierung als lineares Gleichungssytem. AU

Achtung: im Allgemein sind schwache Lösungen

[r]

Wir haben noch eine symmetrische Variante gesehen (Vorteil: bessere Langzeit

[r]

[r]

[r]