Objektorientierte Programmierung
Santa Maria, Schiff von Kolumbus 1492, Wikimedia Commons, vermutlich von Edward H. Hart, public domain
Mayflower, 1620, Wikimedia Commons, CC0 1.0 public domain
RMS Titanic 1912, Francis Godolphin Osbourne Stuart gest. 1923, Wikimedia Commons, public domain
Grundpfeiler der objektorientierten Programmierung (OOP) verstehen und anwenden können:
Zugriffsmodifikatoren bestimmen, wo auf Klassen, Methoden und Variablen zugegriffen werden kann.
| Zugriffs- modifikator |
Symbol |
|---|---|
public |
+ |
private |
- |
protected |
# |
package |
~ |
| Bedeutung |
|---|
| Zugriff überall erlaubt, sowohl innerhalb als auch außerhalb der Klasse |
| Zugriff nur innerhalb der Klasse erlaubt, in der sie definiert sind |
| Zugriff nur innerhalb der Klasse, des Pakets und von abgeleiteten Klassen erlaubt |
| Zugriff ist innerhalb der Klasse und in allen Klassen desselben Pakets erlaubt |
| Zugriffs- modifikator |
Symbol | Bedeutung | Verwendung |
|---|---|---|---|
private |
- | Zugriff nur innerhalb der Klasse erlaubt, in der sie definiert sind | Attribute |
public |
+ | Zugriff überall erlaubt, sowohl innerhalb als auch außerhalb der Klasse | Operation / Methode |
+------------------------------+
| Konto |
|------------------------------|
| - kontostand: double |
|------------------------------|
| + getKontostand(): double |
| + einzahlen(betrag: double) |
| + abheben(betrag: double) |
+------------------------------+
private) zugreifen und ihn verändernpublic-Methoden einzahlen() und abheben(), die eine Validierung durchführen+----------------------------+
| Fahrzeug |
|----------------------------|
| # marke: String |
| # baujahr: int |
|----------------------------|
| + beschreibung(): String |
+----------------------------+
^ ^
| |
erbt von erbt von
| |
+------------------+ +--------------------+
| PKW | | LKW |
|------------------| |--------------------|
| - anzahlSitze | | - ladekapazitaet |
|------------------| |--------------------|
| + beschreibung() | | + beschreibung() |
+------------------+ +--------------------+
PKW und LKW erben von Fahrzeugprotected-Attribute marke und baujahranzahlSitze bzw. ladekapazität)Oberklasse (Superklasse) – Klasse, von der geerbt wird
Unterklasse (Subklasse) – Klasse, die erbt
super – Zugriff auf Methoden/Konstruktor der Oberklasse
Ist-ein-Beziehung – PKW ist ein Fahrzeug (Vererbung)
Hat-ein-Beziehung – Fahrzeug hat einen Motor (Komposition, keine Vererbung; wird später vertieft)
Durch Vererbung müssen gemeinsame Attribute (marke, baujahr) und Methoden nur einmal in der Elternklasse definiert werden.
Kindklassen fügen spezifische Attribute hinzu und können Methoden überschreiben.
Definition: Polymorphie (Vielgestaltigkeit) bedeutet, dass Objekte verschiedener Klassen über eine gemeinsame Schnittstelle angesprochen werden können und sich unterschiedlich verhalten.
| Art | Beschreibung | Beispiel |
|---|---|---|
| Überladen (Overloading) | Gleicher Methodenname, verschiedene Parameter statische Polymorphie |
berechne(a) und berechne(a, b) |
| Überschreiben (Overriding) | Kindklasse überschreibt Methode der Elternklasse dynamische Polymorphie |
Hund.sprechen() statt Tier.sprechen() |
+-------------------+
| <<interface>> |
| Druckbar |
|-------------------|
| |
|-------------------|
| + drucke(): void |
+-------------------+
^
|
implementiert
|
+-------------------+
| Rechnung |
|-------------------|
| + drucke(): void |
+-------------------+
+----------------------------+
| Haustier |
|----------------------------|
| - name : String |
| - energie : int |
|----------------------------|
| + spielen() : void |
| + ausruhen() : void |
+----------------------------+
^ ^
| |
| |
+----------------+ +----------------+
| Hund | | Katze |
|----------------| |----------------|
| + spielen() | | + spielen() |
| + ausruhen() | | + ausruhen() |
+----------------+ +----------------+
Definition Kardinalitäten = Multiplizitäten: Wie viele Instanzen einer Klasse können mit einer Instanz einer anderen Klasse in Beziehung stehen?
| Schreibweise | Bedeutung | Erklärung |
|---|---|---|
0..* oder * |
Null bis beliebig viele | Die Beziehung ist optional. Es können keine oder unendlich viele Objekte verknüpft sein. |
1..* |
Eins bis beliebig viele | Mindestens ein Objekt muss existieren (Pflichtbeziehung). |
0..1 |
Null oder eins | Optional, aber maximal ein Objekt (z. B. ein Profil für einen Nutzer). |
1 oder 1..1 |
Genau eins | Exakt ein Objekt muss verknüpft sein |
n..m, z. B. 2..5 |
Bestimmte Spanne | Mindestens n und maximal m Objekte |
Quelle: Kakashi-Madara, Wikimedia Commons
Das Klassendiagramm zeigt Klassen, ihre Attribute und Methoden sowie Beziehungen zwischen Klassen.
Viel Erfolg!