Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „{| class="wikitable" |- | '''Autor:''' || Prof. Dr.-Ing. Schneider |- | '''Termin:''' || 23.05.2025 |} =Aufgabe 9.1= Schreiben Sie eine Matlab GUI mit der ein schräger Wurf simuliert wird. Die physikalische Theorie finden Sie hier: [https://www.leifiphysik.de/mechanik/waagerechter-und-schraeger-wurf/grundwissen/schraeger-wurf-nach-oben-ohne-anfangshoehe leifiphysik: Schräger Wurf nach oben ohne Anfangshöhe] Die GUI s…“ |
|||
| (17 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
|} | |} | ||
=Aufgabe 9.1= | =Aufgabe 9.1 Strukturen und Klassen= | ||
Erstellen Sie den <code>struct person</code> mit den Datenfeldern: | |||
* Strasse, | |||
* Hausnummer, | |||
* Postleitzahl, | |||
* Ort, | |||
* Geburtsdatum [Array aus 3 Zahlen]. | |||
Legen Sie 3 Personen an. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung 9.1 </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">person = struct( 'Name', 'Hannah', ... | |||
'Telnr', '0815', ... | |||
'Strasse', 'Hamb. Str.', ... | |||
'Hausnr', 75,... | |||
'Postleitzahl',59555,... | |||
'Ort','Lippstadt',... | |||
'Geburtsdatum',[1,1,1920] ); | |||
</source> | |||
|} | |||
=Aufgabe 9.2 Strukturen und Klassen= | |||
Schreiben wir eine Funktion <code>getPerson</code> die nacheinander Daten für mehrere Personen einliest, diesmal nur mit den beiden Feldern <code>Name</code> und <code>Telnr</code>. In einer | |||
Schleife werden die Werte für diese Felder von der Tastatur eingelesen, und zwar nacheinander für das erste Element person(n), n = 1, bis zur übergebenen Maximalzahl | |||
num_pers, im Beispielaufruf gleich 3. Das so erzeugte struct-Array person wird von der Funktion zurückgegeben. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung 9.2 </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">% | |||
% pers = Array mit Elementen der Klasse Person | |||
% | |||
function pers = getPerson( anz ) | |||
for( n = 1:anz ) % Einleseschleife: von 1 bis anz | |||
name = input( 'Name: ', 's' ); % als Text | |||
telnr = input( 'Tel.-Nr.: ' ); % als Zahl | |||
str = input( 'Strasse: ', 's' ); % als Text | |||
hnr = input( 'Haus.-Nr.: ' ); % als Zahl | |||
plz = input( 'PLZ: ' ); % als Zahl | |||
ort = input( 'Ort: ', 's' ); % als Text | |||
% neues n-tes Objekt von Person | |||
pers(n) = Person( name, telnr, str, hnr, plz, ort ); | |||
end | |||
end | |||
</source> | |||
|} | |||
=Aufgabe 9.3 Strukturen und Klassen= | |||
Stellen Sie den Struct Person auf eine Klasse um. Schreiben Sie die Funktionen <code>printPerson</code>, welche die Übergabeklasse <code>Person</code> im Command Window ausgibt. | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung 9.3 </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium">% | |||
% pers = Array mit Elementen der Klasse Person | |||
% | |||
function printPerson( pers ) | |||
anz = length( pers ); % Zahl der Personen | |||
fprintf( '\nMeine Freunde : \n' ); % Überschrift | |||
fprintf( '---------------\n' ); | |||
for( n = 1:anz ) % Ausgabeschleife | |||
pers(n).print; | |||
end | |||
end | |||
</source> | |||
classdef Person | |||
% Eigenschaften | |||
properties | |||
name = ''; | |||
telnr = 0; | |||
end % properties | |||
% Methoden | |||
methods | |||
% Konstruktor | |||
function o = Person( name, telnr ) | |||
o.name = name; | |||
o.telnr = telnr; | |||
end | |||
function print( o ) | |||
fprintf( 'Name: %s, Tel.Nr.: %g.\n', ... | |||
o.name, o.telnr ); | |||
end | |||
function info( o ) | |||
fprintf( 'Telefonnummer %g gehört zu %s.\n', ... | |||
o.telnr, o.name ); | |||
end | |||
end % methods | |||
end % classdef | |||
|} | |||
=Aufgabe 9.4 Strukturen und Klassen= | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung 9.3 </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium"> | |||
</source> | |||
|} | |||
=Aufgabe 9.5 Strukturen und Klassen= | |||
{| role="presentation" class="wikitable mw-collapsible mw-collapsed" | |||
| <strong>Musterlösung 9.5 </strong> | |||
|- | |||
| <source line lang="matlab" style="font-size:medium"> | |||
</source> | |||
|} | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe25]] | → zurück zum Hauptartikel: [[BSE Modellierung und Simulation - SoSe25]] | ||
Aktuelle Version vom 23. Mai 2025, 06:49 Uhr
| Autor: | Prof. Dr.-Ing. Schneider |
| Termin: | 23.05.2025 |
Aufgabe 9.1 Strukturen und Klassen
Erstellen Sie den struct person mit den Datenfeldern:
- Strasse,
- Hausnummer,
- Postleitzahl,
- Ort,
- Geburtsdatum [Array aus 3 Zahlen].
Legen Sie 3 Personen an.
| Musterlösung 9.1 |
person = struct( 'Name', 'Hannah', ...
'Telnr', '0815', ...
'Strasse', 'Hamb. Str.', ...
'Hausnr', 75,...
'Postleitzahl',59555,...
'Ort','Lippstadt',...
'Geburtsdatum',[1,1,1920] );
|
Aufgabe 9.2 Strukturen und Klassen
Schreiben wir eine Funktion getPerson die nacheinander Daten für mehrere Personen einliest, diesmal nur mit den beiden Feldern Name und Telnr. In einer
Schleife werden die Werte für diese Felder von der Tastatur eingelesen, und zwar nacheinander für das erste Element person(n), n = 1, bis zur übergebenen Maximalzahl
num_pers, im Beispielaufruf gleich 3. Das so erzeugte struct-Array person wird von der Funktion zurückgegeben.
| Musterlösung 9.2 |
%
% pers = Array mit Elementen der Klasse Person
%
function pers = getPerson( anz )
for( n = 1:anz ) % Einleseschleife: von 1 bis anz
name = input( 'Name: ', 's' ); % als Text
telnr = input( 'Tel.-Nr.: ' ); % als Zahl
str = input( 'Strasse: ', 's' ); % als Text
hnr = input( 'Haus.-Nr.: ' ); % als Zahl
plz = input( 'PLZ: ' ); % als Zahl
ort = input( 'Ort: ', 's' ); % als Text
% neues n-tes Objekt von Person
pers(n) = Person( name, telnr, str, hnr, plz, ort );
end
end
|
Aufgabe 9.3 Strukturen und Klassen
Stellen Sie den Struct Person auf eine Klasse um. Schreiben Sie die Funktionen printPerson, welche die Übergabeklasse Person im Command Window ausgibt.
| Musterlösung 9.3 |
%
% pers = Array mit Elementen der Klasse Person
%
function printPerson( pers )
anz = length( pers ); % Zahl der Personen
fprintf( '\nMeine Freunde : \n' ); % Überschrift
fprintf( '---------------\n' );
for( n = 1:anz ) % Ausgabeschleife
pers(n).print;
end
end
classdef Person % Eigenschaften properties name = ; telnr = 0; end % properties % Methoden methods % Konstruktor function o = Person( name, telnr ) o.name = name; o.telnr = telnr; end function print( o ) fprintf( 'Name: %s, Tel.Nr.: %g.\n', ... o.name, o.telnr ); end function info( o ) fprintf( 'Telefonnummer %g gehört zu %s.\n', ... o.telnr, o.name ); end end % methods end % classdef |
Aufgabe 9.4 Strukturen und Klassen
| Musterlösung 9.3 |
Aufgabe 9.5 Strukturen und Klassen
| Musterlösung 9.5 |
→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe25