Pagkakaiba sa Pagitan ng Mana at Containership

Pagkakaiba sa Pagitan ng Mana at Containership
Pagkakaiba sa Pagitan ng Mana at Containership

Video: Pagkakaiba sa Pagitan ng Mana at Containership

Video: Pagkakaiba sa Pagitan ng Mana at Containership
Video: PAG-IBIG PUBLIC AUCTION VS NEGOTIATED SALE (ANONG PINAGKAIBA??) 2024, Nobyembre
Anonim

Inheritance vs Containership

Ang Inheritance at Containership ay dalawang mahalagang konsepto na makikita sa OOP (Object Oriented Programming Example: C++). Sa simpleng mga termino, parehong nakikitungo ang Containership at Inheritance sa pagbibigay ng mga karagdagang property o gawi sa isang klase. Ang inheritance ay ang kakayahan para sa isang klase na magmana ng mga ari-arian at pag-uugali mula sa isang parent na klase sa pamamagitan ng pagpapalawig nito. Sa kabilang banda, ang Containership ay ang kakayahan ng isang klase na maglaman ng mga object ng iba't ibang klase bilang data ng miyembro.

Ano ang Mana?

Tulad ng nabanggit sa itaas, ang Inheritance ay ang kakayahan para sa isang klase na magmana ng mga property at pag-uugali mula sa isang parent na klase sa pamamagitan ng pagpapalawig nito. Ang inheritance ay mahalagang nagbibigay ng muling paggamit ng code sa pamamagitan ng pagpapahintulot sa pagpapalawak ng mga katangian at pag-uugali ng isang umiiral na klase ng isang bagong tinukoy na klase. Kung ang class A ay umaabot sa B, ang class B ay tinatawag na parent class (o super class) at ang class A ay tinatawag na child class (o derived class/sub class). Sa halimbawang senaryo na ito, ang class A ay magmamana ng lahat ng pampubliko at protektadong katangian at pamamaraan ng super class (B). Maaaring opsyonal na i-override ng subclass (magbigay ng bago o pinahabang functionality sa mga pamamaraan) ang gawi na minana mula sa parent class. Ang mana ay kumakatawan sa isang "is-a" na relasyon sa OOP. Ito ay mahalagang nangangahulugan na ang A ay isa ring B. Sa madaling salita, ang B ay maaaring ang klase na may pangkalahatang paglalarawan ng isang partikular na entity sa totoong mundo ngunit ang A ay tumutukoy sa isang partikular na espesyalisasyon. Sa isang tunay na problema sa programming sa mundo, ang klase ng Tao ay maaaring palawigin upang lumikha ng klase ng Empleyado. Ito ay tinatawag na espesyalisasyon. Ngunit maaari mo ring gawin muna ang klase ng Empleyado at pagkatapos ay i-generalize din ito sa klase ng Tao (i.e. paglalahat). Sa halimbawang ito, ang Empleyado ay magkakaroon ng lahat ng pag-aari at pag-uugali ng Tao (i.e. Ang Empleyado ay Tao rin) at maaaring maglaman ng ilang karagdagang functionality (kaya, ang Tao ay hindi isang Empleyado).

Ano ang Containership?

Ang Containership ay ang kakayahan ng isang klase na maglaman ng mga object ng iba't ibang klase bilang data ng miyembro. Halimbawa, ang klase A ay maaaring maglaman ng isang bagay ng klase B bilang isang miyembro. Dito, ang lahat ng mga pampublikong pamamaraan (o mga function) na tinukoy sa B ay maaaring isagawa sa loob ng klase A. Ang Class A ay nagiging lalagyan, habang ang klase B ay nagiging nilalamang klase. Ang Containership ay tinutukoy din bilang Komposisyon. Sa halimbawang ito, masasabing ang klase A ay binubuo ng klase B. Sa OOP, ang Containership ay kumakatawan sa isang "may-a" na relasyon. Mahalagang tandaan na, kahit na ang lalagyan ay may access upang isagawa ang lahat ng mga pampublikong pamamaraan ng nakapaloob na klase, hindi nito magagawang baguhin o magbigay ng karagdagang pag-andar. Pagdating sa isang tunay na problema sa programming sa mundo, ang isang object ng klase na TextBox ay maaaring nakapaloob sa klase na Form, at sa gayon ay masasabing ang isang Form ay naglalaman ng TextBox (o bilang kahalili, ang isang Form ay binubuo ng isang TextBox).

Pagkakaiba sa pagitan ng Inheritance at Containership

Bagaman ang Inheritance at Containership ay dalawang konsepto ng OOP, medyo magkaiba ang mga ito sa kung ano ang pinapayagan nilang makamit ng programmer. Ang inheritance ay ang kakayahan para sa isang klase na magmana ng mga katangian at pag-uugali mula sa isang parent na klase sa pamamagitan ng pagpapalawak nito, habang ang Containership ay ang kakayahan ng isang klase na maglaman ng mga object ng iba't ibang klase bilang data ng miyembro. Kung pinalawig ang isang klase, mamanahin nito ang lahat ng pampubliko at protektadong pag-aari/gawi at ang mga pag-uugaling iyon ay maaaring ma-override ng subclass. Ngunit kung ang isang klase ay nakapaloob sa isa pa, ang lalagyan ay hindi makakakuha ng kakayahang magbago o magdagdag ng pag-uugali sa nilalaman. Ang inheritance ay kumakatawan sa isang "is-a" na relasyon sa OOP, habang ang Containership ay kumakatawan sa isang "may-a" na relasyon.

Inirerekumendang: