Abstraction and Encapsulation

Anonim

Ang Abstraction at Encapsulation ay parehong mga pangunahing konsepto ng object oriented programming (OOP) na nagpapahintulot sa iyo na ipatupad ang mga bagay sa real-world sa mga program at code. Habang ang dalawa ay magkakapitay, ang mga ito ay ibang-iba sa bawat isa. Habang ang bawat paraan ay isang encapsulation, ito ay isang abstraction din. Sa simpleng mga termino, kapag inilagay mo ang magkakaibang mga bagay na magkakasama upang lumikha ng isang nilalang, ikaw ay talagang lumikha ng isang konsepto - isang abstract. Habang pareho ang mga ito ay hindi maaaring paghiwalayin ayon sa teknikal, mayroon silang literal na wala sa karaniwan. Ito ay halos totoo na ang bawat encapsulation ay isang abstraction dahil sila parehong itago ang isang bagay, gayunpaman, mayroon silang kanilang makatarungang bahagi ng mga pagkakaiba.

Ano ang Abstraction?

Ang abstraction ay isang pangunahing konsepto ng OOP na nakatutok lamang sa may-katuturang data ng isang bagay at itinatago ang lahat ng mga hindi kaugnay na detalye na maaaring o hindi para sa generic o specialized na pag-uugali. Itinatago nito ang mga detalye sa background at binibigyang diin ang mga mahahalagang punto upang bawasan ang pagiging kumplikado at dagdagan ang kahusayan. Karaniwang, ang abstraction ay isang tool sa programming upang pamahalaan ang pagiging kumplikado. Nakatuon ang abstraction sa mga ideya sa halip na mga kaganapan. Itinatago nito ang mga detalye sa antas ng disenyo sa pamamagitan ng pagbibigay ng pag-andar sa mga gumagamit. Ang nagresultang bagay ay maaari ring tinatawag na abstraction. Tinitiyak ng programmer na ang pinangalanang entity ay magkakaroon ng lahat ng mahahalagang aspeto at wala sa mga walang katuturan.

Kumuha ng real-world na halimbawa ng abstraction. Isaalang-alang natin ang kaso ng isang sasakyan, na sa kasong ito ay ang iyong sasakyan. Ang isang mekaniko ay sumusubok na ayusin ang iyong sasakyan o sabihin ang isang partikular na bahagi ng iyong sasakyan. Dito, ikaw ang gumagamit at ayaw mong makuha ang mga detalye ng iyong sasakyan o kung anong bahagi ang talagang sinira. Hindi mo talaga pinahahalagahan ang mga bagay na iyon; gusto mo lamang ang iyong sasakyan pabalik sa orihinal na kondisyon nito nang hindi nababahala tungkol sa mga detalye. Kaya, talagang sinabi mo ang mekaniko kung ano ang gusto mo sa pamamagitan ng paghiwalayin ang bahagi ng pagpapatupad. Ito ay abstraction. Nakatuon ka sa pinakamahalagang bagay, na nakukuha mo ang iyong kotse, sa halip na tumuon sa mga detalye.

Ano ang Encapsulation?

Ang Encapsulation ay isa pang konsepto ng OOP na nagbubuklod ng data at mga pag-andar sa isang bahagi habang pinaghihigpitan ang pag-access sa ilang mga bahagi. Ito ay isa sa mga pangunahing pangunahing konsepto ng OOP na bumabalot ng data at impormasyon sa ilalim ng isang yunit. Sa mga teknikal na termino, ang encapsulation ay nangangahulugang nagtatago ng mga katangian upang protektahan ang mga variable mula sa labas ng pag-access upang ang pagbabago sa isang bahagi ng isang application ay hindi makakaapekto sa iba pang mga bahagi. Sa kabaligtaran, sa pamamagitan ng pagbukas ng impormasyon nang mas bukas ikaw ay may panganib na maling paggamit ng data. Nagbibigay ito ng pangunahing integridad sa data sa pamamagitan ng pagprotekta nito mula sa labas ng mundo. Sa madaling salita, itinatago nito ang mga karagdagang detalye mula sa labas ng mundo.

Kumuha ng isang halimbawa ng isang Bluetooth na mouse. Kailangan mo lamang malaman tungkol sa pag-uugali ng aparato nang hindi nababahala tungkol sa mga detalye ng pagpapatupad tulad ng kung anong uri ng mga sensor ang mouse ay, ito ay wireless o hindi, atbp Ang bawat solong detalye ay naglalarawan ng mouse ngunit hindi alintana ng mga detalye, ito ay isang mouse lamang. Kailangan mo lang ng interface upang gamitin ang mouse, na sa kasong ito ay ang pointer ng mouse. Ito ay encapsulation.

Pagkakaiba sa pagitan ng Abstraction at Encapsulation

Habang pareho ang mga pangunahing konsepto na may kaugnayan sa OOP at ang mga ito ay technically hindi mapaghihiwalay, mayroon pa rin ang kanilang mga pagkakaiba sa maraming aspeto.

  1. Mga pagkakaiba sa "Kahulugan" ng Abstraction at Encapsulation - Abstraction ay isang pangunahing konsepto ng OOP na nagbibigay diin sa lahat ng mga mahahalagang aspeto ng isang bagay sa pamamagitan ng pagtatago ng mga hindi kaugnay na detalye upang madagdagan ang kahusayan at maalis ang pagiging kumplikado. Ang encapsulation, sa kabilang banda, ay isang mekanismo ng pagtatago ng data na bumabalot sa data at impormasyon sa isang kapsula upang paghigpitan ang pag-access mula sa labas ng mundo.
  2. Mga pagkakaiba sa "Pag-andar" ng Abstraction at Encapsulation- Abstraction ay isang mekanismo ng pagtatago ng data na nagpapakita lamang ng mga mahahalagang tampok upang gawing mas kumplikadong mga programa, habang ang encapsulation, sa kabilang banda, ay isang paraan ng umiiral na data at mga code sa isang solong entity. Ang ideya ay upang protektahan ang mga detalye ng pagpapatupad mula sa panlabas na pag-access.
  3. Mga Pagkakaiba sa "Pagpapatupad" ng Abstraction at Encapsulation - Ipinatupad ang abstraction gamit ang abstract class at interface, habang ang encapsulation ay ipinatupad gamit ang access modifier. Ang limang uri ng mga modifier ay ginagamit upang ma-encapsulate ang data: Pribado, Pampubliko, Panloob, Protektadong, at Protektado Panloob.
  4. Mga pagkakaiba sa "Konsepto" ng Abstraction at Encapsulation- Ang ideya sa likod ng abstraction ay mag-focus sa kung ano sa halip na kung paano. Ang Encapsulation ay nagtatago sa mga panloob na mekanika kung paano. Halimbawa, kapag nagmaneho ka ng kotse, alam mo kung ano ang ginagawa ng pedal ng preno ngunit hindi mo alam ang buong mekanismo sa likod nito dahil ang data ay naka-encapsulated.
  5. Pagkakaiba sa "Halimbawa" ng Abstraction at Encapsulation - Kumuha tayo ng halimbawa ng isang smartphone. Alam mo kung ano ang ginagawa nito ngunit hindi mo alam kung paano ginagawa nito kung ano ang ginagawa nito. Ikaw lamang ang nagmamalasakit sa screen ng display at mga pindutan ng keypad sa halip na nababahala tungkol sa panloob na circuitry nito. Dito, ang smartphone ay isang abstract kung saan ang mga panloob na mga detalye ng pagpapatupad ay naka-encapsulated.

Abstraksi kumpara sa Encapsulation gamit ang talahanayan ng paghahambing

Abstraction Encapsulation
Nag-uugnay lamang ito sa mga kaugnay na detalye sa pamamagitan ng pagtatago sa mga hindi kaugnay na mga gawain upang mabawasan ang pagiging kumplikado sa gayon ang pagtaas ng kahusayan. Pinagsasama nito ang data at impormasyon nang magkasama sa isang solong entity upang protektahan ang data mula sa panlabas na pinagkukunan.
Ito ay tumutukoy sa ideya ng pagtatago ng data na hindi kinakailangan para sa mga layunin ng pagtatanghal. Itinatago ang data at code upang paghigpitan ang hindi ginustong pag-access.
Nakatuon ito sa kung ano sa halip na kung paano. Itinatago nito ang mga panloob na mekanika kung paano ito gumagana.
Itinatago nito ang mga hindi kinakailangang detalye sa antas ng disenyo. Itinatago din nito ang mga detalye ngunit sa antas ng pagpapatupad.
Ang impormasyon at data ay hiwalay mula sa may-katuturang data. Ang impormasyon ay nakatago sa loob ng isang kapsula para sa malapit na pag-access.
Nag-uugnay ito sa mga ideya sa halip na mga kaganapan. Ang ideya ay upang protektahan ang data mula sa labas ng mundo.
Ipinatupad ito gamit ang abstract class at interface. Ipinatupad ito gamit ang protektado, pribado, at pakete-pribadong access modifier.

Buod

Habang pareho ang mga konsepto ng OOP na may kaugnayan sa pagtatago ng data, ang mga ito ay lubos na naiiba sa bawat isa. Kaugnayan rin sa pagtatago tulad ng encapsulation, ngunit habang itinatago ng dating ang pagiging kumplikado, pinanatili ng huli ang data na pinagsasama nito sa pamamagitan ng pagkontrol sa pag-access sa mga ito. Ang pagtatalakay ay tumutukoy sa konsepto na kumakatawan lamang sa mga kinakailangang katangian sa pamamagitan ng pagtatago ng mga hindi kaugnay na detalye upang bawasan ang pagiging kumplikado ng isang application sa gayon ang pagtaas ng kahusayan. Ang encapsulation, sa kabilang banda, ay tumutukoy sa konsepto ng pagtatago ng lahat ng mga panloob na mekanika ng isang programa upang maprotektahan ang impormasyon mula sa hindi ginustong pag-access. Binubuo nito ang data at impormasyon nang magkasama sa isang bahagi sa pamamagitan ng paghihigpit sa pag-access sa iba pang mga sangkap.