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.

14
Skąd bierze się ta koncepcja „faworyzowania kompozycji nad dziedziczeniem”?
W ciągu ostatnich kilku miesięcy mantra „sprzyjanie kompozycjom nad dziedziczeniem” wydaje się pojawiać znikąd i stać się niemal rodzajem memu w społeczności programistów. I za każdym razem, gdy to widzę, jestem trochę zdziwiony. To tak, jakby ktoś powiedział: „faworyzuj wiertarki nad młotami”. Z mojego doświadczenia wynika, że ​​skład i dziedziczenie …

9
Czy istnieje jakiś „prawdziwy” powód, dla którego nienawidzono wielokrotnego dziedziczenia?
Zawsze podobał mi się pomysł obsługiwania wielokrotnego dziedziczenia w jednym języku. Najczęściej jednak jest celowo zapominany, a domniemanym „zamiennikiem” są interfejsy. Interfejsy po prostu nie obejmują tego samego gruntu, co wielokrotne dziedziczenie, a to ograniczenie może czasami prowadzić do większej liczby kodów wzorcowych. Jedynym podstawowym powodem, dla którego kiedykolwiek to …

5
Dlaczego wolę kompozycję niż dziedziczenie?
Zawsze czytam, że kompozycja ma pierwszeństwo przed dziedziczeniem. Blogu na przeciwieństwie rodzaju , na przykład, opowiada się za pomocą kompozycji przez dziedziczenie, ale nie mogę zobaczyć, jak polimorfizm został osiągnięty. Mam jednak wrażenie, że kiedy ludzie mówią, że wolą kompozycję, to tak naprawdę wolą kombinację kompozycji i implementacji interfejsu. Jak …

12
Dlaczego dziedziczenie Square z Rectangle byłoby problematyczne, jeśli przesłoniliśmy metody SetWidth i SetHeight?
Jeśli kwadrat jest rodzajem prostokąta, to dlaczego kwadrat nie może odziedziczyć po prostokącie? Lub dlaczego jest to zły projekt? Słyszałem, jak ludzie mówią: Jeśli sprawiłeś, że Kwadrat pochodzi z prostokąta, kwadrat powinien być użyteczny wszędzie tam, gdzie oczekujesz prostokąta Jaki jest tutaj problem? I dlaczego Square miałby być użyteczny wszędzie …

7
Kiedy używać klas abstrakcyjnych zamiast interfejsów z metodami rozszerzenia w C #?
„Klasa abstrakcyjna” i „interfejs” są podobnymi pojęciami, a interfejs jest bardziej abstrakcyjny z tych dwóch. Jednym z czynników różnicujących jest to, że klasy abstrakcyjne zapewniają w razie potrzeby implementacje metod dla klas pochodnych. Jednak w języku C # ten czynnik różnicujący został zmniejszony dzięki niedawnemu wprowadzeniu metod rozszerzenia, które umożliwiają …


17
Czy programowanie OO jest tak samo ważne, jak firmy zajmujące się rekrutacją? [Zamknięte]
Właśnie kończę studia magisterskie (z informatyki) i staram się o pracę. Zauważyłem, że wiele firm prosi o zrozumienie orientacji obiektowej. Popularne pytania podczas wywiadu dotyczą dziedziczenia, polimorfizmu, akcesoriów itp. Czy OO jest naprawdę tak ważne? Miałem nawet rozmowę o pracę programistyczną w C, a połowa wywiadu to OO. Czy w …

1
W jaki sposób mixiny lub cechy są lepsze od zwykłego wielokrotnego dziedziczenia?
C ++ ma zwykłe wielokrotne dziedziczenie, wiele projektów językowych zabrania go jako niebezpiecznego. Ale niektóre języki, takie jak Ruby i PHP, używają dziwnej składni, aby robić to samo i nazywać to mixins lub cechami. Słyszałem wiele razy, że miksy / cechy są trudniejsze do nadużywania niż zwykłe wielokrotne dziedziczenie. Co …

3
Co to jest system typów?
tło Projektuję język jako projekt poboczny. Mam do tego działający asembler, analizator statyczny i maszynę wirtualną. Ponieważ mogę już skompilować i uruchomić nietrywialne programy z wykorzystaniem infrastruktury, którą zbudowałem, pomyślałem o wygłoszeniu prezentacji na moim uniwersytecie. Podczas mojej rozmowy wspomniałem, że maszyna wirtualna zapewnia system typów, zapytano: „Do czego służy …

8
LSP vs OCP / Liskov Substitution VS Open Close
Próbuję zrozumieć SOLIDNE zasady OOP i doszedłem do wniosku, że LSP i OCP mają pewne podobieństwa (jeśli nie powiedzieć więcej). zasada otwarta / zamknięta stwierdza: „jednostki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację”. LSP w prostych słowach stwierdza, że ​​dowolną instancję Foomożna zastąpić …


11
Podklasy przeznaczone wyłącznie dla konstruktorów: czy jest to anty-wzór?
Rozmawiałem ze współpracownikiem i skończyły się sprzeczne intuicje na temat celu podklasy. Moją intuicją jest to, że jeśli podstawową funkcją podklasy jest wyrażenie ograniczonego zakresu możliwych wartości jej elementu nadrzędnego, prawdopodobnie nie powinna to być podklasa. Argumentował za odwrotną intuicją: ta podklasa reprezentuje bardziej „specyficzny” obiekt, a zatem relacja podklasy …


11
Czy abstrakcyjne klasy / metody są przestarzałe?
Kiedyś tworzyłem wiele abstrakcyjnych klas / metod. Potem zacząłem używać interfejsów. Teraz nie jestem pewien, czy interfejsy nie powodują, że klasy abstrakcyjne stają się przestarzałe. Potrzebujesz w pełni abstrakcyjnej klasy? Zamiast tego utwórz interfejs. Potrzebujesz abstrakcyjnej klasy z pewną implementacją? Utwórz interfejs, stwórz klasę. Dziedzicz klasę, zaimplementuj interfejs. Dodatkową korzyścią …


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.