Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 105: | Zeile 105: | ||
|} | |} | ||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Wo wird Vererbung im Code sichtbar? </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. | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Was bedeutet Polymorphismus im Hauptprogramm? </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. | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Warum ist Kapselung sinnvoll? </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. | |||
|} | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Ergebnis (Polymorphismus) </strong> | |||
|- | |||
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium"> | |||
== | |||
fahrzeuge = [auto, fahrrad]; | fahrzeuge = [auto, fahrrad]; | ||
| Zeile 119: | Zeile 146: | ||
fahrzeuge(k).info(); | fahrzeuge(k).info(); | ||
end | end | ||
</syntaxhighlight> | |||
|- | |||
|→ gleiche Methode ''info()'', aber unterschiedliche Ausgabe | |||
|} | |||
<!-- | <!-- | ||
=Aufgabe 9.1 Strukturen und Klassen= | =Aufgabe 9.1 Strukturen und Klassen= | ||
Version vom 21. Mai 2026, 15:30 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
Warum ist die Klasse Fahrzeug abstrakt?
|
| Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt. |
|
| Wo wird Vererbung im Code sichtbar? |
| Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt. |
|
| Was bedeutet Polymorphismus im Hauptprogramm? |
| Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt. |
|
| Warum ist Kapselung sinnvoll? |
| Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt. |
|
fahrzeuge = [auto, fahrrad];
for k = 1:length(fahrzeuge)
fahrzeuge(k).info();
end
| Ergebnis (Polymorphismus) |
| → gleiche Methode info(), aber unterschiedliche Ausgabe |
→ MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe26