Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Zeile 86: Zeile 86:
*Akkukapazität
*Akkukapazität
*überschreibt: <code>info()</code>
*überschreibt: <code>info()</code>
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung EBike.m&thinsp;</strong>
|-
|
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
classdef EBike < Fahrzeug
    properties
        Akkukapazitaet
    end
    methods
        function obj = EBike(v, akku)
            obj@Fahrzeug(v);
            obj.Akkukapazitaet = akku;
        end
        function info(obj)
            fprintf("E-Bike\n");
            fprintf("Geschwindigkeit: %.1f km/h\n", ...
                obj.Geschwindigkeit);
            fprintf("Akkukapazitaet: %.1f Wh\n", ...
                obj.Akkukapazitaet);
        end
    end
end
</syntaxhighlight>
|}


=== Aufgabe 8.5.2 Kapselung erweitern ===
=== Aufgabe 8.5.2 Kapselung erweitern ===
Zeile 92: Zeile 125:
*Erstelle Methode: <code>setGeschwindigkeit(v)</code>
*Erstelle Methode: <code>setGeschwindigkeit(v)</code>
* Validierung: Geschwindigkeit darf nicht negativ sein
* Validierung: Geschwindigkeit darf nicht negativ sein
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung Fahrzeug.m&thinsp;</strong>
|-
|
<syntaxhighlight lang="matlab" line style="border: none; background-color: #EFF1C1; font-size:medium">
classdef (Abstract) Fahrzeug
    properties (Access = private)
        Geschwindigkeit
    end
    methods
        function obj = Fahrzeug(v)
            obj = obj.setGeschwindigkeit(v);
        end
        function obj = setGeschwindigkeit(obj, v)
            if v < 0
                error("Geschwindigkeit darf nicht negativ sein.");
            end
            obj.Geschwindigkeit = v;
        end
        function v = getGeschwindigkeit(obj)
            v = obj.Geschwindigkeit;
        end
    end
    methods (Abstract)
        info(obj)
    end
end
</syntaxhighlight>
|}


= Lernzielkontrolle =
= Lernzielkontrolle =

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