Különbség az öröklődés és az összetétel között

Különbség az öröklődés és az összetétel között
Különbség az öröklődés és az összetétel között

Videó: Különbség az öröklődés és az összetétel között

Videó: Különbség az öröklődés és az összetétel között
Videó: Mi a baj a mai Bibliákkal? - az új világvallás Bibliái 2024, November
Anonim

Öröklés vs összetétel

Az öröklődés és a kompozíció az OOP (objektumorientált programozás) két fontos fogalma. Egyszerűen fogalmazva, az Összetétel és az Öröklődés is azzal foglalkozik, hogy további tulajdonságokat vagy viselkedést biztosítson egy osztálynak. Az öröklődés egy osztály azon képessége, hogy tulajdonságait és viselkedését örökölje a szülőosztálytól annak kiterjesztésével. Másrészt a kompozíció egy osztály azon képessége, hogy különböző osztályú objektumokat tartalmazzon tagadatként.

Mi az öröklés?

Amint fentebb említettük, az öröklődés egy osztály azon képessége, hogy tulajdonságait és viselkedését örökölje egy szülőosztálytól annak kiterjesztésével. Az öröklődés lényegében a kód újrafelhasználását biztosítja azáltal, hogy lehetővé teszi egy meglévő osztály tulajdonságainak és viselkedésének kiterjesztését egy újonnan definiált osztállyal. Ha az A osztály kiterjeszti a B-t, akkor a B osztályt szülőosztálynak (vagy szuperosztálynak), az A osztályt pedig gyermekosztálynak (vagy származtatott osztálynak/alosztálynak) nevezzük. Ebben a példahelyzetben az A osztály örökli a szuperosztály (B) összes nyilvános és védett attribútumait és metódusát. Az alosztály opcionálisan felülírhatja (új vagy bővített funkcionalitást biztosít a metódusoknak) a szülőosztálytól örökölt viselkedést.

Az öröklődés egy „is-a” kapcsolatot jelent az OOP-ban. Ez lényegében azt jelenti, hogy A egyben B is. Más szóval, B lehet az az osztály, amely egy bizonyos valós világbeli entitás általános leírását tartalmazza, de A egy bizonyos specializációt határoz meg. Valós programozási problémák esetén a Személy osztályt ki lehet terjeszteni az Employee osztály létrehozására. Ezt nevezik specializációnak. De először létrehozhatja az Employee osztályt, majd általánosíthatja azt egy Személy osztályra is (pl.e. általánosítás). Ebben a példában a Munkavállaló a Személy összes tulajdonságával és viselkedésével rendelkezik (azaz az alkalmazott egyben személy is), és tartalmazhat további funkciókat is (tehát a személy nem alkalmazott).

Mi az a kompozíció?

A kompozíció egy osztály azon képessége, hogy tagadatként különböző osztályok objektumait tartalmazza. Például az A osztály tartalmazhat egy B osztályú objektumot tagként. Itt a B-ben definiált összes nyilvános metódus (vagy függvény) végrehajtható az A osztályon belül. Az A osztály lesz a tároló, míg a B osztály a beépített osztály. A kompozíciót konténernek is nevezik. Ebben a példában elmondható, hogy az A osztály a B osztályból áll. Az OOP-ban a Kompozíció „has-a” kapcsolatot jelent. Fontos megjegyezni, hogy bár a tárolónak hozzáférése van a benne fogl alt osztály összes nyilvános metódusának végrehajtásához, nem képes megváltoztatni vagy további funkciókat biztosítani. Amikor egy valós programozási problémáról van szó, egy TextBox osztályú objektum szerepelhet a Form osztályban, és így elmondható, hogy egy Form tartalmaz egy TextBox-ot (vagy egy másik lehetőség, hogy az űrlap egy TextBoxból áll).

Mi a különbség az öröklődés és az összetétel között?

Bár az öröklődés és a kompozíció két OOP-fogalom, meglehetősen különböznek abban, amit a programozó elérhet. Az öröklődés az a képessége, hogy egy osztály tulajdonságait és viselkedését örökölje a szülőosztálytól annak kiterjesztésével, míg a Kompozíció az osztály azon képessége, hogy különböző osztályokhoz tartozó objektumokat tartalmazzon tagadatként. Ha egy osztályt kiterjesztenek, az örökli az összes nyilvános és védett tulajdonságot/viselkedést, és ezeket a viselkedéseket az alosztály felülírhatja. De ha egy osztályt egy másik tartalmaz, a tároló nem képes megváltoztatni vagy hozzáadni a benne lévő viselkedést. Az öröklődés egy „is-a” kapcsolatot jelent az OOP-ban, míg a Kompozíció egy „van-a” kapcsolatot.

Ajánlott: