Matthias Huttar: C++: wie mache ich richtiges OO-Design?

Beitrag lesen

Hi Steckl!
Also ich denke, wie man "richtig" Objektorientiert Programmiert ist eine Stil und eine Glaubensfrage.

Hier: http://www.hyperkommunikation.ch/lexikon/objektorientierte_programmierung.htm
findest du (fast ganz am Ende der Seite, unter "Objekt-orientierte Analyse und Design" eine meiner meinung nach praktikable ausgangsbasis.

Ich weiß leider nicht mehr, wer dieses Modell erfunden hat. Kann sein, dass es Donald Knuth war?

Die Idee dahinter ist, dass du das Verhalten von dem was du programmieren willst erst mal (mündlich oder schriftlich) beschreibst. Aus dieser Beschreibung lässt sich dann relativ einfach ein OO Diagramm ableiten.

(Etwas übertriebenes) Beispiel:
Ein TASCHENRECHNER hat ein EINGABEFELD und ein DISPLAY. Auf dem EINGABEFELD kann ich die ERSTE ZAHL EINGEBEN und die ZWEITE ZAHL EINGEBEN sowie eine RECHENOPERATION FESTLEGEN (+,-,/,*). Wenn ich auf die ERGEBNIS TASTE DRÜCKE zeigt das DISPLAY das ERGEBNIS AN.

Die wichtigen wörter habe ich hier hervorgehoben.
Prinzipiell hast du drei Klassen: Taschenrechner, Eingabefeld und Display. Taschenrechner ist sozusagen das "Überkonstrukt" und wird als Mittler zwischen Display und Eingabefeld fungieren.
Das Eingabefeld hat drei Methoden: setZahl1(int), setZahl2(int) und setRechenmethode(char). (Anmerkung: Eventuell könntest du die Rechenmethode selbst nochmal zu ner Klasse machen, die eine Methode int calculateResult(int, int) hat und dafür sorgt, dass jede Rechenoperation für den Taschenrechner immer identisch ist, aber das wäre für dieses Beispiel nun *wirklich* zu aufwändig)
Des weiteren gibt es noch die Methode calculateResult(), die das Ergebnis ausrechnet und die Methode showResult(int) vom Display, dass zu dem Taschenrechner gehört, zu dem auch das Eingabefeld gehört, aufruft.

Das Problem beim Objektorientierten Design ist, dass es eigentlich so intuitiv ist, dass man gerade anfangs davor zurückschreckt! ;)

Liebe Grüße,
Matthias