Fange an - Habe fragen :-)
-
hallo
ich lese grad in einem buch und bin nun in der mitte angekommen. da geht es nun um Klassen, Vererbung etc. sehe ich das richtig das wenn man von Vererbung spricht, dies heisst, von einer Klasse ableiten? und spricht man von Mehrfachvererbung, so heisst dies, das man von mehreren Klassen ableitet?
Dann hab ich noch eine frage. Ist es normal das man anfangs probleme mit der philosophy von Zeigern und Referenzen hat? Also ich hab da einiges über Zeiger und referenzen gelesen aber so ganz ist mir das noch nicht klar. Ist sowas normal das man da ein bisschen zu knabbern hat, sowie allgemein eigentlich was die Klasse angeht? Oder geht das nur mir so?
Hab zwar nun ein bisschen was über die Klasse gelernt. Vorallem eben die Vererbung etc.
-
Hier auch gleich ein Beispiel. Habe ich das mit dem Vererben und Mehrfachvererben richtig verstanden bzw. gemacht?
class Haupt { public: int Zahl1; }; class Haupt2 { public: int Zahl2; }; class Vererben : public Haupt { //.... }; class MehrfachVererben : public Haupt, public Haupt2 { //.... };
-
TaxTox schrieb:
ich lese grad in einem buch und bin nun in der mitte angekommen. da geht es nun um Klassen, Vererbung etc. sehe ich das richtig das wenn man von Vererbung spricht, dies heisst, von einer Klasse ableiten? und spricht man von Mehrfachvererbung, so heisst dies, das man von mehreren Klassen ableitet?
ja.
du wirst dich daran gewoehnen muessen, dass es mehrere namen fuer ein und das selbe gibt
Dann hab ich noch eine frage. Ist es normal das man anfangs probleme mit der philosophy von Zeigern und Referenzen hat?
das ist ganz natuerlich.
referenzen solltenr recht schnell klar werden, aber um zeiger wirklich zu verstehen, muss man siew ohl anwenden (was in C++ aber nicht allzuoft passieren sollte)dein beispiel sieht korrekt aus.
-
Zeiger:
http://www.henkessoft.de/arrays_pointer.htmKlasse:
http://home.arcor.de/cpp_kurs/cpp/le09/k3_01_01.htmAnmerkung:
Aufgrund des "information hiding" sollte man Attribute einer Klasse als "private" festlegen, damit kein Unfug damit getrieben werden und leicht eine Änderung nur(!) in der Klasse vorgenommen werden kann.Beispiel: Du hast eine Klasse Teilchen mit dem public Attribut _impuls.
Jetzt könntest Du im Hauptprogramm Folgendes machen:Teilchen a;
cout << a._impuls << endl;Damit hast Du dieses Attribut ins Hauptprogramm verlagert. Jetzt stelle Dir vor, Du änderst Deine Klasse ab. Du streichst _impuls und führst stattdessen _masse und _geschwindigkeit ein. Dann musst Du das Hauptprogramm ändern.
Daher sollte man _impuls private festlegen, denn nun benötigt man eine Methode getImpuls(...){...; return _impuls;}
Im Hauptprogramm steht nun:
cout << a.getImpuls(...) << endl;Bei Änderung der Klasse wird nun einfach nur(!) die Methode abgeändert:
getImpuls(...){...; return _masse_geschwindigkeit;* }Das ist Kapselung (information hiding) und sorgt für leichte Wartbarkeit einzelner Teile, wie z.B. einer speziellen Klasse Teilchen.