• 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

VPS Starter Arubacloud
0 głosów
489 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ź 186 wizyt
pytanie zadane 11 grudnia 2019 w C i C++ przez Jacuchna0 Użytkownik (640 p.)
0 głosów
2 odpowiedzi 218 wizyt
0 głosów
1 odpowiedź 583 wizyt

92,453 zapytań

141,262 odpowiedzi

319,088 komentarzy

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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...