C++ OOP-Buch?
-
Guten Abend,
ich hab schon beim schreiben von kleineren Programmen sehr große Probleme bezüglich der Strukturierung. Meistens scheitert es deshalb schon sehr oft bei Konsolenanwendungen und das finde ich ziemlich schade. Deshalb habe ich mich dazu entschlossen, ein Buch für die OOP zu kaufen. Da es hier ja schon ziemlich viele Leute gibt die sehr viel Ahnung haben, habe ich zwei Fragen an euch :Ergibt es überhaupt Sinn sich ein Buch dafür zu kaufen, oder lernt man das mit der Zeit?
Wenn es Sinn ergibt, was könnt ihr mir für Bücher empfehlen? Dafür bitte noch weiter lesen ->Am besten wäre, wenn sich das Buch nicht nur um die OOP handelt, sondern auch andere Tipps für die strukturierte Programmierung bietet (Namensräume z.B). Außerdem sollte es dem neuen C++ - Standard entsprechen.
-
Kann schon Sinn machen. Aber ich würde darauf achten, nicht nur allgemeine OOP à la Design-Patterns, sondern auch C++-spezifische Idiome und Techniken (RAII, Copy-and-Swap, Exceptionsicherheit, Type Erasure, ...) zu lernen.
Dazu waren bisher die Bücher Exceptional C++ und Effective C++ recht gut. Soweit ich weiss, wird letzteres gerade neu auf den C++11-Standard ausgelegt. Ansonsten kenne ich mich nicht mit aktueller Literatur aus.
Generell ist Erfahrung auch ein entscheidender Punkt: Vieles kommt tatsächlich mit der Zeit. Wichtiger als der Versuch, von Anfang an alles richtig machen zu wollen, ist die nachträgliche Inspektion abgeschlossener Projekte (was war fragwürdig, wie würdest du was warum anders machen). Besonders bei OOP-Modellierung lernt man vieles automatisch (nach einer Weile sind viele Design Patterns intuitiv verständlich, und man hat sie sogar schon unbewusst eingesetzt). Aber gerade, was sprachspezifische Features anbelangt, kommst du um ein Buch nicht herum -- du triffst nämlich nicht per Zufall auf diese.
-
Besten Dank erst mal für die Antwort!
Vorab schon mal, ich habe leider vergessen zu erwähnen, dass ich bereits einige Bücher hier liegen habe, die sich auch mit der OOP befassen, aber es wird eben nur das Prinzip erläutert. Die Anwendungsbeispiele sind leider nicht sehr überragend, man kennt das ja schon, "Die erste Klasse : Auto" usw. Die Grundlage dafür ist mir eben klar, aber ich habe enorme Probleme das ganze in die Praxis umzusetzen.Die spezifischen Idiome und Techniken, die du aufgelistet hast sagen mir leider noch nichts. Das kann aber natürlich auch daran liegen, dass ich das Grundwissen dafür noch nicht habe.
Eigentlich ist ja eben genau der Punkt, ob ich das ganze tatsächlich mit der Erfahrung lerne, oder ob ich wirklich zu anderen Mitteln greifen sollte.
Das Buch mit dem ich momentan arbeite ist ziemlich umfangreich und nach jedem Kapitel mache ich ein kleines Projekt um mein Wissen zu festigen.
Um es einfach mal zu verdeutlichen => bei 75% brauch ich mindestens 3 Anläufe, weil ich immer falsch / umständlich Anfange und somit kein Zugriff auf Daten habe, die ich benötige.
Jetzt ist es noch nicht so tragisch, aber bei größeren Projekten könnte das schon ein ziemlich schwerwiegendes Problem sein.Steiger ich mich da vielleicht etwas zu viel rein, oder ist das echt etwas ungewöhnlich?
-
uU waere folgendes Buch fuer dich interessant:
Objektorientierte Programmierung für Dummies | ISBN: 3826629841PS:
lass dich nicht vom Namen abschrecken.
-
Shade Of Mine schrieb:
lass dich nicht vom Namen abschrecken.
Marcus Bäckmann? Ist das nicht dieser Hackautor, der ein ganzes Forum voller Astroturfer betreibt, um seine Bücher zu bewerben?
*duckundweg*
-
Juuke schrieb:
Um es einfach mal zu verdeutlichen => bei 75% brauch ich mindestens 3 Anläufe, weil ich immer falsch / umständlich Anfange und somit kein Zugriff auf Daten habe, die ich benötige.
Jetzt ist es noch nicht so tragisch, aber bei größeren Projekten könnte das schon ein ziemlich schwerwiegendes Problem sein.Steiger ich mich da vielleicht etwas zu viel rein, oder ist das echt etwas ungewöhnlich?
Du sagst ja selbst, dass dir viele Techniken noch nicht bekannt sind. Also ja, es wird an der Erfahrung liegen, du kannst nicht auf Anhieb alles richtig machen. Stell dich auch darauf ein, dass du das erste Projekt im Nachhinein anders machen würdest. Und das zweite auch. Und das dritte auch... Eigentlich jedes -- man lernt immer wieder etwas Neues (am Anfang am meisten).
Mindestens ein weiterführendes Buch wie Effective oder Exceptional C++ würde ich empfehlen. Ein paar Dinge haben sich in C++11 vereinfacht (Range-Based For Schleife, Typinferenz mit
autounddecltype,std::unique_ptrfür automatische Speicherverwaltung). Die meisten der Idiome treffen allerdings nach wie vor zu, älteren Code musst du ohnehin auch verstehen können. Ich denke daher, es ist nicht allzu tragisch, wenn dein weiterführendes Buch schon ein paar Jahre alt ist. Wichtiger ist, dass es tatsächlich von fähigen Autoren geschrieben wurde, diese sind nämlich im Bezug auf C++ eine echte Rarität.
-
Der Klassiker ist für mich immer noch
Objektorientierte Analyse und Design | ISBN: 9783893196739
.. aber doch relativ schwere Kost.Ansonsten empfehle ich: programmieren, überdenken, fremden Code anschauen - nochmal das gleiche anders programmieren, nochmal überdenken, usw.
Gruß
Werner