Pytania otagowane jako inheritance

Dziedziczenie to sposób na ponowne użycie kodu istniejących obiektów lub ustanowienie podtypu z istniejącego obiektu, lub obu, w zależności od obsługi języka programowania.

4
Dziedziczenie a miksy w dynamicznych językach?
Kiedy wolisz wzorce dziedziczenia niż miksy w dynamicznych językach? Przez mixiny mam na myśli faktyczne właściwe wkomponowanie, tak jak wstawianie funkcji i elementów danych do obiektu w czasie wykonywania. Kiedy użyjesz na przykład dziedziczenia prototypowego zamiast mixin? Aby lepiej zilustrować, co rozumiem przez mixin, pseudokod: asCircle(obj) { obj.radius = 0 …

1
Dlaczego (/ czy) Bertrand Meyer uważa, że ​​podklasa jest jedynym sposobem na rozszerzenie „zamkniętego” modułu?
W Meyer Object-Oriented Software Construction (1988) definiuje zasadę otwartego / zamkniętego w następujący sposób: Mówi się, że moduł jest otwarty, jeśli jest nadal dostępny do rozszerzenia. Na przykład powinna istnieć możliwość dodawania pól do zawartych w nim struktur danych lub nowych elementów do zestawu funkcji, które wykonuje. Moduł zostanie uznany …


5
Kiedy używać dziedziczenia, kiedy używać „tylko pola logicznego”?
W naszej aplikacji Rails dodajemy powiadomienia. Niektóre z nich to blocking: Zatrzymują postęp dodawanego zasobu, ponieważ brakuje niektórych informacji o tym zasobie. Inne powiadomienia są prostymi powiadomieniami i zawierają jedynie informacje. Dzisiaj rozmawiałem z innym programistą w naszym zespole. Utworzyłem następującą strukturę dziedziczenia: Wolałby jednak, abym po prostu dodał blockingjako …



14
Jak mogę wyjaśnić przydatność dziedziczenia? [Zamknięte]
W obecnej formie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi poparte będą faktami, referencjami lub wiedzą fachową, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i ewentualnie ponownie otworzyć, odwiedź centrum pomocy w …

1
Jak zweryfikować zasadę podstawienia Liskowa w hierarchii dziedziczenia?
Zainspirowany tą odpowiedzią: Wymaga tego zasada substytucji Liskowa W podtypie nie można wzmocnić warunków wstępnych. Warunki podrzędne nie mogą zostać osłabione w podtypie. Niezmienniki nadtypu muszą być zachowane w podtypie. Ograniczenie historii („reguła historii”). Obiekty są uważane za modyfikowalne tylko za pomocą ich metod (enkapsulacji). Ponieważ podtypy mogą wprowadzać metody, …

6
Scenariusze rzeczywistych metod chronionych
Dzisiaj zauważyłem, że zasadniczo nigdy nie używam protectedmetod w kodzie C ++, ponieważ rzadko czuję potrzebę wywoływania niepublicznych metod rodzica. Używam trybu chronionego w Javie we wzorcu metod szablonów, ale ponieważ możesz zastąpić metody prywatne w C ++, ja też nie potrzebuję protected. Więc jakie są niektóre scenariusze w świecie …

8
„Wolę kompozycję niż dziedziczenie” - Czy to jedyny powód, aby bronić się przed zmianami podpisu?
Ta strona opowiada się za kompozycją za dziedziczeniem za pomocą następującego argumentu (sformułował to w moich słowach): Zmiana podpisu metody nadklasy (która nie została zastąpiona w podklasie) powoduje dodatkowe zmiany w wielu miejscach, gdy używamy dziedziczenia. Jednak gdy korzystamy ze składu, wymagana dodatkowa zmiana występuje tylko w jednym miejscu: podklasie. …

2
Jak uniknąć pisania wielu funkcji przekazywania w opakowaniu?
Mam klasę, która otacza inną klasę wspólnego typu podstawowego. Ponieważ interfejs typu podstawowego jest dość duży, wymaga to napisania wielu funkcji tranzytowych. Szukam sposobu, aby tego uniknąć. Zróbmy przykład: Car / \ Volvo VolvoWithTrailer Teraz muszę zaimplementować każdą funkcję w interfejsie samochodowym VolvoWithTrailer i wywołać odpowiednią funkcję na zawiniętym obiekcie …

3
Skład zamiast dziedziczenia, ale
Próbuję nauczyć się inżynierii oprogramowania i napotykam sprzeczne informacje, które mnie dezorientują. Uczyłem się OOP i czym są abstrakcyjne klasy / interfejsy i jak z nich korzystać, ale potem czytam, że należy „preferować kompozycję zamiast dziedziczenia”. Rozumiem, że skład ma miejsce, gdy jedna klasa tworzy / tworzy obiekt innej klasy …

2
Dlaczego klasa podstawowa musi mieć tutaj wirtualny destruktor, skoro klasa pochodna nie przydziela surowej pamięci dynamicznej?
Poniższy kod powoduje wyciek pamięci: #include <iostream> #include <memory> #include <vector> using namespace std; class base { void virtual initialize_vector() = 0; }; class derived : public base { private: vector<int> vec; public: derived() { initialize_vector(); } void initialize_vector() { for (int i = 0; i < 1000000; i++) { …

5
Dziedziczenie a dodatkowa właściwość o wartości null
Czy w przypadku klas z polami opcjonalnymi lepiej jest użyć dziedziczenia lub właściwości zerowalnej? Rozważ ten przykład: class Book { private String name; } class BookWithColor extends Book { private String color; } lub class Book { private String name; private String color; //when this is null then it is …
12 java  inheritance  class  null 


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.