Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen
| Zeile 29: | Zeile 29: | ||
|} | |} | ||
== 2 | == Aufgabe 8.2 Klasse „Auto“ == | ||
Erstelle eine Klasse <code>Auto</code>, die von <code>Fahrzeug</code> erbt. | Erstelle eine Klasse <code>Auto</code>, die von <code>Fahrzeug</code> erbt. | ||
| Zeile 35: | Zeile 35: | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
| Eigenschaft: || <code>Marke</code> || | | Eigenschaft: || <code>Marke</code> || | ||
|- | |- | ||
| Konstruktor: || <code>Auto()</code>|| setzt Geschwindigkeit und Marke | | Konstruktor: || <code>Auto()</code>|| setzt Geschwindigkeit und Marke | ||
| Zeile 46: | Zeile 46: | ||
=== Beispielausgabe === | === Beispielausgabe === | ||
*Auto: BMW | *Auto: BMW | ||
*Geschwindigkeit: 180 km/h | *Geschwindigkeit: 180 km/h | ||
== 3 | == Aufgabe 8.3 Klasse <code>Fahrrad</code> == | ||
Erstelle eine Klasse <code>Fahrrad</code>, die ebenfalls von <code>Fahrzeug</code> erbt. | |||
Erstelle eine Klasse | |||
==== Anforderungen ==== | ==== Anforderungen ==== | ||
{| class="wikitable" | |||
|- | |||
| Eigenschaft: || <code>Typ</code> || nur innerhalb der Klasse zugänglich, z. B. Mountainbike, Rennrad | |||
|- | |||
| Konstruktor: || <code>Fahrrad()</code>|| setzt Geschwindigkeit und Typ | |||
|- | |||
| Methode: || <code>getGeschwindigkeit()</code> || liest die Geschwindigkeit aus | |||
|- | |||
| Abstrakte Methode: || <code>info()</code> || liest die Informationen | |||
|} | |||
=== Beispielausgabe === | |||
*Fahrrad: Mountainbike | |||
*Geschwindigkeit: 25 km/h | |||
Fahrrad: Mountainbike | |||
Geschwindigkeit: 25 km/h | |||
== Aufgabe 8.4 Hauptprogramm (Polymorphismus) == | |||
Erstelle ein Skript <code>main.m</code>. | |||
Erzeuge: | === Aufgaben === | ||
1 Auto | * Erzeuge: | ||
1 Fahrrad | *1 Auto | ||
Speichere beide in einer Liste / einem Array | *1 Fahrrad | ||
Rufe für jedes Objekt die Methode | *Speichere beide in einer Liste/einem Array | ||
*Rufe für jedes Objekt die Methode <code>info()</code> auf | |||
== | == Aufgabe 8.5 Zusatzaufgabe == | ||
=== | === Aufgabe 8.5.1 Klasse „E-Bike“ === | ||
Erweitere das System um eine Klasse '''E-Bike''': | Erweitere das System um eine Klasse '''E-Bike''': | ||
Zusätzliche Eigenschaft: | |||
Akkukapazität | *Akkukapazität | ||
überschreibt: | *überschreibt: <code>info()</code> | ||
=== | === Aufgabe 8.5.2 Kapselung erweitern === | ||
Setze ''Geschwindigkeit'' auf '''private''' | *Setze ''Geschwindigkeit'' auf '''private''' | ||
Erstelle Methode: | *Erstelle Methode: <code>setGeschwindigkeit(v)</code> | ||
setGeschwindigkeit(v) | * Validierung: Geschwindigkeit darf nicht negativ sein | ||
Validierung: | |||
Geschwindigkeit darf nicht negativ sein | |||
== | = Lernzielkontrolle = | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Warum ist die Klasse <code>Fahrzeug</code> abstrakt? </strong> | |||
|- | |||
Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt. | |||
|- | |||
*Ein <code>Fahrzeug</code> an sich existiert nicht in der Realität als eindeutiges Objekt. | |||
*Es dient nur als gemeinsame Struktur für spezialisierte Klassen wie Auto oder Fahrrad. | |||
*Die abstrakte Methode <code>info()</code> erzwingt, dass jede Unterklasse ihre eigene Umsetzung liefert. | |||
|} | |||
Wo wird Vererbung im Code sichtbar? | Wo wird Vererbung im Code sichtbar? | ||
Was bedeutet Polymorphismus im Hauptprogramm? | Was bedeutet Polymorphismus im Hauptprogramm? | ||
Version vom 21. Mai 2026, 15:25 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Termin: | 22.05.2026 |
Lernziel
Nach der Bearbeitung können die Studierenden:
- abstrakte Klassen in MATLAB® erstellen
- Vererbung anwenden
- private/protected Eigenschaften unterscheiden
- Polymorphismus praktisch einsetzen
- ein einfaches OOP-System strukturieren
Aufgabenstellung
Aufgabe 8.1 Abstrakte Klasse „Fahrzeug“
Erstelle eine abstrakte Klasse Fahrzeug.
Anforderungen
| Eigenschaft: | Geschwindigkeit |
nur innerhalb der Klasse zugänglich |
| Konstruktor: | Fahrzeug() |
setzt die Geschwindigkeit |
| Methode: | getGeschwindigkeit() |
liest die Geschwindigkeit aus |
| Abstrakte Methode: | info() |
liest die Informationen |
Aufgabe 8.2 Klasse „Auto“
Erstelle eine Klasse Auto, die von Fahrzeug erbt.
Anforderungen
| Eigenschaft: | Marke |
|
| Konstruktor: | Auto() |
setzt Geschwindigkeit und Marke |
| Methode: | getGeschwindigkeit() |
liest die Geschwindigkeit aus |
| Abstrakte Methode: | info() |
liest die Informationen |
Beispielausgabe
- Auto: BMW
- Geschwindigkeit: 180 km/h
Aufgabe 8.3 Klasse Fahrrad
Erstelle eine Klasse Fahrrad, die ebenfalls von Fahrzeug erbt.
Anforderungen
| Eigenschaft: | Typ |
nur innerhalb der Klasse zugänglich, z. B. Mountainbike, Rennrad |
| Konstruktor: | Fahrrad() |
setzt Geschwindigkeit und Typ |
| Methode: | getGeschwindigkeit() |
liest die Geschwindigkeit aus |
| Abstrakte Methode: | info() |
liest die Informationen |
Beispielausgabe
- Fahrrad: Mountainbike
- Geschwindigkeit: 25 km/h
Aufgabe 8.4 Hauptprogramm (Polymorphismus)
Erstelle ein Skript main.m.
Aufgaben
- Erzeuge:
- 1 Auto
- 1 Fahrrad
- Speichere beide in einer Liste/einem Array
- Rufe für jedes Objekt die Methode
info()auf
Aufgabe 8.5 Zusatzaufgabe
Aufgabe 8.5.1 Klasse „E-Bike“
Erweitere das System um eine Klasse E-Bike:
Zusätzliche Eigenschaft:
- Akkukapazität
- überschreibt:
info()
Aufgabe 8.5.2 Kapselung erweitern
- Setze Geschwindigkeit auf private
- Erstelle Methode:
setGeschwindigkeit(v) - Validierung: Geschwindigkeit darf nicht negativ sein
Lernzielkontrolle
Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt.- Ein
Fahrzeugan sich existiert nicht in der Realität als eindeutiges Objekt. - Es dient nur als gemeinsame Struktur für spezialisierte Klassen wie Auto oder Fahrrad.
- Die abstrakte Methode
info()erzwingt, dass jede Unterklasse ihre eigene Umsetzung liefert.
Warum ist die Klasse Fahrzeug abstrakt?
|
Wo wird Vererbung im Code sichtbar? Was bedeutet Polymorphismus im Hauptprogramm? Warum ist Kapselung sinnvoll? Was passiert ohne Getter/Setter?
📊 Erwartetes Ergebnis (Polymorphismus)
fahrzeuge = [auto, fahrrad];
for k = 1:length(fahrzeuge) fahrzeuge(k).info(); end
→ gleiche Methode info(), aber unterschiedliche Ausgabe
🧾 Lernziel
Nach der Bearbeitung können die Studierenden:
abstrakte Klassen in MATLAB erstellen Vererbung anwenden private/protected Eigenschaften unterscheiden Polymorphismus praktisch einsetzen ein einfaches OOP-System strukturieren
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe26