Pagkakaiba sa Pagitan ng Mana at Komposisyon

Pagkakaiba sa Pagitan ng Mana at Komposisyon
Pagkakaiba sa Pagitan ng Mana at Komposisyon

Video: Pagkakaiba sa Pagitan ng Mana at Komposisyon

Video: Pagkakaiba sa Pagitan ng Mana at Komposisyon
Video: MGA REQUIREMENTS SA PAGPAPA-SURVEY NG LUPA 2024, Hulyo
Anonim

Inheritance vs Composition

Ang Inheritance at Composition ay dalawang mahalagang konsepto na makikita sa OOP (Object Oriented Programming). Sa simpleng mga termino, parehong nakikitungo ang Komposisyon at Pamana sa pagbibigay ng mga karagdagang katangian 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 Komposisyon 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 Inheritance 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 Komposisyon?

Ang komposisyon ay ang kakayahan ng isang klase na maglaman ng mga bagay 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 komposisyon ay tinutukoy din bilang Containership. Sa halimbawang ito, masasabing ang klase A ay binubuo ng klase B. Sa OOP, ang Komposisyon 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).

Ano ang pagkakaiba ng Mana at Komposisyon?

Bagaman ang Inheritance at Composition 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 class sa pamamagitan ng pagpapalawak nito, habang ang Composition 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 Komposisyon ay kumakatawan sa isang "may-a" na relasyon.

Inirerekumendang: