Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
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?&thinsp;</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?&thinsp;</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?&thinsp;</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?
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
Was bedeutet Polymorphismus im Hauptprogramm?
| <strong>Ergebnis (Polymorphismus)&thinsp;</strong>
Warum ist Kapselung sinnvoll?
|-
Was passiert ohne Getter/Setter?
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
 
== 📊 Erwartetes Ergebnis (Polymorphismus) ==
 
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
|}


→ 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=

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

fahrzeuge = [auto, fahrrad];

for k = 1:length(fahrzeuge)
fahrzeuge(k).info();
end



MATLAB® Befehlsübersicht
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe26