C++ erste schritte

Guten Tah liebe Habo Community,

ich bin noch in den Anfängen von C++. Nun habe ich die unten stehende Aufgabe bekommen. Habe Sie auch nach meiner Möglichkeit gelöst.

Warum ich mich an euch wende. Ich würde gerne jemanden bitten der die Zeit und vielleicht auch etwas langeweile hat die aufgaben vielleicht mal als musterlösung zu lösen. Damit ich einen vergleich habe ob mein Informationen die ich kenne Richtig sind.

Quell Code

class personal
{public: AnsiString name;};

class chef: public personal
{public: personal sekretaerin;'};

chef fachschulchef, berufsschulchef;

void fastcall TForml::ButtonlClick(TObject *Sender)
{
fachschulchef.name=Edit1->Text;
fachschulchef.sekretaerin.name=Edit2->Text;
berufsschulchef.name=Edit3->Text;

if (Edit4->Text == Edit2->Text)
{berufsschulchef.sekretaerin=fachschulchef.sekretaerin;}
else
{berufsschulchef.sekretaerin.name=Edit4->Text;}
}

1. Die folgende Zeile setzt die Klasse "chef' auf zwei verschiedene Weisen mit der Klasse "personal" in Beziehung. Wie lauten die Fachausdrücke für diese beiden Beziehungen?
class chef: public personal {public: personal sekretaerin;};
2. Nennen Sie alle Attribute des Objekts "fachschulchef'.

3. Welche Datentypen sind an den beiden Zuweisungen in der if-Anweisung jeweils beteiligt?

4. Interpretieren Sie die if-Anweisung. Welche Attributwerte ändern sich je nachdem, welcher Zweig der if-Anweisung ausgeführt wird?

5. Vergleichen Sie das obige Programm mit dem folgenden und erklären Sie alle Unterschiede.
class personal {public: AnsiString name;};

class chef: public personal
{public: personal * sekretaerin;};

chef fachschulchef, berufsschulchef;

void _fastcall TForml::ButtonlClick(TObject *Sender)
{
fachschulchef.name=Edit1->Text;
fachschulchef.sekretaerin = new personal; fachschulchef.sekretaerin->name=Edit2->Text;
berufsschulchef.name=Edit3->Text;

if (Edit4->Text == Edit2->Text)
{berufsschulchef.sekretaerin=fachschulchef.sekretaerin;}

else {berufsschulchef.sekretaerin=new personal;
berufsschulchef.sekretaerin->name=Edit4->Text;}

Ich schreibe hier unten mal meine Lösungen hin. Ich möchte ja nicht das ihr denkt ich hab da nichts zu gemacht :)

Zu 1.) Vererbung, Assoziation

Zu 2.) Attribute: name

Zu 3.) AnsiString (Attribut), sekretaerin (Objekt)

Zu 4.) if .... Wird das Objekt fachschulchef.sekretaerin auf as objekt berufsschulchef.sekretaerin gewisen, dadurch haben beide sekretaerinen den gleichen Namen. (Also wird kein Attribut verändert da das Attribut name ja gleich bleibt. Nur das Objekt auf den gleichen namen "verwiesen" wird.)

else ... Hier wird der Attributwert name über berufsschulchef.sekretaerin.name geändert und erhält so einen neuen "Wert"

Zu 5.) Ich habe hier nur den Unterschied des Pointers gefunden. So kann man mit ... = new personal; eine neue person anlegen und hat für jede sekretaerin einen neuen "speicher". (???)
 
1.) Vererbung Komposition
2.) name, sekretaerin
3.) AnsiString, personal (sekräterin)
4.) if -> Attribut name und sekräterin ändert sich -> operator=(const &xyz) wird aufgerufen, @name weil das Objekt kopiert wird
else -> Attribut name ändert sich
5.) Pointer personal -> 1. Methode -> sekräterin = Stack, 2.Methode sekrätering = Heap :)
 
Zurück
Oben