Modellierung und Simulation - Objektorientierte Programmierung: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
|}
|}


=Aufgabe 9.1=
=Aufgabe 9.1 Strukturen und Klassen=
Erweitern Sie den struct person durch weitere Komponenten, z. B.:
Erstellen Sie den <code>struct person</code> mit den Datenfeldern:
* Strasse,
* Strasse,
* Hausnummer,
* Hausnummer,
Zeile 13: Zeile 13:
* Ort,
* Ort,
* Geburtsdatum [Array aus 3 Zahlen].
* Geburtsdatum [Array aus 3 Zahlen].
Legen Sie 3 Personen an.
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung 9.1&thinsp;</strong>
| <strong>Musterlösung 9.1&thinsp;</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&thinsp;</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&thinsp;</strong>
|-
|-
| <source line lang="matlab" style="font-size:medium">%
| <source line lang="matlab" style="font-size:medium">%
>> p = Person( 'Hannah', '0815', 'Weg', 5, 22222, 'HH' )
pers = Array mit Elementen der Klasse Person
%  >> whos p
%
%
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
classdef Person
 
% Eigenschaften
  properties
properties
    name = '';
name = '';
    telnr = 0;
telnr = 0;
    strasse = '';
end % properties
    hausnr = 1;
% Methoden
    plz = 1;
methods
    ort = '';
% Konstruktor
  end % properties
function o = Person( name, telnr )
 
o.name = name;
  methods  
o.telnr = telnr;
    function o = Person( name, telnr, str, hnr, plz, ort )
end
      o.name = name;
function print( o )
      o.telnr = telnr;  
fprintf( 'Name: %s, Tel.Nr.: %g.\n', ...
      o.strasse = str;
o.name, o.telnr );
      o.hausnr = hnr;
end
      o.plz = plz;
function info( o )
      o.ort = ort;
fprintf( 'Telefonnummer %g gehört zu %s.\n', ...
    end
o.telnr, o.name );
   
end
    function print( o )
end % methods
      fprintf( 'Name: %s, Tel.Nr.: %g,\n', ...
end % classdef
              o.name, o.telnr );
|}
      fprintf( 'wohnt: %s %g, %g %s.\n', ...
 
              o.strasse, o.hausnr, o.plz, o.ort );
=Aufgabe 9.4 Strukturen und Klassen=
    end
 
   
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
    function info( o )
| <strong>Musterlösung 9.3&thinsp;</strong>
      fprintf( 'Telefonnummer %g gehört zu %s.\n', ...
|-
              o.telnr, o.name );
| <source line lang="matlab" style="font-size:medium">
    end
</source>
 
|}
  end % methods
=Aufgabe 9.5 Strukturen und Klassen=
 
 
end % classdef
{| role="presentation" class="wikitable mw-collapsible mw-collapsed"
| <strong>Musterlösung 9.5&thinsp;</strong>
|-
| <source line lang="matlab" style="font-size:medium">
</source>
</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.

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.

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.

Aufgabe 9.4 Strukturen und Klassen

Aufgabe 9.5 Strukturen und Klassen


→ zurück zum Hauptartikel: BSE Modellierung und Simulation - SoSe25