Privater Bereich einer Klasse
-
hi
ich hab grad nen kleines oder großes(wer weiss^^) Problem und zwar den privaten Bereich einer Klasse.
class Schiff { public: void beginToFollow(); int hpShip; int pzShip; }; void Schiff::beginToFollow() { //hpShip & pzShip aufrufen,etc.. }Ich weiß nur dass der private nur für die Klasse selber aufrufbar ist, aber verstehen tu ich nix

Eine kleine Erläuterung wäre echt ne große Hilfe

mF*g*
Daniel
-
In der OOP gibt es grob gesagt drei Prinzipien
1. Kapselung
2. Vererbung
3. Polymorphieder Teil mit private fällt in das Prinzip Kapselung. Kapselung bedeutet z. B., dass der Anwender der Klasse möglichst wenige Möglichkeiten hat Daten zu manipulieren, die er nicht direkt manipulieren soll.
Beispiel:
class Mitarbeiter { public: void setGehalt(double gehalt) { InformiereAlleDieDieseGehaltInIhrenBerechungenVerwenden(); m_Gehalt = gehalt; } double getGehalt() { return m_Gehalt; } double m_Gehalt; }Du als Entwickler der Klasse Mitarbeiter denkst jetzt, cool jeder der das Gehalt wissen will ruft einfach die Methode getGehalt auf. Oder wenn man das Gehalt ändern will ruft man die Methode setGehalt auf.
Blöd nur das der Anwender der Klasse das vielleicht gar nicht weiß und das Gehalt wie folgt setzt:Mitarbeiter Maier; Maier.m_Gehalt = 2000.0;Da das Gehalt nicht mit setGehalt aufgerufen wurde, wird verhindert das die Methode InformiereAlleDieDieseGehaltInIhrenBerechungenVerwenden() aufgerufen wird. Für den Anwender der Klasse ist es auch unwichtig zu wissen, ob diese Methode aufgerufen wird, nur für die Funktionsweise der Klasse Mitarbeiter ist es nicht unwichtig, da diese z. B. die Aufgabe haben könnte bei Änderung des Gehalts alle anderen Objekte, die das Gehalt in ihre Berechnungen verwenden, zu informieren, das sich das Gehalt verändert hat. Das ist aber für den Benutzer der Klasse Mitarbeiter unwichtig. Er will ja nur das Gehalt verändern und geht davon aus das diese Gehalt dann auch verwendet wird.
-
:Daniel: schrieb:
hi
ich hab grad nen kleines oder großes(wer weiss^^) Problem und zwar den privaten Bereich einer Klasse.
class Schiff { public: void beginToFollow(); int hpShip; int pzShip; }; void Schiff::beginToFollow() { //hpShip & pzShip aufrufen,etc.. }Ich weiß nur dass der private nur für die Klasse selber aufrufbar ist, aber verstehen tu ich nix

Eine kleine Erläuterung wäre echt ne große Hilfe

mF*g*
Danielclass Schiff { public: void beginToFollow(); private: int hpShip; int pzShip; }; void Schiff::beginToFollow() { //hpShip & pzShip aufrufen,etc.. }