Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
| Zeile 5: | Zeile 5: | ||
| '''Termin:''' || 23.05.2025 | | '''Termin:''' || 23.05.2025 | ||
|} | |} | ||
= Lernziel = | |||
Nach der Bearbeitung können die Studierenden: | |||
* abstrakte Klassen in MATLAB<sup>®</sup> 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 === | |||
{| class="wikitable" | |||
|- | |||
| Eigenschaft | |||
: || ''Geschwindigkeit'' || nur innerhalb der Klasse zugänglich | |||
|- | |||
| Konstruktor: || Beispiel || setzt die Geschwindigkeit | |||
|- | |||
| Methode: || ''getGeschwindigkeit()'' || Beispiel | |||
|- | |||
| Abstrakte Methode: || ''info()'' || Beispiel | |||
|} | |||
== 2. Klasse „Auto“ == | |||
Erstelle eine Klasse '''Auto''', die von ''Fahrzeug'' erbt. | |||
==== Eigenschaften ==== | |||
Marke | |||
==== Anforderungen ==== | |||
Konstruktor: | |||
setzt Geschwindigkeit und Marke | |||
Implementiere: | |||
''info()'' | |||
==== Beispielausgabe ==== | |||
Auto: BMW | |||
Geschwindigkeit: 180 km/h | |||
=== 3. Klasse „Fahrrad“ === | |||
Erstelle eine Klasse '''Fahrrad''', die ebenfalls von ''Fahrzeug'' erbt. | |||
==== Eigenschaften ==== | |||
Typ (z. B. Mountainbike, Rennrad) | |||
==== Anforderungen ==== | |||
Konstruktor: | |||
setzt Geschwindigkeit und Typ | |||
Implementiere: | |||
''info()'' | |||
==== Beispielausgabe ==== | |||
Fahrrad: Mountainbike | |||
Geschwindigkeit: 25 km/h | |||
=== 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 | |||
== 💡 Zusatzaufgabe (optional) == | |||
=== a) Klasse „E-Bike“ === | |||
Erweitere das System um eine Klasse '''E-Bike''': | |||
zusätzliche Eigenschaft: | |||
Akkukapazität | |||
überschreibt: | |||
''info()'' | |||
=== b) Kapselung erweitern === | |||
Setze ''Geschwindigkeit'' auf '''private''' | |||
Erstelle Methode: | |||
setGeschwindigkeit(v) | |||
Validierung: | |||
Geschwindigkeit darf nicht negativ sein | |||
== 🧠 Leitfragen == | |||
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 | |||
<!-- | |||
=Aufgabe 9.1 Strukturen und Klassen= | =Aufgabe 9.1 Strukturen und Klassen= | ||
Erstellen Sie den <code>struct person</code> mit den Datenfeldern: | Erstellen Sie den <code>struct person</code> mit den Datenfeldern: | ||
| Zeile 113: | Zeile 235: | ||
</source> | </source> | ||
|} | |} | ||
--> | |||
---- | ---- | ||
→ [[MATLAB-Befehle| MATLAB<sup>®</sup> Befehlsübersicht]]<br> | → [[MATLAB-Befehle| MATLAB<sup>®</sup> Befehlsübersicht]]<br> | ||
→ zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe26]] | → zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe26]] | ||
Version vom 21. Mai 2026, 13:56 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Termin: | 23.05.2025 |
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
| ||
| Konstruktor: | Beispiel | setzt die Geschwindigkeit |
| Methode: | getGeschwindigkeit() | Beispiel |
| Abstrakte Methode: | info() | Beispiel |
2. Klasse „Auto“
Erstelle eine Klasse Auto, die von Fahrzeug erbt.
Eigenschaften
Marke
Anforderungen
Konstruktor: setzt Geschwindigkeit und Marke Implementiere: info()
Beispielausgabe
Auto: BMW Geschwindigkeit: 180 km/h
3. Klasse „Fahrrad“
Erstelle eine Klasse Fahrrad, die ebenfalls von Fahrzeug erbt.
Eigenschaften
Typ (z. B. Mountainbike, Rennrad)
Anforderungen
Konstruktor: setzt Geschwindigkeit und Typ Implementiere: info()
Beispielausgabe
Fahrrad: Mountainbike Geschwindigkeit: 25 km/h
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
💡 Zusatzaufgabe (optional)
a) Klasse „E-Bike“
Erweitere das System um eine Klasse E-Bike:
zusätzliche Eigenschaft: Akkukapazität überschreibt: info()
b) Kapselung erweitern
Setze Geschwindigkeit auf private Erstelle Methode: setGeschwindigkeit(v) Validierung: Geschwindigkeit darf nicht negativ sein
🧠 Leitfragen
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