Razlika između nasljeđivanja i sastava

Razlika između nasljeđivanja i sastava
Razlika između nasljeđivanja i sastava

Video: Razlika između nasljeđivanja i sastava

Video: Razlika između nasljeđivanja i sastava
Video: Authentication Vs Authorization in plain English - Security - Session 1 2024, Srpanj
Anonim

Nasljeđivanje nasuprot sastavu

Nasljeđivanje i sastav dva su važna koncepta koja se nalaze u OOP-u (Object Oriented Programming). Jednostavno rečeno, i sastav i nasljeđivanje 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, sastav je sposobnost klase da sadrži objekte različitih klasa kao podatke o članu.

Š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 (pružiti novu ili proširenu funkcionalnost metodama) ponašanje naslijeđeno od nadređene klase.

Nasljeđivanje predstavlja odnos "je-a" 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 kompozicija?

Kompozicija je sposobnost klase da sadrži objekte različitih klasa kao podatke o članovima. 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. Sastav se također naziva i kontejnerski prijevoz. U ovom primjeru može se reći da je klasa A sastavljena od klase B. U OOP-u, kompozicija predstavlja odnos "ima-a". 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).

Koja je razlika između nasljeđivanja i sastava?

Iako su nasljeđivanje i kompozicija 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 sastav 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 sastav predstavlja odnos "ima-a".

Preporučeni: