OOP
Natürlich! Hier ist eine übersichtliche Einführung in die **Objektorientierte Programmierung (OOP) in Java** im **MediaWiki-Stil**, wie du es bereits von DDL, DML und DQL kennst – ideal zur Dokumentation oder für Unterrichtszwecke:
---
\== Objektorientierte Programmierung (OOP) in Java ==
Die objektorientierte Programmierung ist ein Paradigma, das Programme auf Basis von **Objekten** strukturiert. Java ist eine vollständig objektorientierte Sprache (mit Ausnahme der primitiven Datentypen).
---
\=== Klassen und Objekte ===
Eine Klasse ist eine Vorlage (Bauplan) für Objekte. Ein Objekt ist eine Instanz dieser Klasse.
public class Auto {
String marke;
int baujahr;
```
public void starten() {
System.out.println("Motor startet");
}
```
}
Objekterzeugung:
Auto meinAuto = new Auto();
meinAuto.marke = "VW";
meinAuto.baujahr = 2022;
meinAuto.starten();
---
\=== Attribute und Methoden ===
- **Attribute** (Felder): Eigenschaften eines Objekts
- **Methoden**: Verhalten eines Objekts
---
\=== Konstruktoren ===
Ein Konstruktor initialisiert ein Objekt beim Erzeugen.
public class Auto {
String marke;
```
public Auto(String marke) {
this.marke = marke;
}
```
}
Aufruf:
Auto a = new Auto("BMW");
---
\=== this-Referenz ===
`this` verweist auf das aktuelle Objekt:
this.marke = marke;
---
\=== Kapselung (Encapsulation) ===
Attribute werden privat gemacht und über Getter/Setter kontrolliert.
public class Kunde {
private String name;
```
public String getName() {
return name;
}
public void setName(String n) {
name = n;
}
```
}
---
\=== Vererbung (Inheritance) ===
Eine Klasse kann von einer anderen erben:
public class Fahrzeug {
int geschwindigkeit;
}
public class Auto extends Fahrzeug {
int tueranzahl;
}
---
\=== Polymorphie ===
Ein Objekt kann mehrere Formen annehmen – z. B. durch Überschreiben (Overriding) von Methoden:
class Tier {
public void geraeusch() {
System.out.println("Ein Tier macht ein Geräusch");
}
}
class Hund extends Tier {
public void geraeusch() {
System.out.println("Wuff!");
}
}
---
\=== Abstrakte Klassen ===
Dienen als Basisklassen mit nicht vollständiger Implementierung:
abstract class Figur {
abstract double berechneFlaeche();
}
---
\=== Interfaces ===
Definieren nur die Methode, aber keine Implementierung:
interface Bewegbar {
void bewege();
}
---
\=== Wichtige OOP-Prinzipien ===
- **Kapselung** – Daten verbergen
- **Vererbung** – Wiederverwendbarkeit
- **Polymorphie** – Einheitliches Ansprechen unterschiedlicher Objekte
- **Abstraktion** – Komplexität reduzieren
---