Generalisierung/Spezialisierung Subtypisierung/Vererbung Bringt Struktur in die Klassen-Diagramme Erhöht die Wiederverwendbarkeit Erlaubt die schrittweise Verfeinerung
Motivation: Problem der Wiederverwendung
Motivation; cont‘d Keine Wiederverwendung Angestellte können nur Personen heiraten???
Subtypisierung: Overtyp/Untertyp
Generalisierung/Spezialisierung
extends
Substituierbarkeit: Typ-Sicherheit immer noch gewährleistet
Vererbung: am Beispiel erläutert (eine Subtyp-Instanz „kann mehr“)
Generalisierung-Hierarchie
Wurzeltyp: Object
Verfeinerung / refinement
Verfeinerung / refinement nochmals
Dynamisches Binden
Unterschiedliche Ops werden dyn. gebunden
Substituierbarkeit: Eine Untertyp-Instanz kann eine Obertyp-Instanz substituieren – nicht umgekehrt
Beispiele für die Typisierungsregeln
Weiteres Beispiel (7)
Abstrakte/Virtuelle Klassen & Schnittstellen/Interfaces Deklaration von Methoden ohne deren Implementierung schon durchzuführen Interface: nur Deklarationen Eine Klasse kann mehrere Schnittstellen implementieren Abstrakte Klasse: Einige Methoden können schon implementiert werden Andere nur deklariert Virtuelle Klasse kann man nicht instanziieren
Abstrakte Klasse: GeoPrimitive
Erweiterung der abstrakten Klasse
Nutzung der abstrakten Klasse
Hierarchie mit abstrakten Klassen Selbst abstrakt
Schnittstellen / Interfaces
Typ-Anfragen und Type-Casting