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

Beitrag lesen

Hi,

danke dir, die Erklaerungen waren sehr aufschlussreich.

Ich habe jetzt mal ein Klassendiagramm dazu entworfen:

+--------------------------------------+
|          Rechner                     |
+--------------------------------------+
| - zahl1:float                        |
| - zahl2:float                        |
| - rechenart:char                     |
| - ergebnis: float                    |
| - displayRef:AbstractDisplay         |
+--------------------------------------+
| + setZahl1(void):void                |
| + setZahl2(void):void                |
| + berechne(void):void                |
| + schreibeErg(void):void             |
| + setDisplay(AbstractDisplay):void   |
+--------------------------------------+
              | 1
              |
              v 1
+---------------------------+
|     AbstractDisplay       |
+---------------------------+
|                           |
+---------------------------+
| + anzeigen(){abstract}    |
+---------------------------+
            ^
           /_\             |
            +----------------------------------+
            |                                  |
+---------------------------+  +---------------------------------+
|       LedDisplay          |  |       TextDisplay               |
+---------------------------+  +---------------------------------+
|                           |  | - color:farbe                   |
+---------------------------+  +---------------------------------+
| + anzeigen(float):void    |  | + anzeigen(float):void          |
+---------------------------+  | + setSchriftfarbe(farbe):void   |
                               +---------------------------------+

Hierzu noch eine Frage:
Geht das so ohne weiteres, dass die eine Kind-Klasse andere Attribute und Methoden hat als die andere? Muss ich dann noch was in der Eltern-Klasse ergaenzen?
Nach meinem Kenntnisstand muesste es eigentlich so gehen, oder?

Macht es jetzt Sinn, dieses Klassendiagramm nachzuprogrammieren, oder ist noch irgendwas drin, was so nicht sein sollte?

Häufig wird die konkrete Instantiierung dann noch mittels einer Fabrikmethode (Stichwort Factory Method Pattern) ausgelagert, aber das Thema Design Patterns würde jetzt zu weit führen. Falls du dich weiter dafür interessierst, rate ich dir, dir ein gutes Buch über Software-Design zu suchen. Das Thema ist weitaus umfangreicher, als in diesem Thread bisher behandelt.

Mache ich, wenn die Zeit gekommen ist.

mfG,
steckl