Gute übungen für OOP
-
Hi
ich suche Praxis orientirete übungen für OOP. ich habe mein buch durchgearbeitet, aber da waren keine übugnen drinne.
Kann mir da irgendwer tipps geben?
MfG
Eldarion
-
probier dies:
#include <iostream> using namespace std; class A; void f(A*); class A { public: A() {f(this);} virtual void show() {cout<<'A'<<endl;} }; class B : public A { public: B() {f(this);} virtual void show() {cout<<'B'<<endl;} }; void f (A *a) { a->show(); } int main() { B b; while(1); }
...und dann erklär' mal warum man 'AB' sieht und nicht 'BB' - oder - werden in der 'main' ein oder zwei objekte erzeugt?
-
net schrieb:
...und dann erklär' mal warum man 'AB' sieht und nicht 'BB'
Weil durch die Vererbung die Klasse B eine anonyme Instanz von A enthält. Der Konstruktor, welcher diese anonyme Instanz von A erstellt wird vor dem Konstruktor von B aufgerufen.
net schrieb:
werden in der 'main' ein oder zwei objekte erzeugt?
In main wird eine Instanz von B b erstellt.
Hast nicht was schwierigeres!?
Greetz, Swordfish
-
Danke Swordfisch
Die zweite Frage hätt ich auch gewusst, die erste nich
Ich dachte aber eher an praxisprobleme oder so. Weiß nich. für prozedual konnte man ja nen taschenrechner programmiern. (kann man ja auch OOP amchen, macht aber mmn wenig sinn:D)
-
Schau Dir mal das Observer-Pattern an, übertrage dieses auf ein Szenario Deiner Wahl und mache ein Objekt davon noch zum Singleton, z.B. hier:
http://www.henkessoft.de/C++/C++ Fortgeschrittene/C++_Fortgeschrittene.htm#3.1._Observer
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=Singleton#AnswSchau Dir auch andere Design Pattern an und realisiere diese.
http://de.wikipedia.org/wiki/EntwurfsmusterProgrammiere eine Klasse Rational, Complex, 3DVector und String und vergleiche Dein Ergebnis mit anderen Klassen dieser Art.
Wenn Dir das alles zu einfach ist, dann schau dir neuronale Netze und genetische Algos an und versuche dies weiter zu optimieren: http://www.ai-junkie.com/ann/evolved/nnt1.html
http://www.ai-junkie.com/ga/intro/gat1.html
-
Hi
ich guck mir grad ma das hier an: http://de.wikipedia.org/wiki/Abstrakte_Fabrik
kurze frage dazu, sind die konkreten Produkte und Fabriken, instanzen oder abgeleitetee klassen?
MFG
EldarionEdit, danke, diese Schemen sind super tolle übungen. Sowas hab ich mri gewünscht.
-
net schrieb:
probier dies:
#include <iostream> using namespace std; class A; void f(A*); class A { public: A() {f(this);} virtual void show() {cout<<'A'<<endl;} }; class B : public A { public: B() {f(this);} virtual void show() {cout<<'B'<<endl;} }; void f (A *a) { a->show(); } int main() { B b; while(1); }
...und dann erklär' mal warum man 'AB' sieht und nicht 'BB' - oder - werden in der 'main' ein oder zwei objekte erzeugt?
Ist der Zugriff auf this im Konstruktor selbst eigentlich "zulässig", gemäss
Standard ?
-
Wieso nicht? Wenn der Konstruktor aufgerufen wird ist der Speicher ja schon alloziiert.