Anfängerhilfe
-
Hallo zusammen,
ich möchte die objektorientiete Programmierung mittels C++ lernen.
Um dieses richtig und effektiv zu lernen muss ich mir selber etwas ausdenken was ich dann nachprogrammiere. zB ein Spiel wo jeder Kämper entsprechende Stärke und leben hat. So weit so gut. Die Grundlagen verstehen ich, sprich Schleifen, Ein- bzw. Ausgabe, wofür Funktionen da sind. Allerdings wüsste ich jetzt nicht wie ich beginnen sollte. Es gibt so viel was man verwenden kann, static, const, struct, enum, header Datei, Klassen...Wie bekomme ich das am besten hin zu lernen was ich wann benutzen musst und wann was auch überhaupt notwendig ist. Ein Studienkollege sagt "einfach anfangen und schauen wo du hängen bleibst" Er hat ja im Grunde Recht, nur wenn ich gar nicht weiß was ich benötige ist das so eine Sache.
Könnt ihr mir da etwas weiterhelfen woher ich weiß worauf ich achten muss?
Ein Buch lesen ist auch ne Idee, nur ich muss es dabei ja anwenden um zu verstehen wofür ich was brauche und auch Erfolge sehen damit mir das Spaß macht.
LG
-
Ein paar Tipps:
1. Buch! Und zwar ein gutes. Siehe Links in meiner Signatur.
2. Den Thread "Linkliste für Neulinge" ansehen, die Sprachreferenzen bookmarken.
3. Versuchen, auftauchende Probleme mit diesen Hilfsmitteln erst einmal selbständig zu lösen. So erwirbt man die wichtige Problemlösungskompetenz.
4. Ich würde nicht sofort ein Spiel versuchen. Spiele sind komplex, verleiten oft zu schlechtem Design und anfangs ist das Resultat dann hinterher trotzdem frustrierend schlecht. Anfängerbücher sollten dir überschaubare Problemstellungen geben, die man auch mit einfachen Mitteln zufriedenstellend (oder sogar richtig gut, wenn die Bücher gut sind) lösen kann und die trotzdem einigermaßen interessant sind.
5. Können kommt durch Übung. Siehe Punkt 4. Weitere Möglichkeiten für Übungen sind zum Beispiel, indem du versuchst, hier im Forum anderen zu helfen, dann bekommst du hinterher oft auch zu deiner Hilfestellung nochmal Hilfestellung von jemand erfahrenem, wie es noch besser ginge.
6. Wenn du noch überhaupt keinen Plan hast, wie du dein Spiel angehen sollst, dann fehlt dir Erfahrung, siehe oben. Das ist auch kein Wunder, deiner Selbstbeschreibung nach stehst du noch ganz am Anfang und kannst noch nicht viel Erfahrung haben. Wenn du viele kleine Übungen gemacht hast, bist du sehr bald ganz von alleine in der Lage, Probleme zu lösen, indem du sie in kleine Teilprobleme zerlegst, die du dann ganz einfach lösen kannst oder wo du die Lösung schon kennst. Dann hast du auch Erfahrung mit Datenstrukturen und weißt, wie du dein Spiel modellierst.
-
Programmiere Dinge aus der Standardbibliothek nach. z.B. erst qsort aus der C-Bibliothek und dann std::sort, auch um die Unterschiede zu verstehen. Oder std::vector, std::unique_ptr und als Spezialaufgabe (etwas komplizierter) std::shared_ptr und std::make_shared. Das vermittelt dir auch sehr schön das Konzept des "Besitzes" einer Ressource. Die Implementierungen kannst du dann auch gerne hier posten, wir werden dir dann sagen warum sie scheiße sind.

-
Zu 5 kann ich zustimmen, das Helfen im Forum verbessert Stil etc. ungemein!
Und das nicht nur allein vom Antworten verbessern lassen, sondern auch vom Lesen.
Zu 4 muss ich leider auch zustimmen. Spiele verleiten zu schlechtem Design. Doch dank dem Forum bin ich von new/delete, Gott-Klassen, (int) doubleVar, using namespace std in Headern (
), etc. weggekommen.
-
Hmm da sind recht viele Bücher, also den C++ Programmierer habe ich vor mir liegen. Ist ein sehr fettes Buch, ist zwar ganz gut erklärt aber ich benötige einfache Beispielsachen die man Programmieren kann und sich dann durch buch nach und nach durcharbeitet.
-
Also nochmal
ich glaube ich habe micht etwas kompliziert oder unverständlcih ausgedrückt.
Wie cookie z.B. sagt, Unterschiede erkennen. Aber dafür braucht man ja entsprechende Aufgaben wodurch man das lernt. Ich muss ja irgendeinen Sinn haben das programmieren zu wollen und mich selbst anzutreiben.
BeiPHP könnte man zB sagen, "Schreibe ein Gästebuch" dann google ich, was ich dafür brauche und wie ich das umsetze. Schaue mir beispiele an usw.
Also mein Problem ist einfach, ich weiß nicht wie ich beginnen soll...
-
Wenn es nur das ist...

Schreibe eine einfach verkettete Liste, die jeden beliebigen Typen abspeichern kann.
Für das Interface kannst du dich an std::forward_list orientieren.
-
Ähm
Nein eher meinte ich damit, dass mir das durcharbeiten eines Buches nichts bringt wenn ich es nicht anwende. Um es anwenden zu wollen brauch ich Ideen für Beispiele die ich auch verstehe 
-
Ach so.
OK, was kannst du denn?
-
Was mir erstal fehlt ist zu verstehen was alles in eine Headerdatei kommt, wofür const gut ist und wann man dieses verwenden muss, was static macht, public, protected und private, konstruktor destruktor, klassenaufbau, referenzen... denke wenn ich das anzuwenden weiß bin ich einiges weiter.
Also Standards wie Variablen, Schleifen, Ein-Ausgabe ist kein Thema, sobal die Objektorientierung dazukommt hapert es. Mir fehlt einfach jemand der mir sagt "Tu das, dann das dann das..."

Ich weiß ich bin ein schwieriger Fall
-
Steht sowas nicht in deinem Lehrbuch?
Wenn nein, such dir ein anderes.
-
doch doch, nur ich weiß ja nicht ob das das ist was gefordert ist oder ob man das noch optimieren könnte, es gibt keine Lösungen dazu

-
Hm, wenn ich mir deine Liste so ansehe, sind das im Prinzip die meisten der Sachen, die in C++ neu sind.
Schaue dir mal das hier an: www.rz.rwth-aachen.de/global/show_document.asp?id=aaaaaaaaaaaviej
Das behandelt alles, was in C++ neu ist: Referenzen, Namespaces, Klassen, Vererbung, Templates, Operatorüberladung, ausführliche STL-Dokumentation, iostreams, valarrays, std::strings, etc.
Die Beispiele zur Objektorientierung sind finde ich anschaulich erklärt. Hat mir sehr geholfen.