Öröklés vs konténerség
Az öröklés és a tárolás az OOP-ban (Objektum-orientált programozási példa: C ++) található két fontos fogalom. Egyszerűen fogalmazva, mind a tárolás, mind az öröklés foglalkozik az osztály további tulajdonságainak vagy viselkedésének biztosításával. Az öröklés az a képesség, hogy egy osztály örököljön tulajdonságokat és viselkedést egy szülőosztálytól annak kiterjesztésével. Másrészről, a konténerség egy osztály azon képessége, hogy tag-adatokként különböző osztályú objektumokat tartalmazzon.
Mi az örökség??
Mint fentebb említettük, az öröklődés az a képesség, hogy egy osztály örököljön tulajdonságokat és viselkedést egy szülőosztálytól annak kiterjesztésével. Az öröklés alapvetően a kód újbóli felhasználását biztosítja azáltal, hogy lehetővé teszi a meglévő osztály tulajdonságainak és viselkedésének kibővítését egy újonnan meghatározott osztály által. Ha az A osztály kiterjeszti a B-t, akkor a B osztályt szülőosztálynak (vagy szuperosztálynak) nevezzük, és az A osztályt gyermekosztálynak (vagy származtatott osztálynak / alosztálynak) nevezzük. Ebben a példahelyzetben az A osztály a (B) szuper osztály összes nyilvános és védett attribútumát és módszerét örökli. Az alosztály opcionálisan felülbírálhatja (új vagy kibővített funkciókat biztosíthat a módszerekhez) a szülőosztálytól örökölt viselkedést. Az öröklés egy „van-egy” kapcsolatot képvisel az OOP-ban. Ez lényegében azt jelenti, hogy A szintén B. Más szavakkal, B lehet egy osztály, egy általános valós entitás általános leírásával, de A meghatároz egy bizonyos specializációt. Valós programozási problémák esetén a Személy osztály kibővíthető lenne, hogy létrehozzon Munkavállalói osztályt. Ezt nevezzük specializációnak. De előbb is létrehozhatja a Munkavállalói osztályt, majd aztán Személyosztályra is általánosíthatja (azaz általánosíthatja). Ebben a példában a Munkavállaló a Személy összes tulajdonságával és magatartásával rendelkezik (azaz a Munkavállaló szintén Személy), és tartalmazhat további funkciókat (tehát a Személy nem Munkavállaló).
Mi az a konténerszállítás??
A konténerség egy osztály azon képessége, hogy tag-adatokként különféle osztályú objektumokat tartalmazzon. Például, az A osztály tagként tartalmazhatja a B osztály tárgyát. Itt a B-ben meghatározott összes nyilvános módszer (vagy funkció) végrehajtható az A osztályon belül. Az A osztály válik a konténeré, míg a B osztály a zárt osztálytá. A konténerszállításra kompozíciónak is hivatkoznak. Ebben a példában elmondható, hogy az A osztály B osztályból áll. Az OOP-ban a konténerszállítás „van-egy” kapcsolatot jelent. Fontos megjegyezni, hogy annak ellenére, hogy a tárolónak hozzáférése van a tárolt osztály összes nyilvános módszerének végrehajtásához, nem képes megváltoztatni vagy további funkciókat biztosítani. A valós programozási problémákkal kapcsolatban a TextBox osztályba tartozó objektum szerepelhet az Űrlap osztályban, tehát azt lehet mondani, hogy az űrlap TextBox-ot tartalmaz (vagy alternatívaként az űrlap TextBox-ból áll).
Különbség az öröklés és a konténerség között
Bár az öröklés és a tartósítás két OOP-koncepció, ők teljesen különböznek abban, amit lehetővé tesznek a programozó számára. Öröklés: az osztály azon képessége, hogy egy tulajdonságot és viselkedést örököljön egy szülőosztálytól annak kiterjesztésével, míg a tárolás az osztály azon képessége, hogy egy osztály különböző osztályú objektumokat tag-adatokként tartalmazzon. Ha egy osztály kibővül, akkor az összes nyilvános és védett tulajdonságot / viselkedést örökli, és ezeket az viselkedéseket az alosztály felülbírálhatja. De ha egy osztályt egy másik tartalmaz, akkor a tároló nem képes megváltoztatni vagy hozzáadni viselkedését a tartalomhoz. Az öröklés egy „van-egy” kapcsolatot jelent az OOP-ban, míg a „Containership” egy „van-egy” kapcsolatot képvisel.