Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 123: Zeile 123:
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
obj@Fahrzeug(v)
obj@Fahrzeug(v)
</syntaxhighlight>.
</syntaxhighlight>


|}
|}
Zeile 130: Zeile 130:
| <strong>Was bedeutet Polymorphismus im Hauptprogramm?&thinsp;</strong>
| <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.
| Polymorphismus bedeutet, dass dieselbe Methode unterschiedliche Verhaltensweisen haben kann.
|-
|-
|
|
*Ein <code>Fahrzeug</code> an sich existiert nicht in der Realität als eindeutiges Objekt.
Im Hauptprogramm:
*Es dient nur als gemeinsame Struktur für spezialisierte Klassen wie Auto oder Fahrrad.
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
*Die abstrakte Methode <code>info()</code> erzwingt, dass jede Unterklasse ihre eigene Umsetzung liefert.
fahrzeuge = [auto, fahrrad];
 
for k = 1:length(fahrzeuge)
    fahrzeuge(k).info();
end
</syntaxhighlight>
|-
|
Es wird immer die Methode info() aufgerufen<br>
* <code>Auto.info()</code> gibt Auto-spezifische Informationen aus
* <code>Fahrrad.info()</code> gibt Fahrrad-spezifische Informationen aus
Gleicher Aufruf – unterschiedliches Verhalten
|}
|}
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Warum ist Kapselung sinnvoll?&thinsp;</strong>
| <strong>Warum ist Kapselung sinnvoll?&thinsp;</strong>
|-
|-
| Die Klasse Fahrzeug ist abstrakt, weil sie kein konkretes Objekt beschreibt, sondern nur eine allgemeine Vorlage darstellt.
| Kapselung schützt interne Daten und kontrolliert den Zugriff auf Objekteigenschaften.
|-
|
Beispiel:
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
properties (Access = private)
    Geschwindigkeit
end
</syntaxhighlight>
|-
|-
|
|
*Ein <code>Fahrzeug</code> an sich existiert nicht in der Realität als eindeutiges Objekt.
Vorteile:
*Es dient nur als gemeinsame Struktur für spezialisierte Klassen wie Auto oder Fahrrad.
* Daten können nicht unkontrolliert verändert werden
*Die abstrakte Methode <code>info()</code> erzwingt, dass jede Unterklasse ihre eigene Umsetzung liefert.
* Validierung ist möglich (z.&thinsp;B. keine negative Geschwindigkeit)
* interne Implementierung bleibt verborgen
* externe Nutzung erfolgt nur über definierte Methoden
|}
|}



Version vom 21. Mai 2026, 15:38 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



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