Anfänger in Sachen OOP
-
Hallo, was OOP angeht bin ich leider noch sehr unerfahren, würde mich trotzdem gerne weiterbilden da es anscheind wichtig ist und man ohne OOP nicht mehr so viel reissen kann

Ich lese aber fast überall Sätze wie[...]den meisten Programmierern die OOP beim ersten Kontakt erhebliche Probleme bereitet[...]
Habe jetzt also begonnen in einem Tutorial, das ich auch schon vorher für die C++ Programmierung benutzt habe das Kapitel der OOP aufzuschlagen.
Grundlegende Begriffe, was macht was, Vorteile usw. im Prinzip - mehr oder weniger - alles klar. Das ganze ist jedoch sehr trocken, d.h. theoretisch!!
Das mag zwar auch wichtig sein und ich habe nichts dagegen (sonst hätte ich es mir nicht freiwillig durchgelesen :)) aber mir fehlt die Praxis. Immerhin heißt es nicht umsonst "Übung macht den Meister".
Nun aber genug drumherumgeschwafelt, kommen wir zum eigentlichen.
#include <iostream.h> #include <string.h> class CBuch { public: char Autor[100]; char Titel[100]; void Ausgabe(); CBuch(char * aAutor, char * aTitel); }; void CBuch::Ausgabe() // Methode { cout << Autor << endl; cout << Titel << endl; } CBuch::CBuch(char * aAutor, char * aTitel) // Konstruktor { strcpy(Autor, aAutor); strcpy(Titel, aTitel); } void main() { CBuch einBuch("Sepp der Depp", "Dummheit hoch neun"); einBuch.Ausgabe(); }1. Sind die 2 Kommentare "richtig" / Sind die Bezeichnungen in den Kommentaren passend und an der richtigen Stelle?
- weitere Fragen folgen dann wenn ich eure Antwort auf (1) hab.Vielen Dank schonmal!!
-
1. Ja
-
Sind die Bezeichnungen in den Kommentaren passend und an der richtigen Stelle?
Passend und an der richtigen Stelle inwiefern? Sie sind insofern "passend und an der richtigen Stelle", als das sie nicht im Wiederspruch zum entsprechenden Code stehen. Unpassend sind sie dagegen insofern, da sie imho sinnlose Sachen dokumentieren, die bereits klar und deutlich vom Code ausgedrückt werden.
Btw: Warum lässt du die Klasse mit C... anfangen? (Ist imho bäh :))
Gruß Caipi
-
Naja wenn man weiß was ein Konstruktor, eine Methode usw. ist (wobei ein Konstruktor ja imho eine ganz spezielle Methode ist?!) dann brauch man das sicherlich nicht nötig, ich hätte auch den entsprechenden Quellcode zitieren und dann fragen "Ist das eine Methode?" bzw. "Ist das der Konstruktor?"
Aber anscheind ist das ja beides richtig, so dass ich gleich mit meinen Fragen fortfahren kann, zunächst sollte ich erwähnen, dass der Code nicht von mir stammt, das C am Anfang eines Klassennamen finde ich auch blöd, steht aber seit eh und je in den Programmen meines Lehrers von daher werde ich einen Teufel tun, das jetzt zu ändern

2. Ich verstehe den Ablauf des Programms (da es eines der ersten OOprogrammierten Programme ist, das ich im Quelltext sehe) leider noch nicht so ganz. Klar weiß ich was ausgegeben wird (brauch das Programm ja nur zu starten) aber so ganz klar ist mir das nicht, warum das jetzt so ist.
Ursprünglic wollte ich jetzt ein paar Zeilen Code zitieren und fragen "Was genau passiert hier?" / "Was ist das hier eigentlich?" aber dann würde ich vermutlich so ziemlich alles zitieren müssen
Wäre also klasse, wenn mir jemand irgendwie - für ganz Dumme wohlgemerkt - erklären würde, wie das Programm dazu kommt, das auszugeben, was es ausgibt!!Wäre super, weiß nur nicht ob ich das erwarten kann und für alle unter euch, die jetzt denken "Der Typ will nur ne Lösung zur Aufgabe 'Was macht das Programm an der und der Stelle'" den muss ich leider enttäuschen. Sollte diese Frage auftauchen, lest euch den ersten Beitrag zum Thema durch: Es geht mir vor allem darum, auch das OOP zu erlernen, egal wie schwer es wird. Ich werde - sofern die Zeit es zulässt (ich gehe immerhin noch zur Schule, zum Sport und habe auch irgendwie noch ein wenig "Freizeit" verdient
) mir auch gerne Tutorials, Bücher und gewisse Threads hier im Forum reinziehen, mir fehlt halt nur das "praktische", darum einfach mal die Bitte an euch, mir das Programm so gut wie möglich zu erklären!!Danke dem der es bis heute abend gemacht hat

MfG
-
Schnittenhainy schrieb:
(wobei ein Konstruktor ja imho eine ganz spezielle Methode ist?!)
Jein. Ist eine stinknormale Methode, die zur Konstruktion des Objekts aufgerufen wird.
2. Ich verstehe den Ablauf des Programms [...] leider noch nicht so ganz. Klar weiß ich was ausgegeben wird [...] aber so ganz klar ist mir das nicht, warum das jetzt so ist.
In main() (die nach Standard-C++ übrigens immer den return-Wert int besitzt) wird mit der Zeile
CBuch einBuch("Sepp der Depp", "Dummheit hoch neun");Ein Objekt namens einBuch vom Typ CBuch definiert und initialisiert. Die Initialisierung erfolgt über den sog. Konstruktor. Der Konstruktor kopiert in deinem Fall die beiden Argumente in die objekt-lokalen Variablen Autor und Titel. Nachdem der Konstruktor abgearbeitet ist, gehts zurück nach main(). Von dort aus wird als nächstes die Methode ausgabe() aufgerufen. Diese hat Zugriff auf die privaten Objektvariablen Autor und Titel und gibt diese aus.
Das wolltest du aber nicht wissen, oder? Wo hast du denn konkret Probleme und Fragen? (Auf konkrete Fragen lässt sich viel leichter eine Antwort geben!).
Da du offenbar noch elementare Probleme mit dem Verständnis der OOP hast, empfehle ich dir ein praxisnahes Tutorial/Buch! Z.B. das Tutorial von Toni (Speziel zum Thema OOP: http://tutorial.schornboeck.net/oop.htm).
Gruß Caipi
-
Caipi schrieb:
Diese gibt die privaten Klassenvariablen Autor und Titel aus.
Objektvariablen.

-
Irgendwie fällt mir das OOP mehr als schwer, kann mich da nicht - wie sonst - reinversetzen und es reicht leider nicht aus einmal kurz auf den Code zu schauen und zu wissen was das Programm macht

char Autor[100]; char Titel[100];<- Variablen vom Typ char mit maximal 99 Zeichen? Oder sind das 2 Arrays?!
Ich hab ja so wenig Ahnung.. Auch wenn ich mir die Tutorials durchlese, irgendwie sind da doch noch mehr Fragen als Antworten
-
Das sind 2 char Arrays, die jeweils 100 chars aufnehmen können. Da man jedoch üblicherweise C-Strings (= char arrays) mit einer 0 terminiert, passen nur 99 Zeichen rein.
-
@interpreter: Jup. Hast natürlich recht. *in-die-Ecke-geh-und-schäm*
@Schnittenhainy: Das hat jetzt aber nichts mehr mit OOP zu tun. Ließ dir einfach mal das Tutorial von Toni durch. Außerdem empfehle ich das Buch "C++ lernen und professionell anwenden" von Ulla Kirch- und Peter Prinz.

Gruß Caipi