Nasljeđivanje vs spremništvo
Nasljeđivanje i zadržavanje dva su važna koncepta pronađena u OOP-u (Primjer objektnog programiranja: C ++). Jednostavno rečeno, i Containership and Inheritance se bave pružanjem dodatnih svojstava ili ponašanja klasi. Nasljeđivanje je sposobnost klase da nasljeđuje svojstva i ponašanje od roditeljske klase proširivanjem. S druge strane, Containership je sposobnost klase da kao članski podaci sadrže predmete različitih klasa.
Što je nasljeđivanje?
Kao što je gore spomenuto, Nasljeđivanje je sposobnost da klasa nasljeđuje svojstva i ponašanje od roditeljske klase proširivanjem. Nasljeđivanje u osnovi pruža ponovnu upotrebu koda omogućavajući proširivanje svojstava i ponašanja postojeće klase novo definiranom klasom. Ako se klasa A proširuje s B, tada se klasa B naziva roditeljska klasa (ili super klasa), a klasa A se zove podređena klasa (ili izvedena klasa / potklasa). U ovom primjeru scenarija, klasa A će naslijediti sve javne i zaštićene atribute i metode super klase (B). Podklasa može opcionalno nadjačati (pružiti novu ili proširenu funkcionalnost metodama) ponašanje naslijeđeno od roditeljske klase. Nasljeđivanje predstavlja odnos "jest-a" u OOP-u. To u suštini znači da je A i B. Drugim riječima, B može biti klasa s općim opisom određenog stvarnog svijeta, ali A određuje određenu specijalizaciju. U stvarnom programskom problemu klasa Person mogla bi se proširiti i stvoriti klasu Employee. To se naziva specijalizacijom. Ali prvo biste također mogli stvoriti klasu Employee, a zatim je generalizirati i na Person klasu (tj. Generalizaciju). U ovom primjeru, Zaposleni će imati sva svojstva i ponašanje Osobe (tj. Zaposlenik je i Osoba) i može sadržavati i neke dodatne funkcionalnosti (dakle, Osoba nije uposlenik).
Što je Containership?
Sadržaj je sposobnost klase da sadrži podatke 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 izvesti unutar klase A. Klasa A postaje spremnik, dok klasa B postaje klasa koja se nalazi u sadržaju. Sadržaj se također naziva i Sastav. U ovom se primjeru može reći da se klasa A sastoji od klase B. U OOP-u kontejneri predstavljaju odnos "ima-a". Važno je napomenuti da, iako spremnik ima pristup izvršavanju svih javnih metoda sadržane klase, nije u mogućnosti promijeniti ili pružiti dodatnu funkcionalnost. Kada je u pitanju problem u stvarnom svijetu programiranja, predmet klase TextBox može biti sadržan u obliku klase, i na taj način se može reći da obrazac sadrži TextBox (ili alternativno, obrazac je sastavljen od TextBoxa).
Razlika između nasljeđivanja i sadržaja
Iako su nasljeđivanje i zadržavanje dva OOP koncepta, oni se prilično razlikuju u onome što dopuštaju programeru da postigne. Nasljeđivanje je sposobnost da klasa nasljeđuje svojstva i ponašanje od roditeljske klase proširujući je, dok je Containership sposobnost klase da sadrži podatke različitih klasa kao članske podatke. Ako se klasa proširi, ona nasljeđuje sva javna i zaštićena svojstva / ponašanje i ta bi ponašanja mogla nadjačati potklasu. Ali ako je klasa sadržana u drugom, spremnik ne dobiva mogućnost promijeniti ili dodati ponašanje sadržanom. Nasljeđivanje predstavlja odnos "jest-a" u OOP-u, dok kontejnersko predstavlja odnos "ima-a".