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

Anonim

Öröklés és összetétel

Örökség és összetétel két fontos fogalom az OOP (Object Oriented Programming) programban. Egyszerű szavakkal, mind a Composition, mind az Inheritance foglalkozik további tulajdonságokkal vagy viselkedéssel az osztályhoz. Az öröklés az osztály azon képességét jelenti, hogy a szülőosztály tulajdonságait és viselkedését örököse kiterjesztésével. Másrészről, az összetétel az osztály azon képessége, hogy különböző osztályú objektumokat tartalmaz tagsági adatokként.

Mi az örökség?

Amint fentebb említettük, az öröklés az osztály azon képességét jelenti, hogy a szülőosztály tulajdonságait és viselkedését örököse kiterjesztésével. Az örökség lényegében kód újrahasználatot tesz lehetővé, lehetővé téve egy meglévő osztály tulajdonságainak és viselkedésének újonnan definiált osztály általi kiterjesztését. Ha az A osztály kiterjeszti a B-et, akkor a B osztályt szülő osztálynak (vagy szuperosztálynak) nevezik, és az A osztályt gyermekosztálynak (vagy származtatott osztálynak / alosztálynak) hívják. Ebben a példaprogramban az A osztály örökli a szuperosztály (B) összes nyilvános és védett tulajdonságát és módját. Az alosztály választhatóan felülbírálhatja (új vagy kiterjesztett funkcionalitást biztosít a módszerekhez) a szülő osztályból örökölt viselkedés.

Az öröklés egy "is-a" kapcsolatot jelent az OOP-ban. Ez lényegében azt jelenti, hogy A is egy B. Más szóval, B lehet egy osztály egy általános leírással egy bizonyos valós világi entitásról, de A meghatároz egy bizonyos specializációt. Egy valós programozási probléma esetén a személyosztály kiterjeszthető a Munkavállalói osztály létrehozására. Ezt specializációnak hívják. De először is létrehozhatja a Munkavállalói osztályt, majd általánosítható egy Személy osztályra is (azaz általános). Ebben a példában a Munkavállalónak minden személy tulajdonsága és viselkedése (vagyis a Munkavállaló is személy), és további funkciókat is tartalmazhat (tehát a Személy nem Munkavállaló).

Mi a kompozíció?

A kompozíció az osztály azon képessége, hogy különböző osztályú objektumokat tartalmaz tagsági adatokként. Például az A osztály tartalmazhat egy B. osztályú objektumot tagként. Itt a B -ben definiált összes nyilvános módszer (vagy függvény) végrehajtható az A osztályon belül. A osztály lesz a tároló, míg a B osztály lesz a zárt osztály. A kompozíciót Containership néven is nevezik. Ebben a példában azt mondhatjuk, hogy az A osztály B osztályból áll. Az OOP-ban a Composition egy "has-a" kapcsolatot képvisel. Fontos megjegyezni, hogy bár a tárolónak hozzáférése van a zárt osztály összes nyilvános módjának végrehajtásához, nem képes megváltoztatni vagy további funkciókat biztosítani. Amikor valódi világ programozási problémáról van szó, az osztály Formázási osztályba tartozó objektum szerepelhet az osztály Formában, és így meg lehet mondani, hogy egy Űrlap tartalmaz egy TextBox-ot (vagy egy Űrlap TextBox-ból áll).

Mi a különbség az örökség és a kompozíció között?

Habár az örökség és a kompozíció két OOP koncepció, ők teljesen különböznek egymástól attól, amit a programozó elérhet. Az öröklés egy olyan képesség, amely egy osztály számára lehetővé teszi a tulajdonságok és a viselkedés örökölését egy szülőosztályból kiterjesztéssel, míg a Composition egy osztály azon képességét jelenti, hogy különböző osztályú objektumokat tartalmaz tagsági adatokként. Ha egy osztályt meghosszabbít, örökölte az összes nyilvános és védett tulajdonságot / viselkedést, és az ilyen algoritmusok felülbírálhatják ezeket a viselkedésformákat. De ha egy osztály egy másikban van, a tartály nem képes megváltoztatni a viselkedést a tartalomra. Az örökség az OOP-ban egy "is-a" kapcsolatot jelent, míg a Composition egy "has-a" kapcsolatot képvisel.