• 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

Konferencja JOIN! 2018
0 głosów
216 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 (36,810 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,280 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 (36,810 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 (28,780 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
2 odpowiedzi 87 wizyt
0 głosów
1 odpowiedź 152 wizyt
0 głosów
2 odpowiedzi 153 wizyt
Porady nie od parady
Zadając pytanie postaraj się o szczegółowe opisanie problemu oraz udostępnienie wszystkich istotnych informacji (kody źródłowe, zrzuty ekranu itp.).Opisanie problemu

55,239 zapytań

99,529 odpowiedzi

204,779 komentarzy

27,217 pasjonatów

Przeglądających: 151
Pasjonatów: 1 Gości: 150

Motyw:

Akcja Pajacyk

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

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...