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

Różnica między dziedziczeniem, a stosowaniem obiektów jednej klasy wewnątrz innej

Object Storage Arubacloud
0 głosów
147 wizyt
pytanie zadane 4 czerwca 2016 w C i C++ przez Norbit Początkujący (270 p.)
Czysto hipotetycznie mając stworzoną jakąś grę np. The Sims, mam klasę Noga (robioną np. wcześniej do stworzenia łóżka). Gdyby tworzyć jednonogi stół lepiej chyba rozbudować istniejącą klasę o Blat, natomiast tworząc już czteronogi stół muszę użyć 4 obiektów Noga wewnątrz klasy Stół. Tak to wygląda, czy w przypadku stołu jednonogiego też nie używam dziedziczenia.

2 odpowiedzi

+1 głos
odpowiedź 4 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 4 czerwca 2016 przez Norbit
 
Najlepsza
W przypadku stołu z jedną nogą, nie używasz dziedziczenia, to nie ma sensu : /
Możemy stworzyć klasę bazową o nazwie mebel, następnie dziedziczącą z niej, klasę stół, a następnie mając kilka stołów np. drewniany z jedną nogą, nowoczesny z czterema nogami, stół ogrodowy to każdy z tych stołów by dziedziczył z klasy stół, a ilość nóg to już kwestia indywidualna każdego stołu i jego wyglądu. Ale pozostaje pytanie.. Dlaczego miałyby dziedziczyć z tej klasy stół? A to dlatego, gdyż w klasie bazowej (klasa stół) jest wiele funkcji odpowiadających za zachowywanie się sima gdy np. klikniemy na taki stół (a to że to będzie stół drewniany, czy jakikolwiek inny stół, nie ma znaczenia), to sim usiądzie do tego stołu. Po co przekopiowywać za każdym razem te same funkcje, do różnych stołów.. poza tym dziedziczenie pozwala na np przechowanie wielu obiektów różnego typu, ale dziedziczących z jednej klasy, w jednym wektorze, w przykładzie ze stołami, można przechować wszystkie stoły w wektorze std::vector<table>, ale to już inna bajka.. tzw. upcasting and downcasting.. polecam lekturę.. to może wyjaśni ci się jeszcze więcej rzeczy związanych z dziedziczeniem.
+1 głos
odpowiedź 4 czerwca 2016 przez Michał Muzyka Pasjonat (24,080 p.)
W obu przypadkach nie używasz dziedziczenia, tylko używasz obiektu klasy noga, dziedziczenia używasz (na podstawie twojego przykładu) gdy tworzysz wirtualną klase odpowiedzialną za interakcje z obiektami stół i dziedziczysz z niej do kazdego rodzaju stołu (np. funkcja odpowiedzialna za kładzenie rzeczy na stole)

Podobne pytania

0 głosów
2 odpowiedzi 1,079 wizyt
0 głosów
3 odpowiedzi 161 wizyt
0 głosów
1 odpowiedź 1,055 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,961 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!

...