OOP: Unterschied zwischen den Versionen

Aus FI-Wiki
Die Seite wurde neu angelegt: „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 Spra…“
 
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
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 ==
 
---
 
\== 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).
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).
Zeile 9: Zeile 5:
---
---


\=== Klassen und Objekte ===
=== Klassen und Objekte ===


Eine Klasse ist eine Vorlage (Bauplan) für Objekte. Ein Objekt ist eine Instanz dieser Klasse.
Eine Klasse ist eine Vorlage (Bauplan) für Objekte. Ein Objekt ist eine Instanz dieser Klasse.
Zeile 18: Zeile 14:
     int baujahr;
     int baujahr;


```
 
public void starten() {
public void starten() {
     System.out.println("Motor startet");
     System.out.println("Motor startet");
}
}
```


} </syntaxhighlight>
} </syntaxhighlight>
Zeile 37: Zeile 32:
---
---


\=== Attribute und Methoden ===
=== Attribute und Methoden ===


* **Attribute** (Felder): Eigenschaften eines Objekts
* **Attribute** (Felder): Eigenschaften eines Objekts
Zeile 44: Zeile 39:
---
---


\=== Konstruktoren ===
=== Konstruktoren ===


Ein Konstruktor initialisiert ein Objekt beim Erzeugen.
Ein Konstruktor initialisiert ein Objekt beim Erzeugen.
Zeile 52: Zeile 47:
     String marke;
     String marke;


```
 
public Auto(String marke) {
public Auto(String marke) {
     this.marke = marke;
     this.marke = marke;
}
}
```
 


} </syntaxhighlight>
} </syntaxhighlight>
Zeile 66: Zeile 61:
</syntaxhighlight>
</syntaxhighlight>


---


\=== this-Referenz ===
 
=== this-Referenz ===


`this` verweist auf das aktuelle Objekt:
`this` verweist auf das aktuelle Objekt:
Zeile 76: Zeile 71:
</syntaxhighlight>
</syntaxhighlight>


---


\=== Kapselung (Encapsulation) ===
=== Kapselung (Encapsulation) ===


Attribute werden privat gemacht und über Getter/Setter kontrolliert.
Attribute werden privat gemacht und über Getter/Setter kontrolliert.
Zeile 86: Zeile 80:
     private String name;
     private String name;


```
 
public String getName() {
public String getName() {
     return name;
     return name;
Zeile 94: Zeile 88:
     name = n;
     name = n;
}
}
```
 


} </syntaxhighlight>
} </syntaxhighlight>
Zeile 100: Zeile 94:
---
---


\=== Vererbung (Inheritance) ===
=== Vererbung (Inheritance) ===


Eine Klasse kann von einer anderen erben:
Eine Klasse kann von einer anderen erben:
Zeile 113: Zeile 107:
} </syntaxhighlight>
} </syntaxhighlight>


---


\=== Polymorphie ===
=== Polymorphie ===


Ein Objekt kann mehrere Formen annehmen – z. B. durch Überschreiben (Overriding) von Methoden:
Ein Objekt kann mehrere Formen annehmen – z. B. durch Überschreiben (Overriding) von Methoden:
Zeile 134: Zeile 127:
---
---


\=== Abstrakte Klassen ===
=== Abstrakte Klassen ===


Dienen als Basisklassen mit nicht vollständiger Implementierung:
Dienen als Basisklassen mit nicht vollständiger Implementierung:
Zeile 146: Zeile 139:
---
---


\=== Interfaces ===
=== Interfaces ===


Definieren nur die Methode, aber keine Implementierung:
Definieren nur die Methode, aber keine Implementierung:
Zeile 160: Zeile 153:
\=== Wichtige OOP-Prinzipien ===
\=== Wichtige OOP-Prinzipien ===


* **Kapselung** – Daten verbergen
* '''Kapselung''' – Daten verbergen
* **Vererbung** – Wiederverwendbarkeit
* '''Vererbung''' – Wiederverwendbarkeit
* **Polymorphie** – Einheitliches Ansprechen unterschiedlicher Objekte
* '''Polymorphie''' – Einheitliches Ansprechen unterschiedlicher Objekte
* **Abstraktion** – Komplexität reduzieren
* '''Abstraktion''' – Komplexität reduzieren


---
---

Version vom 2. Juni 2025, 09:38 Uhr

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

---