Objektorientierte Programmierung – Glossar
Quelle
Wortgleiche Übernahme aus: Hessisches Ministerium für Kultus, Bildung und Chancen – Landesabitur Informatik, Glossar für das Fach Informatik, Stand: 20.05.2021 (la-informatik-glossar.pdf). Ausgewählt sind alle Einträge, die zur Objektorientierten Programmierung/Modellierung gehören. Reihenfolge und Wortlaut wie im Original; Diagramme sind nachgebaut, im Zweifelsfall schauen Sie im Glossar-PDF nach.
Vorbemerkung des Glossars
In der Wissenschaft Informatik werden die Fachbegriffe nicht immer einheitlich verwendet. Zudem gibt es Unterschiede in den Darstellungsformen von Diagrammen. Das folgende Glossar soll diesem Umstand abhelfen und die für die Schulinformatik und das Landesabitur relevanten Fachbegriffe und Darstellungsformen festlegen.
abstrakte Klasse/Methode
Mit einer abstrakten Klasse kann in einer Klassenhierarchie eine Oberklasse modelliert werden, welche abstrakte Methoden enthält, die erst in abgeleiteten Unterklassen implementiert werden. Die abstrakte Oberklasse GeometrischeFigur kann beispielsweise die abstrakte Methode berechneFläche() definieren, die jeweils in den beiden Unterklassen Rechteck und Kreis implementiert wird.
Aggregation – die besteht aus-Beziehung
Die Aggregation ist eine Sonderform der Assoziation zwischen zwei Klassen. Sie liegt dann vor, wenn zwischen den Objekten der beteiligten Klassen eine Beziehung existiert, die sich als „besteht aus" oder „ist Teil von" beschreiben lässt. In der UML-Darstellung wird die Aggregatklasse mit einer Raute versehen. Die Raute symbolisiert das Behälterobjekt, in dem die Teile gesammelt werden.
classDiagram
direction LR
class Ganzes
class Teil
Ganzes o-- Teil : besteht aus
Assoziation – die kennt-Beziehung
Eine Assoziation beschreibt eine Beziehung zwischen zwei Klassen. Mit Hilfe einer gerichteten Assoziation kann dargestellt werden, dass diese Beziehung nur in einer Richtung existiert. Grafisch wird die ungerichtete Assoziation als Strecke und die gerichtete Assoziation als Pfeil dargestellt. Im Unterschied zur bidirektionalen Datenmodellierung im ER-Modell wird bei der objektorientierten Modellierung in der Regel mit gerichteten Assoziationen gearbeitet.
classDiagram
direction LR
class Abteilung
class Angestellter
class Schüler
class Auto
Abteilung --> Angestellter : gehört zu
Schüler --> Auto : fährt
Eine Assoziation heißt rekursiv, wenn die beiden beteiligten Klassen gleich sind.
Beispiel: Eine lineare Liste besteht aus Elementen (Aggregation), wobei jedes Element mit Ausnahme des letzten auf das nachfolgende Element verweist (rekursive Assoziation).
classDiagram
direction LR
class Liste
class Element
Liste o-- Element
Element --> Element
Datenkapselung
siehe Geheimnisprinzip
Fachkonzept
Das Fachkonzept ist eine zusammenfassende Darstellung eines Anwendungssystems aus fachlicher Sicht. Es besteht aus dem im Rahmen der objektorientierten Analyse entstandenen Klassendiagramm, mit Berücksichtigung aller fachlichen Aspekte des zu entwickelnden IT-Systems, ohne grafische Benutzungsoberfläche (GUI) und Datenhaltung in Datenbanken.
Hinweis: Was heißt „aus fachlicher Sicht"? – erklärt an Beispielen
Das Fachkonzept beantwortet nur eine Frage: Worum geht es in der Sache? Nicht: Wie sieht es aus, wo wird es gespeichert. Es ist genau das Klassendiagramm, das am Ende der objektorientierten Analyse steht – die Modellierung der Miniwelt, nicht der Software drumherum.
Beispiel Tierheim (vgl. OOP – Beziehungen zwischen Klassen)
| gehört ins Fachkonzept | gehört nicht ins Fachkonzept |
|---|---|
Klasse Hund mit name, rasse, hunger | der Button „Hund aufnehmen" |
Methode gassi_gehen(minuten) | das Eingabefeld für die Minutenzahl |
Klasse Tierheim, Klasse Zwinger | die Tabelle hunde in SQLite |
Beziehung Tierheim ◆— Zwinger (Komposition) | der Fremdschlüssel ↑TierheimNr |
| Regel „ein Zwinger fasst höchstens 2 Hunde" | die Fehlermeldung, die das anzeigt |
Die linke Spalte bleibt gleich, egal ob du das Programm als Konsolenanwendung, als Web-App oder mit Tkinter baust und ob du in einer Datei oder in einer Datenbank speicherst. Genau das ist der Sinn: Das Fachkonzept ist der Teil, der die Technik überlebt.
Beispiel Bank (vgl. den Eintrag Multiplizität)
Kunde und Konto mit der Assoziation besitzt (1 zu 0..3), Methoden einzahlen(betrag), abheben(betrag), und die fachliche Regel „nicht unter den Dispo". Das Fachkonzept sagt nicht, dass die Kontonummer in einem Textfeld erscheint und in Tabelle konten liegt.
Der Test: Kann man es einer Sachbearbeiterin erklären, die nichts von Programmierung versteht? → Fachkonzept. Braucht man dafür Wörter wie Fenster, Klick, Tabelle, SELECT? → nicht Fachkonzept.
Einordnung in den Entwurfsprozess
flowchart LR
A["Objektorientierte Analyse<br/>(Was?)"] --> B["<b>Fachkonzept</b><br/>Klassendiagramm der Miniwelt"]
B --> C["Objektorientierter Entwurf<br/>(Wie?)"]
C --> D["Softwarearchitektur<br/>+ GUI + Datenhaltung"]
Erst der objektorientierte Entwurf legt eine Softwarearchitektur um das Fachkonzept herum – üblich ist die Drei-Schichten-Trennung Oberfläche – Fachkonzept – Datenhaltung. Das Fachkonzept ist die mittlere Schicht und darf die beiden anderen nicht kennen; umgekehrt greifen beide auf das Fachkonzept zu. Das ist dasselbe Prinzip wie beim Geheimnisprinzip, nur eine Ebene höher: Zuständigkeiten trennen, Abhängigkeiten in nur eine Richtung erlauben.
Praktisch fürs Abitur: Wenn eine Aufgabe „Erstellen Sie das Fachkonzept" verlangt, ist ein Klassendiagramm gefragt – Klassen mit Attributen, Methoden, Sichtbarkeiten und Beziehungen mit Multiplizitäten (siehe OOP – UML-Klassendiagramm). Keine Bildschirmskizze, kein ER-Diagramm, kein Code.
Zwei Bedeutungen von „Fachkonzept" – nicht verwechseln
- Fachkonzept (Softwaretechnik) – dieser Glossareintrag: die fachliche Schicht eines Anwendungssystems.
- Fachkonzept (Didaktik) – Ich benutze das manchmal, wenn ich ein Konzept im Fach Informatik aus Lehrersicht einführe. Das sind Kästen, die ich besonders hervorhebe, z. B. Fachkonzept – Objekt in OOP – Objekte und Klassen, Fachkonzept – Assoziation in OOP – Beziehungen zwischen Klassen, Fachkonzept – Miniwelt und Datenmodell in OOP – Modellierung einer Miniwelt oder die Sammlung Fachkonzepte im WU-Kurs.
Im Landesabitur-Glossar ist immer Bedeutung 1 gemeint.
Geheimnisprinzip
Das Geheimnisprinzip besagt, dass die Implementierungsdetails einer Klasse verborgen werden sollen. Es wird als Datenkapselung umgesetzt, indem Attribute einer Klasse die Sichtbarkeit private oder protected erhalten und somit von außen nicht direkt zugreifbar sind. Auch der Zugriff auf Methoden kann so verhindert werden. Die Attributwerte können von außen über Methoden mit der Sichtbarkeit public, also über die öffentliche Schnittstelle, oder bei abgeleiteten Klassen mit Methoden der Sichtbarkeit protected abgefragt bzw. verändert werden.
Generalisierung → siehe auch Vererbung
Die Generalisierung beschreibt eine gerichtete Beziehung zwischen einer generelleren und einer oder mehreren spezielleren Klassen. Die generellere Klasse stellt eine Verallgemeinerung der spezielleren Klassen dar. Eine speziellere Klasse erbt alle Attribute der generelleren Klasse, enthält aber weitere Attribute und Methoden. Eine Generalisierung muss stets so modelliert werden, dass jedes Objekt einer spezielleren Klasse im Wortsinn auch ein Objekt der generelleren Klasse ist. Die Generalisierung ermöglicht den Aufbau von Klassenhierarchien.
Beispiel: Die Klasse Kraftfahrzeug ist eine Generalisierung der Klassen PKW und LKW, denn jeder PKW ist ein Kraftfahrzeug und jeder LKW ist ein Kraftfahrzeug.
get/set-Methode
Um ein Attribut A mit der Sichtbarkeit private von außerhalb der Klasse abfragen zu können, stellt man eine get-Methode getA zur Verfügung, die den Wert des Attributs liefert.
Um ein Attribut A mit der Sichtbarkeit private von außerhalb der Klasse ändern zu können, stellt man eine set-Methode setA zur Verfügung, die den Wert des Attributs auf den neuen Wert setzt.
Klasse
Eine Klasse ist die Beschreibung der Attribute (Eigenschaften) und Methoden von Objekten. Grafisch werden Klassen durch Rechtecke mit Namen, Attributen und Methoden dargestellt. Das Wort „Objektklasse" ist eine irreführende Vermischung von Objekt und Klasse.
Klassendiagramm
Ein Klassendiagramm stellt die Klassen und Beziehungen (Assoziation, Aggregation, Generalisierung/Vererbung) zwischen Klassen grafisch dar.
Komposition
Die Komposition ist eine Sonderform der Aggregation. Sie drückt aus, dass die Teile von der Existenz des Ganzen abhängig sind. Da meist keine klare Unterscheidung zwischen Komposition und Aggregation möglich ist, wird auf die Komposition verzichtet.
Multiplizität
Die Darstellung von Assoziationen kann man durch Angabe von Multiplizitäten verfeinern. Dabei wird in der Minimum..Maximum-Schreibweise angegeben, wie viele Objekte der einen Klasse mit wie vielen Objekten der anderen Klasse in Beziehung stehen können.
classDiagram
direction LR
class Kunde
class Konto
Kunde "1" -- "0..3" Konto : besitzt
Im Bild ist die Assoziation besitzt zwischen den Klassen Kunde und Konto modelliert. Die Multiplizität 0..3 gibt an, dass ein Kunde 0 bis 3 Konten besitzen kann; die Multiplizität 1 gibt an, dass ein Konto genau einem Kunden gehört.
Objekt
Ein Objekt ist ein Exemplar einer Klasse.
Objektorientierte Analyse
Phase des Entwurfsprozesses, in der das Fachkonzept entwickelt wird.
Objektorientierter Entwurf
Phase des Entwurfsprozesses, in der für das Fachkonzept eine Softwarearchitektur entwickelt wird, die die Benutzungsoberfläche und Datenhaltung mit einbezieht.
Sichtbarkeit
Über die Sichtbarkeit legt man fest, wer auf Klassen, Attribute und Methoden Zugriff hat. Abiturrelevant sind folgende Stufen der Sichtbarkeit: private (-), protected (#) und public (+). Mit Hilfe der Sichtbarkeit realisiert man das Geheimnisprinzip.
Spezialisierung
siehe Generalisierung, Vererbung
UML
Die Unified Modeling Language (UML, dt.: vereinheitlichte Modellierungssprache), ist eine standardisierte Beschreibungssprache, um Strukturen und Abläufe in objektorientierten Softwaresystemen darzustellen. Für den Informatikunterricht sind besonders das Klassendiagramm und das Zustandsdiagramm (theoretische Informatik) von Bedeutung.
Vererbung – die ist-Beziehung
In der objektorientierten Modellierung kann eine Klasse von einer anderen Klasse erben. Die erbende Unterklasse wird von der Oberklasse abgeleitet. Sie hat Zugriff auf die geerbten Attribute und Methoden der Oberklasse, hat aber weitere Attribute und Methoden.
Die Vererbung wird mit einem geschlossenen Dreieckspfeil von der abgeleiteten Klasse zur Oberklasse dargestellt. Jedes Objekt der abgeleiteten Klasse muss im Wortsinn auch ein Objekt der Oberklasse (ist-Beziehung) sein.
Die Umkehrung der Generalisierung ist die Spezialisierung, welche durch Vererbung realisiert wird.
Beispiel: Ein Motorrad ist ein spezielles Kraftfahrzeug.
classDiagram
direction TB
class Oberklasse {
Attribute
Methoden
}
class Unterklasse {
weitere Attribute
weitere Methoden
}
Oberklasse <|-- Unterklasse
Leserichtung des Diagramms (im Original als Randbeschriftung)
Von Unterklasse nach Oberklasse (Pfeilrichtung) = Generalisierung. Von Oberklasse nach Unterklasse = Spezialisierung.
Siehe auch
- Objektorientierte Programmierung
- OOP – Objekte und Klassen
- OOP – Beziehungen zwischen Klassen
- OOP – Geheimnisprinzip und Datenkapselung
- OOP – Konstruktor und Objekterzeugung
- OOP mit Python