Razlika između nasljeđivanja i kontejnera

Razlika između nasljeđivanja i kontejnera
Razlika između nasljeđivanja i kontejnera

Video: Razlika između nasljeđivanja i kontejnera

Video: Razlika između nasljeđivanja i kontejnera
Video: Razlika između psihopate i sociopate 2024, Juli
Anonim

Naslijeđe vs Kontejneri

Nasljeđivanje i Kontejnerstvo su dva važna koncepta koja se nalaze u OOP-u (Primjer objektno orijentiranog programiranja: C++). Jednostavno rečeno, i Containership 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 tako što će je proširiti. S druge strane, Containership je sposobnost klase da sadrži objekte različitih klasa kao podatke o članovima.

Šta je nasljeđe?

Kao što je gore spomenuto, nasljeđivanje je sposobnost klase da naslijedi svojstva i ponašanje od nadređene klase tako što će je proširiti. Nasljeđivanje u suštini pruža ponovnu upotrebu koda dozvoljavajući proširenje svojstava i ponašanja postojeće klase od strane novo definirane klase. Ako klasa A proširuje B, onda se klasa B naziva roditeljska klasa (ili super klasa), a klasa A naziva se 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). Potklasa može opciono nadjačati (pružiti novu ili proširenu funkcionalnost metodama) ponašanje naslijeđeno od roditeljske klase. Nasljeđivanje predstavlja odnos “je-a” u OOP-u. Ovo u suštini znači da je A takođe B. Drugim rečima, B može biti klasa sa opštim opisom određenog entiteta iz stvarnog sveta, ali A specificira određenu specijalizaciju. U problemu programiranja u stvarnom svijetu, klasa Person bi se mogla proširiti kako bi se stvorila klasa Employee. To se zove specijalizacija. Ali također možete prvo kreirati klasu Employee, a zatim je generalizirati i na klasu Person (tj.e. generalizacija). U ovom primjeru, Zaposleni će imati sva svojstva i ponašanje osobe (tj. Zaposleni je također Osoba) i može sadržavati neke dodatne funkcije (dakle, Osoba nije Zaposlenik) također.

Šta je kontejnerski prevoz?

Containership 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 kontejner, dok klasa B postaje sadržana klasa. Kontejneri se takođe nazivaju kompozicijom. U ovom primjeru, može se reći da se klasa A sastoji od klase B. U OOP-u, Containership predstavlja odnos “ima-a”. Važno je napomenuti da, iako kontejner ima pristup za izvršavanje svih javnih metoda sadržane klase, on nije u mogućnosti promijeniti ili pružiti dodatnu funkcionalnost. Kada je u pitanju problem 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, Forma je sastavljena od TextBoxa).

Razlika između nasljeđa i kontejnerskog prijevoza

Iako su nasljeđivanje i kontejnerstvo dva OOP koncepta, oni se prilično razlikuju u onome što omogućavaju programeru da postigne. Nasljeđivanje je sposobnost klase da naslijedi svojstva i ponašanje od nadređene klase tako što je proširuje, dok je Containership sposobnost klase da sadrži objekte različitih klasa kao podatke o članovima. 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 od strane potklase. Ali ako je klasa sadržana u drugoj, kontejner nema mogućnost da promijeni ili doda ponašanje sadržanom. Nasljeđivanje predstavlja odnos "je-a" u OOP-u, dok Kontejner predstavlja odnos "ima-a".

Preporučuje se: