Dziedzictwo a kontenerowiec
Dziedziczenie i kontenerowość to dwie ważne koncepcje występujące w OOP (przykład programowania zorientowanego obiektowo: C++). Mówiąc prościej, zarówno Containership, jak i Inheritance zajmują się dostarczaniem dodatkowych właściwości lub zachowań do klasy. Dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania z klasy nadrzędnej poprzez jej rozszerzenie. Z drugiej strony Containership to zdolność klasy do zawierania obiektów różnych klas jako danych składowych.
Co to jest dziedziczenie?
Jak wspomniano powyżej, dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania z klasy nadrzędnej poprzez jej rozszerzenie. Dziedziczenie zasadniczo zapewnia ponowne wykorzystanie kodu, umożliwiając rozszerzenie właściwości i zachowania istniejącej klasy o nowo zdefiniowaną klasę. Jeśli klasa A rozszerza B, wtedy klasa B jest nazywana klasą nadrzędną (lub superklasą), a klasa A jest nazywana klasą potomną (lub klasą pochodną/podklasą). W tym przykładowym scenariuszu klasa A odziedziczy wszystkie publiczne i chronione atrybuty i metody superklasy (B). Podklasa może opcjonalnie nadpisać (zapewnić nową lub rozszerzoną funkcjonalność metodom) zachowanie odziedziczone z klasy nadrzędnej. Dziedziczenie reprezentuje relację „jest-a” w obiektach obiektowych. Zasadniczo oznacza to, że A jest również B. Innymi słowy, B może być klasą z ogólnym opisem pewnej encji świata rzeczywistego, ale A określa pewną specjalizację. W prawdziwym problemie programistycznym klasa Person może zostać rozszerzona, aby utworzyć klasę Employee. Nazywa się to specjalizacją. Ale możesz też najpierw utworzyć klasę Employee, a następnie uogólnić ją również na klasę Person (tj.mi. uogólnienie). W tym przykładzie Pracownik będzie miał wszystkie właściwości i zachowanie Osoby (tj. Pracownik jest również Osobą) i może również zawierać pewne dodatkowe funkcje (więc Osoba nie jest Pracownikiem).
Co to jest transport kontenerowy?
Kontenerowość to zdolność klasy do zawierania obiektów różnych klas jako danych składowych. Na przykład klasa A może zawierać jako członka obiekt klasy B. Tutaj wszystkie publiczne metody (lub funkcje) zdefiniowane w B mogą być wykonywane w klasie A. Klasa A staje się kontenerem, a klasa B staje się klasą zawartą. Kontenerowiec jest również określany jako Kompozycja. W tym przykładzie można powiedzieć, że klasa A składa się z klasy B. W OOP Containership reprezentuje relację „ma-a”. Należy zauważyć, że nawet jeśli kontener ma dostęp do wykonywania wszystkich publicznych metod zawartej klasy, nie jest w stanie zmienić ani zapewnić dodatkowej funkcjonalności. Jeśli chodzi o problem programowania w świecie rzeczywistym, obiekt klasy TextBox może być zawarty w klasie Form, a zatem można powiedzieć, że Form zawiera TextBox (lub alternatywnie Form składa się z TextBox).
Różnica między dziedziczeniem a kontenerowcem
Chociaż Dziedziczenie i Kontenerowiec to dwie koncepcje OOP, różnią się one znacznie pod względem tego, co pozwalają programiście osiągnąć. Dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania z klasy nadrzędnej poprzez jej rozszerzenie, podczas gdy Containership to zdolność klasy do zawierania obiektów różnych klas jako danych składowych. Jeśli klasa jest rozszerzona, dziedziczy wszystkie publiczne i chronione właściwości/zachowanie, a te zachowania mogą być nadpisane przez podklasę. Ale jeśli klasa jest zawarta w innej, kontener nie ma możliwości zmiany lub dodania zachowania do zawartego. Dziedziczenie reprezentuje relację „jest-a” w obiektach obiektowych, podczas gdy Containership reprezentuje relację „ma-a”.