Anmerkung: In dieser Jahrgangsstufe geht es vor allem um die Programmierung mit Java. Zum Erlernen eignet sich unter anderem das Programm BlueJ.
Vererbung und Polymorphie
Eine Fluglinie könnte ihre Mitarbeiter in Piloten, Flugbegleiter und Bodenpersonal aufteilen. Alle Attribute und Methoden, die alle Mitarbeiter gemeinsam haben, wie z.B. persnr, name, kuendigen() werden in der Oberklasse PERSONAL festgelegt.
Attribute und Methoden, die nur einen Teil der Mitarbeiter betreffen, werden dagegen in der betreffenden Unterklasse aufgenommen (z.B. das Attribut abteilung in BODENPERSONAL). Die Unterklasse erbt sämtliche Attribute und Methoden der Oberklasse. In Java wird der Bezug zur Oberklasse mittels des Schlüsselwortes extends hergestellt, also z.B. class BODENPERSONAL extends PERSONAL. Das zugehörige Klassendiagramm könnte also folgendermaßen aussehen:
Im Beispiel werden die Methoden befoerdern(), gehaltBerechnen() von allen Objekten der drei Unterklassen verstanden, da sie von der gemeinsamen Oberklasse PERSONAL geerbt wurden, allerdings werden diese Methoden z.T. überschrieben. Erst zur Laufzeit dieses Programms entscheidet sich je nach Zugehörigkeit zu einer der drei Unterklassen, welche der verschiedenen Ausprägungen ausgeführt wird.
Da hierbei der gleiche Methodenaufruf bei Objekten verschiedener Klassen eine unterschiedliche Ausführung bewirkt, spricht man von Polymorphie (griech. „Vielgestaltigkeit“). In dem Beispiel bekommt ein Pilot zum Grundgehalt eine Zulage abhängig vom Rang, während das Bodenpersonal für geleistete Überstunden zusätzlich entlohnt werden. Flugbegleiter haben keine Zusätze. Ähnliches gilt für die Methode befoerdern().
Sollten von einer Oberklasse keine Objekte erzeugt werden, z.B. weil jeder Mitarbeiter einer der drei Unterklassen angehört, verwendet man eine abstrakte Oberklasse PERSONAL, die im Diagramm durch {abstract} kenntlich gemacht wird. In Java erhalten abstrakte Klassen das Schlüsselwort abstract. In einer solchen Klasse muss eine Methode wie befoerdern() nicht ausformuliert werden, sondern kann ebenfalls als abstrakt deklariert werden. Das ist quasi nur eine Ankündigung, dass diese Methode existiert und in allen Unterklassen ausformuliert wird.