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

Obiektowy C++: dziedziczenie, a tworzenie obiektów jednych klas w innych

Object Storage Arubacloud
0 głosów
497 wizyt
pytanie zadane 4 czerwca 2016 w C i C++ przez Norbit Początkujący (270 p.)
Mam do stworzenia obiekt Ośmiokąt. Mam już stworzoną klasę odcinek i pragnę użyć jej osiem razy do stworzenia klasy ośmiokąt. Klasa odcinek ma nazwę oraz parametry np. długość. Najchętniej użyłbym dziedziczenia. Pojawia się jednak problem. Jak zrobić, żeby klasa odziedziczyła coś kilka razy od jednej klasy, tak, żeby mieć te osiem odcinków. Mógłbym po prostu umieścić osiem obiektów klasy Odcinek w klasie Ośmiokąt, ale Klasa Odcinek ma nazwę, którą chciałbym przesłonić w klasie ośmiokąt, nie potrzebuję nazwy każdego odcinka ośmiokąta, szkoda pamięci.
komentarz 4 czerwca 2016 przez Norbit Początkujący (270 p.)
Inny przykład:

Mam klasy Punkt, Odcinek, Prostokąt. Na podstawie komentarzy do pytania rozumiem, że punkt ma sens odziedziczyć, ale już wysokości i szerokości nie ma sensu odziedziczyć po klasie Odcinek sens ma jedynie stworzenie dwóch obiektów klasy Odcinek. Czemu?

2 odpowiedzi

+1 głos
odpowiedź 4 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 4 czerwca 2016 przez Norbit
 
Najlepsza
Przeczytaj sobie dokładnie czym jest dziedziczenie.. najprościej mówiąc jeżeli klasa A dziedziczy z klasy B to znaczy że A jest tak jak by jednocześnie klasą B, ale klasa B nie jest klasą A. To działa w przypadku figur np. kwadrat jest figurą ale figura już kwadratem być nie musi. W twoim przypadku dziedziczenie nie ma sensu.. po prostu stwórz 8 obiektów (tablica) o nazwie odcinek w klasie ośmiokąt.
komentarz 4 czerwca 2016 przez Norbit Początkujący (270 p.)
Na podstawie tego co napisałeś i filmiku:

https://www.youtube.com/watch?v=ZesZXlBcROA&index=5&list=PLOYHgt8dIdozvOVheSRb_qPVU-4ZJA7uB

wynika, że koło jest jednocześnie punktem.

Ponadto analogicznie do mojego problemu, w powyższym filmiku dziedziczenie nie ma sensu wystarczy stworzyć 1 obiekt Punkt w klasie Kolo
komentarz 4 czerwca 2016 przez MetGang Nałogowiec (34,360 p.)
Koło ma dwie wartości: pozycję [x,y] i promień [r]
Pozycję dziedziczy z Punktu (O w kole) i dodaje swój promień. To ma sens.
komentarz 4 czerwca 2016 przez Norbit Początkujący (270 p.)
Mogę też stworzyć obiekt punkt wewnątrz klasy Kolo. Na to samo wyjdzie.
komentarz 4 czerwca 2016 przez MetRiko Nałogowiec (37,110 p.)
Masz rację.. wyjdzie (prawie) na to samo.. jednak spójrz na to z troszeczkę innej perspektywy i potraktuj punkt nie jako bezpośrednią część koła, a po prostu jako jakiś obiekt ustalający pozycję koła/okręgu, *czy też innej figury) w układzie współrzędnych. Inaczej mówiąc różne obiekty mogły by dziedziczyć z klasy punkt, ponieważ różne obiekty mają pozycję (x,y). W przypadku odcinka, można by użyć innego porównania np. można by uznać, że odcinek to symboliczna droga, posiadająca zmienne x1,y1,x2,y2, ale nie byłaby ona możliwa do użytku mając tylko takie dane.. z pomocą przychodzi nam dziedziczenie.. jeżeli stworzylibyśmy różne drogi (klasy) np. żwirową, asfaltową, chodnik itp. to każda z tych dróg dziedziczyłaby ze swojej podstawy; klasy odcinek. W przykładzie który podałeś jeżeli ośmiokąt dziedziczyłby z odcinka to znaczyłoby że odcinek jest jakąś podstawą dla tego ośmiokąta, a jest on po prostu częścią składową. Takie "multi dziedziczenie", o którym pisałeś nie istnieje.. poza tym to nie miałoby żadnego sensu : )
+1 głos
odpowiedź 4 czerwca 2016 przez adas94 Nałogowiec (29,200 p.)
W tym przypadku nie stosujesz dziedziczenia, tylko kompozycję.

W klasie Ośmiokąt definiujesz 8 pól typu Odcinek i po krzyku.

Podobne pytania

0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)
0 głosów
2 odpowiedzi 219 wizyt
0 głosów
1 odpowiedź 621 wizyt

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

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

...