Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Dziedziczyc czy stworzyc obiekt wewnatrz klasy

Ostatnio zmodyfikowano 2013-02-04 23:03
Autor Wiadomość
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:

C/C++
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; }
};

C/C++
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:

C/C++
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.


P-75714
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.
P-75715
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 ?
P-75731
jsc
» 2013-02-04 22:52:44
Jakoś tak:
C/C++
class wewnetrzny
{
public:
    metoda()
    {
    }
};

class zewnetrzny
{
    wewnetrzny * zawartosc;
   
public:
    zewnetrzny()
    {
        zawartosc = new wewnetrzny();
    }
   
    odwolanie()
    {
        zawartosc->metoda();
    }
}
P-75734
Nowicjusz
Temat założony przez niniejszego użytkownika
» 2013-02-04 23:03:27
no ok ;d
P-75737
« 1 »
  Strona 1 z 1