Hi. Ich bringe mir derzeit anhand eines Buches C++ bei. Jetzt allerdings habe ich ein problem, dass sih in folgendem Quellcode versteckt: www.garados.gmxhome.de/help.txt es geht um die zeilen, die mit "Point" Beginnen. z.B.: Point GetUpperLeft() const { return itsUpperLeft; }
was hat es dort immer mit "Point" auf sich? Steht es im Zusammenhang mit der Klasse point? Ich kann jedoch nirgendwo sehen, dass eine Instanz erzeugt worden ist. Auch wenn ich meine Frage evtl lächerlich findet, ist dies ernst gemeint. Ich bin halt noch ein blutiger Anfänger.
Die Klasse Rechteck hat 4 Point Objekte als private Attribute um das Rechteck darzustellen. Sinnvoller wäre es sicherlich einen Punkt zu haben und zusätzlich die Länge und Breite des Rechtecks zu halten aber das ist ne andere Sache.... Da die privaten Attribute von ausserhalb nicht ansprechbar sind(und auch nicht sein sollen!) stellt die Klasse Getter-Methoden zur Verfügung um an die Werte der Attribute zu kommen. Der Rückgabewert dieser Methoden ist dann ein Objekt der Klasse Point,welches wiederum eine Kopie(!) von einem der Attribut-Points ist. Dann sind da noch die Setter-Methoden.Diese dienen dazu die Werte der privaten Attribute zu setzen. Falls du dich fragst wozu der ganze Aufwand gemacht wird,anstatt die Attribute einfach public zu machen,dann stell dir einfach vor dass die Punkte nur in einem bestimmten Bereich liegen dürfen. Wenn die Attribute dann public wären könnte aber jeder von "aussen" den Punkten beliebige Werte zuweisen.Es läge also in der Hand des Benutzers der Klasse dafür zu sorgen dass die Punkte nur mit "sinnvollen" Werten belegt werden.Das ist aber eine Verletzung der Kapselung der Klasse.Die Klasse selber ist dafür zuständig dass die Attribute von konkreten Instanzen zu jedem Zeitpunkt nur sinnvolle Werte enthalten. Um bei dem Beispiel zu bleiben könnten also die Setter-Methoden prüfen ob der als Parameter übergebene Punkt einen gültigen Wert repräsentiert und diesen dann entweder dem Attribut zuweisen oder halt nicht. Ich hoffe das ist so halbwegs klar beschrieben? Man tendiert im Laufe der Zeit dazu bestimmte Sachverhalte als "selbstverständlich" anzusehen.
MfG Spacelord -- .....Ich mach jetzt nämlich mein Jodeldiplom.Dann hab ich endlich was Eigenes.
also class Point definiert eine Klasse namens Point. und Point GetUpperLeft()... ist eine Funktionsdeklaration (und da die implemenation dahinter kommt auch -definition) die als Rückgabewert eine Instanz von der Klasse Point liefert.
Bearbeitung:
verdammt zu langsam
-- class God : public ChuckNorris { };Dieser Post wurde am 04.09.2005 um 15:03 Uhr von FloSoft editiert.
Ich glaube ich hab es verstanden:-) Danke an Spacelord & FloSoft Bye, bis zum nächstem Problem Dieser Post wurde am 04.09.2005 um 17:13 Uhr von Whinegum editiert.