![]() |
[C++] OOP und die damit verbundenen Probleme
Ich beschäftige mich nun schon ein wenig länger mit C++, habe mir dazu auch das ein oder andere Buch aus der Börse angesehen, doch in sachen OOP steig ich immer noch nicht durch. Classes sind für mich -wie man so schön sagt- Bömische Wälder.
Kann mir jemand ein Tutorial/Buch empfehlen, in den der Ganze Spaß in sachen Classess/Pointer auch für Gehrinakrobaten wie mich verständlich erklärt ist ? MfG Waldfee |
[Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...]
Ist ein guter Anfang, um erstmal die Basis zu verstehen, was OOP ist und was es für Ansätze und Konzepte verfolgt. |
OOP: Klassen = Objekte
Die implementierst eine Klasse so, dass sie die rudimentären und gewünschten Eigenschaften des Objektes besitzt. Oft genanntes Beispiel "Mensch"... ..ein Mensch hat - Alter - Beruf - Kinder - Eltern - usw. Dementsprechend sollte diese Klasse private Variablen, getter/setter-Methoden enthalten. |
so im groben steig ich da ja hinter, nur bei den verschiedenen arten von constrovtoren steig ich net so ganz durch, genauso wie ich funktionen schreiben/aufrufen soll, die sich auf die klasse beziehen bzw. nur auf einzelne objekte der klasse
|
Die Konstruktoren verwendest Du um ein Objekt zu erstellen.
Beispiele: Du hast die Konstruktoren Mensch(Alter), Mensch(Beruf), Mensch(Alter, Beruf, Größe)... (kannst Dir beliebige aussuchen) new Mensch(30) -> erstellt ein Mensch-Objekt mit Alter 30 new Mensch(Lehrer) new Mensch(40, Arzt, 180) Sollte klar sein, oder? getter/setter Beispiele: .setAlter(Alter) / .getAlter() .setBeruf(Beruf) / getBeruf() Aufruf: Mensch mensch = new Mensch(30); mensch.getAlter(); // das sollte Dir den Wert 30 zurückgeben mensch.getBeruf(); // gibt Dir z.B. null zurück, da der Beruf dieses Menschen noch unbekannt ist mensch.setBeruf(Pornodarsteller); mensch.getBeruf(); // gibt Dir nun den Wert "Pornodarsteller" zurück Die Logik und die Funktionalität der Methoden musst Du natürlich selbst implementieren. Bei einfachen Dingen, einfachen Werten (wie hier z.B. Alter, Beruf usw.) ist das natürlich trivial. Schwieriger wirds, wenn Du z.B. Methoden wie getVerwandte() erstellen möchtest. Was verstehst Du unter Objekte einer Klasse? Die Klasse ist das Objekt! |
So, ich kann dir mal einige Links dazu empfehlen.. wenn ich sie finde :o
Die Seite is eigentlich ganz toll: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Und die hier is echt super: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] HIer findet sich auch das ein oder andere nützliche: [Link nur für registrierte und freigeschaltete Mitglieder sichtbar. Jetzt registrieren...] Ich hab das ganze auch viel besser verstanden durch Beispiele. Also wenn ich mir das ganze visuell vorstelle. z.B. hatten wir eine Übungsaufgabe in der wir eine Bibliothek erstellen sollten. Da hat man also die Klasse: Bibliothek (bzw sagen wir mal den PC der die Bib verwaltet). Dieser PC muss folgendes können (logisch): Neue Bücher anlegen vorhandene Bücher verwalten Bücher löschen neue Mitglieder anlegen vorhandene Mitglieder verwalten Mitglieder wieder löschen. => bedeutet, es wäre logisch 2 Klassen für die Bücherei zu erstellen 1x Buch (die die bücher verwalten kann) und 1x Mitglieder (die die Mitglieder verwalten kann) Dann hast du einen Standartkonstruktor, der sagt dir wie so ein Buch aussieht (es hat Seiten, einen Einband, ein erscheinungsjahr und vor allem eine ID unter der es eingeordnet is im regal <- da findet man es) Und um dir das eintragen von Büchern in die Bibliothek zu erleichtern, gibts allgemeine Konstruktoren. Kann man vllt vorsichtig mit Vorlagen vergleichen. z.B. gehört das Buch in die Kategorie "historischer Roman" oder ist "1932" erschienen. Dann denkste "ooooooh, muss ich nich nochmal extra eintragen! Ich nehm einfach das Eingabeformular von 1932 und trags da ein, supi, was ne zeitersparnis!" *hust* ;) |
kann geclosed werden, ich hab jetz über ne woche versucht an OOP ranzutasten, selbst tutorials bekomm ich net zu laufen es sein denn copy->paste.
Man muss ab und zu einsehen, wenn man zu etwas geistig nicht in der lage ist, deswegen studier ich ja auch net, sonder arbeite richtig :D |
So schnell brauchst Du doch nicht aufgeben....
|
Zitat:
ein objekt ist eine instanz einer klasse. klassen alleine machen auch keine objektorientierte sprache aus. |
Zitat:
Damit machst Du es Waldfee ja umso verständlicher... |
@pornopenner:
falsche aussagen verwirren meiner meinung nach noch viel mehr. waldfee hat einige gute literaturhinweise bekommen. |
Und was ist daran falsch?
Die Abstraktion Objekt <-> Klasse ist vollkommen richtig. Eben einfach damit Waldfee es sich leicht vorstellen kann. Aber man kann ja natürlich auch in der Fachsprache (die sie nicht verstehen wird) klugscheissen... |
Nö, ist es nicht. Eine Klasse ist ein Bauplan. Ein Objekt ist letzlich die Summe aller dafür eingesetzen Baupläne (Stichwort Vererbung).
Und verständlich oder nicht, Halbwahrheiten helfen auch keinem Anfänger weiter. |
Zitat:
|
@Waldfee:
Du brauchst nicht so schnell aufgeben. OOP ist halt ein Konzept, für dessen Verinnerlichung man schon einiges an Zeit mitbringen muss. Sehr viele sind auch der Meinung, sie haben OOP verstanden, aber realisieren die Möglichkeiten und die Tragweite nicht wirklich oder erst nach langer Zeit. Einen guten Einstieg wirst Du wahrscheinlich in Büchern finden, die mit sehr vielen Beispielen arbeiten. Wenn Du verstehst, warum man überhaupt versucht, in Klassen zu abstrahieren und welche enorme Flexibilität und Macht hinter dem Ansatz steckt, dann wird der Rest schnell logisch. @PornoPenner: Es hilft niemandem, wenn man Bezeichnungen einfach zusammenwirft - vor allem, wenn klare Falschaussagen dabei herauskommen. Eine konsequente Benennung mit klarer Trennung von anderen Begriffen verwirrt nicht, sondern bewirkt genau das Gegenteil. Als Anfänger helfen solche "vereinfachten Falschaussagen" überhaupt nicht weiter, weil der Unterschied zwischen Klasse und Objekt fundamental für das Verständnis des Ganzen ist. |
Klugscheissen und einen Anfänger, der jetzt schon keine Lust auf OOP hat, mit tiefen Details und Fachbegriffen zu bewerfen, bringt insgesamt auch nicht viel :)
|
Die Aussage, daß Objekte keine Klassen sind, nicht zu akzeptieren, ist für Dich also klugscheissen, ja?
|
Kannst dann doch gerne Deinen eigenen Heul-Thread aufmachen :)
Ich wollte lediglich nicht von Instanzen sprechen und es sehr einfach halten, damit Waldfee einen Teil abstrahieren kann. Du erzählst den Kindern im Kindergarten wohl auch, dass sie akzeptieren müssen, dass es den Weihnachtsmann nicht gibt! Ist ja schließlich richtig so! Naja, in einen eigentlich geschlossen Thread schreiben, weil man eine Sache nicht "akzeptieren" kann und irgendwas richtig stellen muss, was jeder hier (bis auf den Threadersteller) weiß, dann kann man das sehr wohl klugscheissen nennen. Aber wo wir schon dabei sind, dann könntest Du ja auch mal an Deiner Rechtschreibung arbeiten. Solch eklatante Fehler kann ich nämlich nicht akzeptieren :) |
"richtigstellen" schreibt man zusammen. :D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.