EPROG Tutorium #5
Philipp Effenberger

Verschiedene Collections




Vererbung



List
Set
Stack
Casten
Abstract Class
Interface
03. Mai 2005
[email protected]
1
Collections

Nur Objekte koennen an Collection angefügt
werden

int, char, double, boolean etc... sind keine Objekte

Wrapperobjekte: Integer, Character, Double etc...
ArrayList<Integer> tmp = new ArrayList<Integer>();
tmp.add( new Integer(4) );
tmp.add( 4 ); // Funktioniert auch implizit
int i = tmp.get( 0 ); // und genauso retour
int j = tmp.get( 1 ).intValue();
03. Mai 2005
[email protected]
2
Collections – List


Wie flexible Arrays
Auch Interface; Implementierungen sind




ArrayLists: benutzt Arrays
LinkedList: Verkettete Listen (siehe AlgoDat)
Vector: eher veraltet.
Methoden: add, remove, contains, ...

contains funktioniert nur dann, wenn Methode equals richtig
implementiert
//class Matrix
public boolean equals(Object o) {
Matrix t = (Matrix) o; // casten
// weitere Anweisungen...
}
03. Mai 2005
[email protected]
3
Collections – Set


Menge: Unterschied zu Liste: Jedes Element
unique
Beste Implementierung : HashSet



Methode int hashCode() und equals muss
implementiert sein
idR reicht int hashCode() { return 0; }
Beispiel: Programm zum Zaehlen aller
unterschiedlicher Woerter in einem Text
03. Mai 2005
[email protected]
4
Collections – Stack

In Java eigentlich eine Liste (implementiert
List-Interface)

Stapel: 2 Operationen



Beliebte Datenstruktur bei Rechnern



push = oben etwas ablegen
pop = oben etwas wegnehmen
keine Klammern nötig
3 1 2 + - 4 * entspricht 4 * ((2 + 1) - 3)
Einfach am Computer zu realisieren
03. Mai 2005
[email protected]
5
Vererbung

legt Beziehungen zwischen Klassen fest

Subklasse extends Superklasse

Subklasse “erbt” alle Methoden und Eigenschaften

Subklasse kann Methoden der Superklasse Überschreiben

mit final kann man Ableitung verhindert werden

public final class XYZ {…}

keine Mehrfachvererbung in Java

Vererbung sollte eine logische Erweiterung der Superklasse darstellen



Rectangle extens Figure // Rechteck is_a Figur
Square extends Rectangle // Quadrat is_a Rechteck
Neue Schlüsselworte: super (=this nur auf Oberklasse bezogen),
protected (wie private aber auch in Unterklassen sichtbar)
03. Mai 2005
[email protected]
6
Vererbung – Polymorphie (Auszug)

Überschreiben (Spezialisierung)
Methode aus Superklasse geerbt
 In Subklasse selbe Methode implementiert
super.Methode(…)//Methodenaufruf Superclass,statt


eigener
Überladen (Variation)

In gleicher Klasse Methode mehrfach implementiert:



private int wahrFalsch() {};
private boolean wahrFalsch( int a ) {};
Unterscheiden sich durch Rückgabewert,
Parameterwert(e). Wird vom Compiler erkannt, welche
Methode gerade nötig ist.
03. Mai 2005
[email protected]
7
Casten

Untertyp ist auch vollwertiger Obertyp


Relation in Vererbungshierachie einsehbar
Bsp. vom letzten Mal:



Fahrrad x = new Fahrrad();
Nicht umgekehrt // ClassCastException


Fahrrad is_a Transportmittel
Transportmittel x = new Fahrrad();
Nicht anders // Exception, spätestens im Prog

Fahrrad x = new Dreieck();
Fahrrad x = new Fahrrad();
Transportmittel y = (Transportmittel) x;
03. Mai 2005
[email protected]
8
Abstrakte Klassen

nur teilweise Implementation der Klasse

abstract class XYZ {…}


Methoden ohne Körper! // ==nur
Schnittstellendeklaration
Konstruktor nicht aufrufbar
03. Mai 2005
[email protected]
9
Interfaces

Interface = Spezifikation einer Klasse = Schnittstellen der
Klasse = öffentliche Methoden eines Objekts

Implementierung unbekannt, weil unwichtig (für Objekt)

Ähnlich wie vollkommen abstrakte Klassen

interface statt class

Eine Klassen kann auch mehrere Interfaces
implementieren (→pseudo Mehrfachvererbung möglich)

Ermöglichen es, Schnittstelle und Implementation sauber
zu trennen

Beispiel: class Foo implements Bar, GoGo
03. Mai 2005
[email protected]
10

EPROG Tutorium #5_ss05