Zitat von
alcaeus:
Dumme Frage: sollte es dem Auto eigentlich nicht egal sein, welches Geschlecht der Fahrer hat? Geschlecht also ab in TFahrer, TMann und TFrau fliegen raus (beide sind so wie sie da sind sinnlos), und wenn du TAuto erstellst, dann gib dem Ding halt noch einen Param in Constructor mit, um zu sagen welches Geschlecht der Fahrer hat. Der Constructor gibt den Bool dann an den Constructor von TFahrer weiter, und spaeter hat das Auto nicht mehr zu wissen, welches Geschlecht der Fahrer hat, fertig.
So hab ich das ja gemacht
Die Fallunterscheidung weiblich oder männlich mach ich nur ein einziges mal: nämlich bei der Erzeugung des Objekts Auto (Bool-Parameter wird dem Konstruktor übergeben). Die beiden Klassen TMann und TFrau verwende ich nur, um die Vererbungsmechanismen besser erklären zu könen (tatsächlich sind sie sinnlos, weil vollkommen identisch).
Die Funktion Auto.Info liefert mir später dann einen "Informationsstring" zurück:
Delphi-Quellcode:
function TAuto.Info: string; //Funktion in UAuto
result := 'Auto [ Fahrer('+[b]Fahrer.Info[/b]+'), ' //Informationen von TFahrer holen
+inttostr(Sitze)+' Sitze, '+inttostr(Gewicht)+' kg ]';
Damit wird eine nochmalige Fallunterscheidung unnötig, da TMann und TFrau die virtuellen Methoden von
TFahrer "überscheiben".
Zitat von
alcaeus:
Allerdings ist es schon eigenartig, einen Fahrer zu erstellen sobald man das Auto erstellt. IMO sollte das Auto ein Array von [0..Sitze-1] von TPerson haben, wobei Passagiere[0] automatisch der Fahrer ist. Sobald eine Person einsteigt setzt man das Element fuer den Sitz auf das entsprechende TPerson-Objekt, sobald jemand aussteigt gehts wieder auf nil. Fertig. So macht das ja auch keinen Sinn...ich weiss zwar wieviele Sitze ein Auto hat, aber ich hab nur Platz fuer einen Fahrer, der gar nicht aussteigen kann
Stimmt
mfg
devnull