Ein Programm mit Problemen

Beispielprogramm: MASTOFFN.CPP

Das Programm MASTOFFN.CPP ist ein Beispiel, das einige ernsthafte Probleme aufzeigt, die wir dann im nächsten Beispielprogramm mithilfe des Zugriffsschutzes überwinden werden.

Wir deklarieren zwei Strukturen, eine für ein Rechteck, die andere für einen Masten. Die einzelnen Datenfelder sollten klar sein, mit Ausnahme der Tiefe des Fahnenmasten, wobei es sich darum handelt, wie tief er im Boden verankert ist. Die gesamte Länge des Fahnenmasten ergibt sich demnach aus der Laenge plus der Tiefe.

Abb. 5-4Bild 5-4 zeigt den Speicher für dieses Programm nach dem Abarbeiten der Zeile 34. Mit Deiner Erfahrung im Programmieren in ANSI-C sollten beim Verständnis dieses Programmes keinerlei Probleme auftreten. Einzig das Ergebnis der Zeile 40, wo wir die Hoehe des Quadrat mit der Breite der Box multiplizieren, wird Dich etwas verwundern. Das ist in ANSI-C genauso wie in C++ erlaubt, hat aber keine "weltliche" Bedeutung und keinen Sinn, da die Daten von zwei verschiedenen Elementen stammen. So ist das Ergebnis von Zeile 42 noch sinnloser, denn das Produkt der Hoehe des Quadrat und der Tiefe des Fahnenmast hat absolut keine Bedeutung in irgendeinem denkbaren physikalischen System. In einem Programm, das so einfach ist wie dieses, ist der Fehler offensichtlich, in einem größeren Programm schleichen sich solche Fehler aber sehr leicht ein und sind oft nur sehr mühsam wieder zu finden.

Wäre es nicht schön, wenn wir einen Weg fänden, solche dummen Fehler in großen Industrieprogrammen zu vermeiden? Hätten wir ein gutes Programm, das genau definiert, welche Dinge wir mit einem Rechteck anstellen können und ein zweites Programm, das genau definiert, was wir mit einem Mast tun können und wären die Daten vor äußerem Zugriff geschützt, dann könnten wir solche Dinge verhindern. Wenn diese Elemente miteinander arbeiten sollen, können wir sie nicht in einzelnen Programmen verwirklichen, wohl aber können wir sie auf Klassen aufteilen, um unser Ziel zu erreichen.

Es wird Dich nicht überraschen, daß unser nächstes Programm genau das für uns tun wird und noch dazu in einer eleganten Art und Weise. Bevor wir aber weitergehen, solltest Du dieses Programm kompilieren und laufen lassen und Dich an den abstrusen Ergebnissen erfreuen.

(weiter...)

[ ist: ]