steckl: C++: wie mache ich richtiges OO-Design?

Beitrag lesen

Hi,

aber hier ist es doch klar, ein Rechner "hat ein" Display. Und hat ein bedeutet i.d.R. es ist eine Eigenschaft des Objektes (im gegensatz zu "ist ein" - ein GrünesDisplay ist ein AbstraktesDisplay).

Heisst das, ich brauche im Rechner-Objekt nur eine Referenz vom Typ der Eltern-Klasse (AbstractDisplay) und kann dann darueber auf das entsprechende Display zugreifen, egal welcher Kind-Klasse es angehoert?
Das war mir neu. Ich bin davon ausgegangen, dass das Attribut mit der Referenz immer den konkreten Typ des Elements haben muss, auf den es verweist.

Wenn ich das jetzt richtig verstanden habe brauche ich also nur eine gerichtete Assoziation von Rechner auf AbstractDisplay.

Wie sollte dann die setDisplay-Methode aufgerufen werden?
Entweder mit einem vorher angelegten Display-Objekt, oder ohne Parameter, so dass sie das Objekt selbst anlegt?

Das dürfte die überlassen sein. Wenn du mit setDisplay eine "Factory" aufrufst, also zur Laufzeit das Display ändern willst, ist das vielleicht elegant, aber ob es wirklich nötig ist musst du dir überlegen.

Ich moechte bei der Erzeugung des Rechners aussuchen koennen, welches Display er hat. Nachher kann das Display dann immer gleich bleiben.
Also muesste ich in Main erst ein entsprechendes Display-Objekt erzeugen und dieses dann an Rechner (entweder im Konstruktor, oder mit einer set-Methode) weitergeben, oder?

Wieso möchtest du vom Rechner auf das Display schliessen? Das konkrete Display ist dem Rechner egal, der Rechner hat ein Display und ruft dessen Anzeige Funktion auf, fertig. Was dort konkret passiert ist Rechner egal.

Da hab ich mich falsch ausgedrueckt. Ich meinte nicht auf das Display "schliessen" sondern "zugreifen". Aber das hat sich ja eh gerade geklaert.

mfG,
steckl