Nasljeđivanje nasuprot kontejnerskom prijevozu
Nasljeđivanje i kontejnerstvo dva su važna koncepta koja se nalaze u OOP-u (primjer objektno orijentiranog programiranja: C++). Jednostavno rečeno, i Containership i Inheritance bave se pružanjem dodatnih svojstava ili ponašanja klasi. Nasljeđivanje je sposobnost klase da naslijedi svojstva i ponašanje od nadređene klase njezinim proširenjem. S druge strane, Containership je sposobnost klase da sadrži objekte različitih klasa kao članske podatke.
Što je nasljeđivanje?
Kao što je gore spomenuto, nasljeđivanje je sposobnost klase da naslijedi svojstva i ponašanje od nadređene klase njezinim proširenjem. Nasljeđivanje u biti omogućuje ponovnu upotrebu koda dopuštajući proširenje svojstava i ponašanja postojeće klase novodefiniranom klasom. Ako se klasa A proširuje na B, tada se klasa B naziva roditeljska klasa (ili superklasa), a klasa A se naziva podređena klasa (ili izvedena klasa/podklasa). U ovom primjeru scenarija klasa A će naslijediti sve javne i zaštićene atribute i metode super klase (B). Podklasa može izborno nadjačati (osigurati novu ili proširenu funkcionalnost metodama) ponašanje naslijeđeno od nadređene klase. Nasljeđivanje predstavlja odnos "je-je" u OOP-u. To u biti znači da je A također B. Drugim riječima, B može biti klasa s općim opisom određenog entiteta stvarnog svijeta, ali A specificira određenu specijalizaciju. U stvarnom problemu programiranja, klasa Osoba se može proširiti da bi se stvorila klasa Zaposlenik. To se zove specijalizacija. Ali također možete prvo stvoriti klasu Zaposlenik, a zatim je generalizirati na klasu Osoba (tj.e. generalizacija). U ovom primjeru, Zaposlenik će imati sva svojstva i ponašanje Osobe (tj. Zaposlenik je također Osoba) i može sadržavati i neke dodatne funkcije (dakle, Osoba nije Zaposlenik).
Što je kontejnerski promet?
Sadržaj je sposobnost klase da sadrži objekte različitih klasa kao članske podatke. Na primjer, klasa A može sadržavati objekt klase B kao člana. Ovdje se sve javne metode (ili funkcije) definirane u B mogu izvršiti unutar klase A. Klasa A postaje spremnik, dok klasa B postaje sadržana klasa. Kontejnerski prijevoz također se naziva i sastav. U ovom primjeru može se reći da je klasa A sastavljena od klase B. U OOP-u, Containership predstavlja odnos "ima-ima". Važno je napomenuti da, iako spremnik ima pristup za izvršavanje svih javnih metoda sadržane klase, on ne može mijenjati ili pružiti dodatnu funkcionalnost. Kada se radi o problemu programiranja u stvarnom svijetu, objekt klase TextBox može biti sadržan u klasi Form, pa se stoga može reći da Forma sadrži TextBox (ili alternativno, obrazac je sastavljen od TextBox-a).
Razlika između nasljeđivanja i prijevoza kontejnerima
Iako su nasljeđivanje i kontejnerstvo dva OOP koncepta, prilično su različiti u onome što omogućuju programeru da postigne. Nasljeđivanje je sposobnost klase da naslijedi svojstva i ponašanje od roditeljske klase njezinim proširenjem, dok je Containership sposobnost klase da sadrži objekte različitih klasa kao članske podatke. Ako je klasa proširena, ona nasljeđuje sva javna i zaštićena svojstva/ponašanje i ta ponašanja mogu biti nadjačana podklasom. Ali ako je klasa sadržana u drugoj, spremnik nema mogućnost mijenjanja ili dodavanja ponašanja sadržanoj. Nasljeđivanje predstavlja odnos "je-je" u OOP-u, dok Containership predstavlja odnos "ima-a".