OOP3: OOP vs. Herkömmliche Programmiertechniken

Die Methode, nach der klassischerweise Software entwickelt wird, ist die sog. Top-down-Methode. Die Gesamtfunktion des Programms wird in Teilfunktionen und diese in weitere Unterfunktionen zerlegt ( - falls halbwegs vernünftig programmiert wird). Diese Programmiermethode eignet sich gut, wenn die Problemstellung solch einer Modularisierung entgegenkommt. Die Teilfunktionen sind infolge der hierarchischen Struktur sehr stark an das Gesamtsystem gebunden. Änderungen in einer Stufe der Hierarchie ziehen dann oft Änderungen in anderen Stufen mit sich.

Ein Programm, das sich im Einsatz bewähren muß, muß ständig gewartet werden. Aus den oben genannten Gründen ist Top-Down-Programmiertechnik nur beschränkt pflegeleicht. Änderung in einer Modul-Ebene ziehen oft Änderung in einer anderen Ebene mit sich. Deswegen sind derartige Module oft auch nur schwer in anderen Programm-Kontexten wiederverwertbar.

Beim objektorientierten Programmansatz handelt es sich dagegen eher um eine gleichberechtigt-interaktive Architektur, bei der relativ selbständige Strukturen aus ihren programm-spezifischen Bezügen gelöst, erweitert und in anderen Bezügen weiter verwendet werden können. Durch Vererbung, späte Bindung an statische bzw. dynamische Objekte, Überschreiben virtueller Methoden lassen sich solche Objekte gut "pflegen" und in anderen Programmzusammenhängen wiederverwerten. Unter diesem Gesichtspunkt muß man vor dem Entwurf folgende Fragen untersuchen:

Das Programm fahrzeug4 versucht diese Ideen zu demonstrieren. Die Oberklasse TFahrzeug ist in einer separaten Unit (fahrz_u) implementiert, von der nur die Schnittstellen (Methoden) bekannt sind.

public

constructor Init(g:integer;ft:string);

function GetGewicht:integer;

function GetTyp : String;

procedure ShowData;virtual;

destructor schluss;

In der Oberklasse sind die Methoden implementiert, die in allen Instanzen der untergeordneten Klassen benötigt werden:

Für den Benutzer ist die Implementierung der einzelnen Methoden völlig unwichtig. So kann er z.B. nicht auf (als private deklarierten) internen Daten direkt sondern nur mittels der Methoden GetGewicht und GetTyp zugreifen. Allerdings hat er jede Freiheit weitere abgeleitete Objektklassen zu implementieren.

Aufgaben:

Schreibe das vorliegende Programm fahrzeuge2.pas  so um, dass

1. nicht mehr direkt sondern nur durch entsprechende Methoden auf interne Zustandsvariablen zugegriffen werden kann. (Impelementiere : GetTyp, GetGewicht usw.)

2. dem Construcor Tfahrzeug bereits Gewicht und FahrzeugTyp übergeben wird

3. die gesamte Klasse Tfahrzeug in einer separaten Unit. fahr implementiert wird, die dann später durch uses fahr in das auptprogramm eingebunden werden kann.

(Lösung: fahrzeuge3.pas)

Zurück zu Delphi

© Dietrich Praclik