• 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
265 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 (345,160 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 (345,160 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 (345,160 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 228 wizyt
pytanie zadane 9 września 2018 w C i C++ przez Munvik Dyskutant (9,350 p.)
0 głosów
2 odpowiedzi 508 wizyt
0 głosów
2 odpowiedzi 99 wizyt

92,615 zapytań

141,465 odpowiedzi

319,779 komentarzy

61,997 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...