Dziedziczyc czy stworzyc obiekt wewnatrz klasy
Ostatnio zmodyfikowano 2013-02-04 23:03
Nowicjusz Temat założony przez niniejszego użytkownika |
Dziedziczyc czy stworzyc obiekt wewnatrz klasy » 2013-02-04 19:50:58 Czesc mam problem bo koles z laborek z programowania bardzo sie o wszystko czepia ;p mozliwe ze slusznie ale nie mam pewnosci dlatego wole was zapytac :) Mam nastepujace klasy Computer, Player, Score, moja implementacja wszystkiego wyglada tak: class Score { protected: int hit; int miss; int lost; public: Score() { hit = 0, miss = 0, lost = 0; } int getHit() { return hit; } int getMiss() { return miss; } int getLost() { return lost; } };
class Computer : public Score { };
class Player : public Score { };
No ja sobie to tak wykombinowalem, pomyslalem sobie ze najlepiej byloby dziedziczyc, a on powiedzial ze to jest nieprawidlowe podejscie i ze trzeba stworzyc obiekt Score wewnatrz kazdej klasy, czyli tak: class Computer { Score score; };
class Player { Score score; };
I wedlug mnie jedyne co teraz osiagnelismy to uniemozliwilismy sobie dostepu do metod klasy score ;p. Wedlug mnie lipa straszna no nie wiem. Co wy na ten temat sadzicie ? Btw tak przy okazji mowil cos o agregacji, pierwsze slysze ale to nie w tym temacie to bylo przy innym dziedziczeniu jeszcze jakies dziedziczenie mu sie nie podobalo. |
|
pekfos |
» 2013-02-04 20:03:05 Dziedziczenie (publiczne): Komputer jest wynikiem. Gracz jest wynikiem.
Agregacja: Komputer ma wynik. Gracz ma wynik.
Jak widać, bardziej logiczne jest drugie podejście ;) Wybierając dziedziczenie, tracisz możliwość zarządzania wynikiem, jako całością, ale możesz traktować gracza i komputer jako wynik. |
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2013-02-04 22:16:10 ok w takim razie jak odwolac sie do metod tej klasy ? Zrobic jakas funkcje ktora zwraca referencje ? |
|
jsc |
» 2013-02-04 22:52:44 Jakoś tak: class wewnetrzny { public: metoda() { } };
class zewnetrzny { wewnetrzny * zawartosc; public: zewnetrzny() { zawartosc = new wewnetrzny(); } odwolanie() { zawartosc->metoda(); } }
|
|
Nowicjusz Temat założony przez niniejszego użytkownika |
» 2013-02-04 23:03:27 no ok ;d |
|
« 1 » |