Was haben wir damit gemacht? Wir haben das Konzept der Kapselung genutzt, um anschauliche Sinneinheiten - die Objekte - zu bilden. Dabei haben wir einem Objekt verschiedene Eigenschaften zugeordnet, zum einen Elemente, die den Zustand eines Objektes beschreiben, zum anderen Methoden, die Möglichkeiten bieten, das Objekt zu verändern oder andere Effekte auszulösen, hier z.B. das Zeichnen eines graphischen Objektes.
Außerdem haben wir das Konzept der Vererbung genutzt, um nicht jedesmal alle Daten und Funktionen neu angeben zu müssen, bzw. dann bei einer Implementierung auch neu programmieren zu müssen. Damit spart man sich Programmieraufwand und bei entsprechender Nutzung wird der Programmcode übersichtlicher, da weniger Elemente genutzt werden. So werden von den 15 Elementen und Funktionen, die die Klasse Kreis hat, nur drei explizit angegeben.
Dabei ist es vielleicht nicht ganz offensichtlich, warum dazu eine abstrakte Basisklasse benutzt wurde, wo sie doch genau die Eigenschaften hat, die die Klasse Punkt auch hat. Warum sollte man nicht einfach die Klasse Graphikobjekt in Punkt umtaufen und alle anderen von dieser ableiten, man würde damit doch eine Klasse sparen? Zum einen widerspräche das dem Konzept der Vererbung, da ein Rechteck oder ein Kreis sicherlich kein Punkt ist. Doch könnte man natürlich auch diese Interpretation der Vererbung aufgeben, da sie hier ja nicht sinnvoll erscheint.
Doch auch hier ist wie so oft bei OOP der Sinn des Konzeptes erst dann sichtbar, wenn man sich Gedanken zu eventuellen Änderungen macht. Wenn man später Elemente oder Methoden zu der Klasse Punkt ergänzen möchte, da man weitere Eigenschaften eines Punktes modellieren möchte, die aber die anderen Objekte nicht haben sollen, dann ist dies ohne eine abstrakte Basisklasse nicht möglich, da sonst alle Eigenschaften des Punktes an die anderen Klassen vererbt würden. Bei einer sauberen objektorientierten Programmierung mit abstrakter Basisklasse kann man diese zusätzlichen Eigenschaften eines Punktes in die Klasse Punkt eintragen, während Ergänzungen für alle Klassen in die abstrakte Basisklasse Graphikobjekt eingetragen werden können.