|
|
| (45 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
| Zeile 1: |
Zeile 1: |
| == 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). |
| | Ein objektorientiertes Programm ist ein System von Objekten, die miteinander kommunizieren können. Wir haben schon mit Objekten gearbeitet, z. B. Scanner oder ArrayList. |
|
| |
|
| --- | | === Wichtige OOP-Prinzipien === |
|
| |
|
| === Klassen und Objekte ===
| | * '''[[Kapselung]]''' – Daten verbergen |
| | * '''[[Vererbung]]''' – Wiederverwendbarkeit |
| | * '''[[Polymorphie]]''' – Einheitliches Ansprechen unterschiedlicher Objekte |
| | * '''[[Abstraktion]]''' – Komplexität reduzieren |
|
| |
|
| Eine Klasse ist eine Vorlage (Bauplan) für Objekte. Ein Objekt ist eine Instanz dieser Klasse.
| | [[Kategorie:Programmieren]] |
| | | [[Kategorie:Semester2]] |
| <syntaxhighlight lang="java">
| |
| public class Auto {
| |
| String marke;
| |
| int baujahr;
| |
| | |
| | |
| public void starten() {
| |
| System.out.println("Motor startet");
| |
| }
| |
| | |
| } </syntaxhighlight>
| |
| | |
| Objekterzeugung:
| |
| | |
| <syntaxhighlight lang="java">
| |
| Auto meinAuto = new Auto();
| |
| meinAuto.marke = "VW";
| |
| meinAuto.baujahr = 2022;
| |
| meinAuto.starten();
| |
| </syntaxhighlight>
| |
| | |
| ---
| |
| | |
| === Attribute und Methoden ===
| |
| | |
| * **Attribute** (Felder): Eigenschaften eines Objekts
| |
| * **Methoden**: Verhalten eines Objekts
| |
| | |
| ---
| |
| | |
| === Konstruktoren ===
| |
| | |
| Ein Konstruktor initialisiert ein Objekt beim Erzeugen.
| |
| | |
| <syntaxhighlight lang="java">
| |
| public class Auto {
| |
| String marke;
| |
| | |
| | |
| public Auto(String marke) {
| |
| this.marke = marke;
| |
| }
| |
| | |
| | |
| } </syntaxhighlight>
| |
| | |
| Aufruf:
| |
| | |
| <syntaxhighlight lang="java">
| |
| Auto a = new Auto("BMW");
| |
| </syntaxhighlight>
| |
| | |
| | |
| | |
| === this-Referenz ===
| |
| | |
| `this` verweist auf das aktuelle Objekt:
| |
| | |
| <syntaxhighlight lang="java">
| |
| this.marke = marke;
| |
| </syntaxhighlight>
| |
| | |
| | |
| === Kapselung (Encapsulation) ===
| |
| | |
| Attribute werden privat gemacht und über Getter/Setter kontrolliert.
| |
| | |
| <syntaxhighlight lang="java">
| |
| public class Kunde {
| |
| private String name;
| |
| | |
| | |
| public String getName() {
| |
| return name;
| |
| }
| |
| | |
| public void setName(String n) {
| |
| name = n;
| |
| }
| |
| | |
| | |
| } </syntaxhighlight>
| |
| | |
| ---
| |
| | |
| === Vererbung (Inheritance) ===
| |
| | |
| Eine Klasse kann von einer anderen erben:
| |
| | |
| <syntaxhighlight lang="java">
| |
| public class Fahrzeug {
| |
| int geschwindigkeit;
| |
| }
| |
| | |
| public class Auto extends Fahrzeug {
| |
| int tueranzahl;
| |
| } </syntaxhighlight>
| |
| | |
| | |
| === Polymorphie ===
| |
| | |
| Ein Objekt kann mehrere Formen annehmen – z. B. durch Überschreiben (Overriding) von Methoden:
| |
| | |
| <syntaxhighlight lang="java">
| |
| 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!");
| |
| }
| |
| } </syntaxhighlight>
| |
| | |
| ---
| |
| | |
| === Abstrakte Klassen ===
| |
| | |
| Dienen als Basisklassen mit nicht vollständiger Implementierung:
| |
| | |
| <syntaxhighlight lang="java">
| |
| abstract class Figur {
| |
| abstract double berechneFlaeche();
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ---
| |
| | |
| === Interfaces ===
| |
| | |
| Definieren nur die Methode, aber keine Implementierung:
| |
| | |
| <syntaxhighlight lang="java">
| |
| interface Bewegbar {
| |
| void bewege();
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| ---
| |
| | |
| \=== Wichtige OOP-Prinzipien ===
| |
| | |
| * '''Kapselung''' – Daten verbergen
| |
| * '''Vererbung''' – Wiederverwendbarkeit
| |
| * '''Polymorphie''' – Einheitliches Ansprechen unterschiedlicher Objekte
| |
| * '''Abstraktion''' – Komplexität reduzieren
| |
| | |
| ---
| |
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.
Wichtige OOP-Prinzipien