Objektorientierte Programmierung (OOP)
Was du heute lernst:
- Die Grundprinzipien der OOP (Kapselung, Abstraktion, Vererbung, Polymorphie) definieren.
- Klassen, Objekte und Konstruktoren in Java entwerfen und anwenden.
- Den Nutzen der Objektorientierung für die Strukturierung und Wartung von Software erkennen.
Ein Programmierparadigma, das die Verwendung von "Objekten" zur Strukturierung von Software fördert, wobei Objekte Instanzen von Klassen sind, die Daten und Funktionen kapseln.
Kernkonzepte der OOP (Kapselung, Abstraktion, Vererbung, Polymorphie)
| Konzept | Beschreibung | Nutzen |
|---|---|---|
| Kapselung | Daten und Methoden werden in einer Klasse zusammengefasst; Implementierungsdetails sind nach außen verborgen. | Schützt Daten vor unbefugtem Zugriff; fördert Modularität und Wartbarkeit. |
| Abstraktion | Konzentration auf das Wesentliche; Definition gemeinsamer Eigenschaften und Methoden ohne Implementierungsdetails. | Reduziert Komplexität; ermöglicht klare Schnittstellen und Hierarchien. |
| Vererbung | Neue Klassen können Eigenschaften und Verhaltensweisen von bestehenden Klassen übernehmen. | Fördert Code-Wiederverwendung und hierarchische Strukturierung. |
| Polymorphie | Objekte unterschiedlicher Klassen können über eine gemeinsame Schnittstelle angesprochen werden. | Ermöglicht flexible und erweiterbare Systeme; "Viele Gestalten". |
Weitere wichtige Konzepte:
- Designmuster: Bewährte Lösungen für häufige Probleme in der Softwareentwicklung (z.B. Singleton, Observer).
- Modularität: Aufteilung des Codes in kleinere, unabhängige Einheiten zur besseren Wartung und Entwicklung.
Klasse, Objekt & Konstruktor
Klasse (Bauplan)
Eine Klasse ist eine Vorlage oder Blaupause für die Erstellung von Objekten. Sie definiert die Attribute (Daten) und Methoden (Funktionen), die Objekte dieses Typs besitzen. Beispiel: Die Klasse Auto könnte Attribute wie farbe und modell sowie die Methode fahren() definieren.
public class Auto {
private String farbe;
private String modell;
public Auto(String farbe, String modell) {
this.farbe = farbe;
this.modell = modell;
}
public void fahren() {
System.out.println("Das Auto fährt.");
}
}
Objekt (Instanz)
Ein Objekt ist eine konkrete Instanz einer Klasse. Es repräsentiert ein spezifisches Exemplar mit eigenen Werten für die Attribute. Beispiel: Auto meinAuto = new Auto("rot", "BMW"); erstellt ein Objekt der Klasse Auto.
Konstruktor (Initialisierer)
Eine spezielle Methode, die automatisch aufgerufen wird, wenn ein neues Objekt einer Klasse erstellt wird. Sie dient dazu, das Objekt zu initialisieren. Merkmale: Hat denselben Namen wie die Klasse und keinen Rückgabewert.
public class Auto {
private String farbe;
// Konstruktor
public Auto(String farbe) {
this.farbe = farbe;
}
}
In Java gibt es keine Destruktoren im Sinne von C++. Die Speicherbereinigung (Garbage Collection) erfolgt automatisch durch die Java Virtual Machine (JVM).
Übungsaufgabe: Klassen und Objekte entwerfen
Aufgabenstellung: Entwirf eine Klasse namens Buch mit folgenden Attributen: titel (String), autor (String) und seitenAnzahl (Integer). Schreibe für diese Klasse einen Konstruktor, der die Initialisierung dieser Attribute ermöglicht. Erstelle dann in einer main-Methode eine Instanz (ein Objekt) dieser Klasse, z.B. meinBuch, und initialisiere es mit den Daten eines bekannten Buches.
Hinweise zur Lösung: Denke an die Struktur der Auto-Klasse im Beispiel. Achte auf die korrekte Syntax für Java.
Schwierigkeitsgrad: mittel
Erwartete Bearbeitungszeit: 20 Minuten