• 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

Aruba Cloud - Virtual Private Server VPS
0 głosów
718 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ź 248 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)
0 głosów
2 odpowiedzi 268 wizyt
0 głosów
1 odpowiedź 838 wizyt

93,286 zapytań

142,286 odpowiedzi

322,313 komentarzy

62,606 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...