• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Dziedziczenie klas i och wielkosc [C++]

Object Storage Arubacloud
0 głosów
276 wizyt
pytanie zadane 23 maja 2019 w C i C++ przez DragonCoder Nałogowiec (36,500 p.)
zamknięte 16 sierpnia 2019 przez DragonCoder
Witam,

Siedzialem wczoraj zaczynajac pisac powoli klasy do gry i gdy doszedlem do klasy Hero i Monster, no to odrazu pomyślalem, ze trzeba tu dziedziczyc z klasy entity. Wpakowalem wszystkie wspolne zmienne i funkcje ta w klase i tak sobie pomyslalem, ze zostala mi klasa NPC, ktora ma 4 takie same zmienne. Zastanawiam sie, czy powinnienem zrobić jeszcze jedna klase i wtedy bedzie to wygladalo tak:

klasa npc i entity dziedzicza z tej nowej klasy, a klasa Hero i Monster dziedzicza z entity.

Nie wiwm, czy rozbijac ta klase, czy zostawic tak jak jest i po prostu do NPC dopisac te 4 zmienne wiecej. Jak wy byacie ro rozwiazali?

Pozdrawiam

DC
komentarz zamknięcia: rozwiazanie na dole

1 odpowiedź

0 głosów
odpowiedź 23 maja 2019 przez DeBos123 Nałogowiec (44,950 p.)
A klasa NPC nie może dziedziczyć z Entity?
komentarz 23 maja 2019 przez DragonCoder Nałogowiec (36,500 p.)
Ale wtedy dziedziczyla by funkcje i pola prywatne, ktore sa jej zbedne
komentarz 23 maja 2019 przez adrian17 Ekspert (346,840 p.)
A to jakie są te zbędne pola? Bo na oko typowy `entity` powinien być w całości potrzebny dla `NPC`.
komentarz 23 maja 2019 przez DragonCoder Nałogowiec (36,500 p.)
W entity chcialem dac damage, defence, objekt klasy bonus. A npc potrzebuje tylko pozycji, nazwy, i teksty, ktore wymawia.

Dlatego pomyslalem nad zrobieniem jeszcze jednej klasy, z ktorej dziedziczylby entity i npc, a z entity dziedziczylby potwór i bohater
komentarz 23 maja 2019 przez adrian17 Ekspert (346,840 p.)
To Entity ma informacje dotyczące pozycji. To pod nią byłaby ewentualnie jakaś klasa z damage/defence etc.

(btw po terminologii potwór w zasadzie też jest NPCem)
komentarz 23 maja 2019 przez DragonCoder Nałogowiec (36,500 p.)

Patrzac na terminologie to tak, ale chodzilo mi o NPC od ktorych dostaje sie misje itp. Moze pokaze jak wyglada klasa entity i inne klasy:

class Entity {
private:

    unsigned int widthEntity_;
    unsigned int lengthEntity_;
    
    std::string nameEntity_;
    unsigned long long targetMoneyEntity_;
    unsigned short minimalDamageEntity_;
    unsigned short maximalDamageEntity_;
    unsigned short damageEntity_;
    unsigned short defenceEntity_;
    unsigned short lifeEntity_;
    unsigned short strengthEntity_;
    unsigned short staminaEntity_;
    unsigned short sleightEntity_;
    unsigned short levelEntity_;
    unsigned short criticalDamageEntity_;
    
    bool livingEntity_;
    bool criticalDamageTrueFalseEntity_;
    
    int lifeEntity_;

};

class Monster : 
    public Entity {

};

class NPC {
unsigned int widthEntity_; 
unsigned int lengthEntity_; 
std::string nameEntity_;
std::vector <std::string> text_;
};

class Hero : 
    public Entity {

};

 

lub zrobie to tak: 

class glowna_klasa {
    unsigned int widthEntity_;
    unsigned int lengthEntity_;
    
    std::string nameEntity_;
};

class Entity : 
    public glowna_klasa{
private:
    unsigned long long targetMoneyEntity_;
    unsigned short minimalDamageEntity_;
    unsigned short maximalDamageEntity_;
    unsigned short damageEntity_;
    unsigned short defenceEntity_;
    unsigned short lifeEntity_;
    unsigned short strengthEntity_;
    unsigned short staminaEntity_;
    unsigned short sleightEntity_;
    unsigned short levelEntity_;
    unsigned short criticalDamageEntity_;
    
    bool livingEntity_;
    bool criticalDamageTrueFalseEntity_;
    
    int lifeEntity_;

};

class Monster : 
    public Entity {

};

class NPC :
    public glowna_klasa {
};

class Hero : 
    public Entity {

};

 

komentarz 23 maja 2019 przez adrian17 Ekspert (346,840 p.)
No i OK, tylko byłbym za czytelniejszym nazewnictwem: `glowna_klasa` raczej nazwałbym `Entity`, a obecne `Entity` nazwałbym na przykład `CombatEntity`.

I proszę wyrzuć te wszystkie `...Entity_` z nazw pól :(
komentarz 23 maja 2019 przez DragonCoder Nałogowiec (36,500 p.)
moge wywalic, wydawalo mi sie, ze przez to beda one czytelniejsze

Podobne pytania

0 głosów
0 odpowiedzi 237 wizyt
pytanie zadane 9 września 2018 w C i C++ przez Munvik Dyskutant (9,350 p.)
0 głosów
2 odpowiedzi 526 wizyt
0 głosów
2 odpowiedzi 104 wizyt

92,757 zapytań

141,679 odpowiedzi

320,441 komentarzy

62,101 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...