OOP: Unterschied zwischen den Versionen
Zeile 21: | Zeile 21: | ||
Konkrete Auto-Objekte sind: ein bestimmter Mercedes, ein bestimmter BMW. | Konkrete Auto-Objekte sind: ein bestimmter Mercedes, ein bestimmter BMW. | ||
* Alle diese Objekte haben gewisse gemeinsame Merkmale, z. B. eine | * Alle diese Objekte haben gewisse gemeinsame Merkmale, z. B. eine Marke, Baujahr. | ||
* | * | ||
* Diese Merkmale nennt man Attribute (Eigenschaften) eines Objekts. | * Diese Merkmale nennt man Attribute (Eigenschaften) eines Objekts. | ||
Zeile 81: | Zeile 81: | ||
public Auto(String marke) { | |||
this.marke = marke; | |||
} | |||
Version vom 2. Juni 2025, 09:54 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). Ein objektorientiertes Programm ist ein System von Objekten, die miteinander kommunizieren können. Wir haben schon mit Objekten gearbeitet, z. B. Scanner oder ArrayList.
Jetzt geht es darum, eigene Klassen zu definieren.
Eine Klasse ist ein Bauplan für Objekte
- Man kann sich eine Klasse als Fabrik vorstellen, die Objekte produziert
- Hier wird festgelegt, welche Eigenschaften und welches Verhalten ein Objekt hat
- Eine Klasse kann beliebig viele Objekte erzeugen
- Ein Objekt gehört jedoch immer zu genau einer Klasse
Wenn man sich die Klasse als Fabrik vorstellt, so ist das daraus erzeugte Objekt etwas ganz Konkretes. Man nennt Objekte auch
Instanzen.
Nehmen wir beispielsweise die Klasse Auto.
Konkrete Auto-Objekte sind: ein bestimmter Mercedes, ein bestimmter BMW.
- Alle diese Objekte haben gewisse gemeinsame Merkmale, z. B. eine Marke, Baujahr.
- Diese Merkmale nennt man Attribute (Eigenschaften) eines Objekts.
- Ein Attribut besteht aus einem Namen und einem Wert.
- Objekte können außerdem Operationen ausführen. Man nennt diese Operationen Methoden.
- Methoden sind nichts anderes als Funktionen, die innerhalb einer Klasse definiert sind.
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 (Eigenschaften, Instanzvariablen): Eigenschaften eines Objekts
- Methoden: Verhalten eines Objekts
Konstruktoren
Ein Konstruktor initialisiert ein Objekt beim Erzeugen.
Wird ein neues Objekt mit new erzeugt, stellt Java Speicherplatz für die Instanzvariablen bereit und
initialisiert diese mit 0, false oder null (je nach Datentyp).
Die Initialisierung der Instanzvariablen übernimmt eine spezielle Methode, nämlich der Konstruktor.
Programmieren Sie keinen eigenen Konstruktor erzeugt der Java-Compiler einen Defaultkonstruktor.
Oft ist es aber besser einen eigenen Konstruktor zu programmieren, um die Initialisierung in der "eigenen Hand" zu haben.
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
---