Logo pl.removalsclassifieds.com

Różnica między kompozycją a dziedziczeniem (z tabelą)

Spisu treści:

Anonim

Dzięki wykorzystaniu poprzednich wersji do tworzenia nowego oprogramowania z wykorzystaniem koncepcji ponownego wykorzystania, w programowaniu określa się kod wielokrotnego użytku. W firmach zajmujących się technologiami komputerowymi ponowne wykorzystanie kodu jest uważane za kluczową funkcję produktywności. W programowaniu encji istnieją dwa podstawowe sposoby definiowania tych relacji: dziedziczenie i kompozycja.

Kompozycja a dziedziczenie

Różnica między kompozycją a dziedziczeniem polega na tym, że kompozycja służy do budowania klasy mającej relację „ma-a”, a nie relację „jest-a”, jak w przypadku dziedziczenia. Dziedziczenie pozwala funkcjom składowym za pośrednictwem jednej klasy stać się własnością innej bez konieczności kodowania ich bezpośrednio w klasie.

Dziedziczenie klas jest przywracane wraz ze składem artykułu. Kompozycję opisuje się jako użycie jednej jednostki w drugiej. Ponieważ łatwo jest konstruować skomplikowane klasy z wykorzystaniem wcześniej opublikowanych, dobrze zaprojektowanych klas jako komponentów, zawsze można użyć obiektu jako pola w innej klasie. Wszystko to określa się mianem kompozycji.

W OOP dziedziczenie odnosi się do procesu, w którym jedna jednostka nabywa cechy innej. Jest to jeden z najskuteczniejszych sposobów wymuszenia ponownego użycia kodu w OOP. Nową klasę można utworzyć, tworząc relacje rodzic-dziecko z obecnymi klasami za pomocą dziedziczenia. Klasy mogą dziedziczyć często używane stany i zachowania z niektórych innych klas dzięki przetwarzaniu obiektowemu.

Tabela porównawcza między składem a dziedziczeniem

Parametry porównania

Kompozycja

Dziedzictwo

Znaczenie Po prostu deklarujemy typ, który chcemy wykorzystać w kompozycji, i może on przechowywać kilka implementacji, które mogą się różnić w czasie wykonywania. Definiujemy klasę, którą przyjmujemy (superclass) w dziedziczeniu i nie można jej zmienić podczas wykonywania.
Łączenie klas Możliwość łączenia funkcjonalności z różnych klas zapewnia kompozycja. W tym przypadku możemy rozszerzyć tylko jedną klasę; innymi słowy, wielu klas nie można rozszerzyć, ponieważ Java nie pozwala na wielokrotne dziedziczenie.
Funkcjonalność Kompozycja pozwala nam przetestować funkcjonalność używanych przez nas klas bez martwienia się o to, czy są to klasy nadrzędne, czy podrzędne. Dziedziczenie wymaga użycia klasy nadrzędnej w celu przetestowania klasy podrzędnej.
Ponowne wykorzystanie kodu Nawet kod z ostatnich zajęć może być ponownie wykorzystany dzięki kompozycji. Klasy końcowej nie można rozszerzyć przez dziedziczenie.
Relacja Jest to sytuacja typu „has-a”. To sytuacja „jest”.

Co to jest kompozycja?

Kompozycja jest formą agregacji, w której zakłada się własność. Istnieje zależność, ponieważ jeden obiekt jest zależny od drugiego. Rozważ następujące przedmioty: przedmiot szkolny i przedmiot w klasie. Obiekt szkolny jest wymagany, aby obiekt w klasie istniał. Przedmiot w klasie jest uszkodzony, jeśli przedmiot szkolny zostanie zniszczony. W rezultacie te dwie pozycje są współzależne. Jako taka jest rzeczywiście kompozycją. Innymi słowy, coś nazywamy kompozycją, jeśli nie może istnieć bez całości.

Kolejnym związkiem między klasami podanymi przez OOP jest kompozycja, zwana również relacją has-a-relation. Jeśli w jakiś sposób cechy jednego obiektu muszą zostać włączone w cechy innego, relacja wymusza kompozycję. Aby utworzyć nową klasę z klasy nadrzędnej, obiekt każdej klasy musi być zadeklarowany jako członek bieżącej klasy.

Kompozycję opisuje się jako użycie przedmiotu wewnątrz innego przedmiotu. Encja może być regularnie używana jako pole w dowolnej klasie. W kompozycji używają jednostki, która jest częścią klasy. Skład elementu, w przeciwieństwie do dziedziczenia klas, jest w sposób ciągły opisywany w czasie wykonywania przez jednostki uzyskujące połączenia z innymi obiektami.

Co to jest dziedziczenie?

Dziedziczenie ma miejsce, gdy nowa klasa używa atrybutów i metod istniejącej klasy. Ta istniejąca wcześniej klasa jest określana jako klasa nadrzędna, klasa nadrzędna lub klasa podstawowa. Nowa klasa jest określana jako klasa podrzędna, podrzędna lub pochodna. Dzięki dziedziczeniu twórca nie musi nawet pisać kodu od początku. Może użyć dziedziczenia, aby ponownie użyć atrybutów i metod pomysłu pochodnego w nowej klasie. W rezultacie dziedziczenie usprawnia ponowne wykorzystanie kodu. Dziedziczenie może mieć charakter jednopoziomowy, wielopoziomowy, hierarchiczny, wielopoziomowy i hybrydowy.

Jeśli chcemy zbudować nową klasę, ale wydaje się, że istnieje taka, która zawiera część potrzebnego kodu, możemy wyodrębnić naszą nową klasę z obecnej. Moglibyśmy ponownie wykorzystać właściwości i metody bieżącej klasy, zamiast pisać je samodzielnie. Podklasa dziedziczy większość przedstawicieli swojej nadklasy. Konstruktory nie są uczestnikami, więc nie są przekazywane do podklas, ale funkcję nadklasy Object() { [kod natywny] } można wywołać z podklasy.

Główne różnice między kompozycją a dziedziczeniem

Wniosek

Ponieważ skomplikowane klasy są prostsze do skonstruowania przy użyciu wcześniej napisanych, dobrze zaprojektowanych klas, czasami będziesz chciał użyć obiektu jako pola w innej klasie. W tym miejscu pojawia się umiejętność komponowania. Ponieważ dziedziczenie pozwala na ponowne wykorzystanie kodu poprzez rozszerzanie klasy przy niewielkim wysiłku, jest to przydatne narzędzie do tworzenia relacji między klasami.

Kompozycja jest ogólnie preferowana, ponieważ umożliwia korzystanie z obiektu bez utraty jego wewnętrznych danych, co jest przydatne w przypadku kompozycji. Podczas gdy dziedziczenie ma swoje wady, kompozycja obiektów stwarza podobne problemy z wydajnością, jeśli chodzi o tworzenie i niszczenie obiektów.

Różnica między kompozycją a dziedziczeniem (z tabelą)