Dziedziczenie kontra kontenerowiec
Dziedziczenie i kontenerowanie to dwie ważne koncepcje znalezione w OOP (Object Programed Oriented Programming: C ++). Mówiąc najprościej, zarówno Kontenerowość, jak i Dziedzictwo zajmują się zapewnianiem dodatkowych właściwości lub zachowania klasie. Dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania od klasy nadrzędnej poprzez jej rozszerzenie. Z drugiej strony, Containership to zdolność klasy do przechowywania obiektów różnych klas jako danych członka.
Co to jest dziedziczenie?
Jak wspomniano powyżej, dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania od klasy nadrzędnej poprzez rozszerzenie jej. Dziedziczenie zasadniczo zapewnia ponowne użycie kodu, umożliwiając rozszerzenie właściwości i zachowania istniejącej klasy o nowo zdefiniowaną klasę. Jeśli klasa A rozszerza B, to klasa B nazywana jest klasą nadrzędną (lub superklasą), a klasa A nazywana jest klasą potomną (lub klasą pochodną / podklasą). W tym przykładowym scenariuszu klasa A odziedziczy wszystkie publiczne i chronione atrybuty i metody nadklasy (B). Podklasa może opcjonalnie zastąpić (zapewnić nową lub rozszerzoną funkcjonalność metodom) zachowanie odziedziczone z klasy nadrzędnej. Dziedziczenie reprezentuje relację „jest-a” w OOP. Zasadniczo oznacza to, że A jest również B. Innymi słowy, B może być klasą z ogólnym opisem pewnej istoty ze świata rzeczywistego, ale A określa pewną specjalizację. W prawdziwym problemie programistycznym klasa Person może zostać rozszerzona w celu utworzenia klasy Employee. Nazywa się to specjalizacją. Ale możesz również najpierw utworzyć klasę Pracownik, a następnie uogólnić ją również na klasę Osoba (tj. 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 zawierać dodatkowe funkcje (więc osoba nie jest pracownikiem).
Co to jest kontenerowiec?
Kontenerowiec to zdolność klasy do przechowywania obiektów różnych klas jako danych członkowskich. Na przykład klasa A może zawierać obiekt klasy B jako element członkowski. Tutaj wszystkie metody publiczne (lub funkcje) zdefiniowane w B mogą być wykonywane w klasie A. Klasa A staje się kontenerem, podczas gdy klasa B staje się klasą zawartą. Kontenerowiec jest również określany jako Skład. W tym przykładzie można powiedzieć, że klasa A składa się z klasy B. W OOP, Kontenerowiec reprezentuje relację „nie ma”. Należy zauważyć, że chociaż kontener ma dostęp do wykonywania wszystkich publicznych metod zawartej klasy, nie jest w stanie zmieniać ani zapewniać dodatkowej funkcjonalności. Jeśli chodzi o problem z programowaniem w świecie rzeczywistym, obiekt klasy TextBox może być zawarty w formularzu klasy, a zatem można powiedzieć, że formularz zawiera obiekt TextBox (lub, alternatywnie, formularz składa się z obiektu TextBox).
Różnica między spadkiem a kontenerem
Chociaż Dziedziczenie i Kontenerowanie są dwiema koncepcjami OOP, różnią się znacznie tym, na co pozwalają programiście. Dziedziczenie to zdolność klasy do dziedziczenia właściwości i zachowania od klasy nadrzędnej poprzez rozszerzenie jej, podczas gdy Kontenerowanie to zdolność klasy do przechowywania obiektów różnych klas jako danych członka. Jeśli klasa jest rozszerzona, dziedziczy wszystkie publiczne i chronione właściwości / zachowanie, a te zachowania mogą zostać zastąpione przez podklasę. Ale jeśli klasa jest zawarta w innej, kontener nie ma możliwości zmiany lub dodania zachowania do zawartej. Dziedziczenie reprezentuje relację „jest-a” w OOP, zaś Kontenerowiec reprezentuje relację „ma-a”.