Back to Basics: OOP and C# (Encapsulation) – Taglish

Ito ay ika-apat sa isang serye ng mga panulat tungkol sa Object Oriented Programming at C# at pangalawa na isinulat sa wikang Filipino at English. Sa unang bahagi, aking tinalakay ang Classes at Objects, sinundan ng Inheritance, at ito lamang nakaraan ay Polymorphism. Kung susundan mo sa unang bahagi, doon mo mapupuna ang mga ginamit na halimbawa ay nagpapakita na ng ilang pag-gamit ng Encapsulation na siyang paksa ng panulat na ito.

Sa MSDN, ito ay pinaliwanag na ganito:

“Naayon sa prinsipyo ng encapsulation, ang isang class o struct ay ang maglalarawan kung papaano mo nais magamit ang mga bahagi nito sa labas ng class o struct kung saan mo ito idiniklara.” Idinagdag pa dito na “Ano mang method at variable na hindi mo nais ipakita sa labas ng class o assembly ay maaari mo ring itago sa pamamagitan ng Encapsulation upang malimitahan ang hindi maayos na gamit.”

Ang nabanggit na Members
(o bahagi) sa itaas ay ang mga sumusunod:

Paalala: Ang bawat isa sa nabanggit ay link papunta sa kanilang kahulugan sa MSDN.

Ang mga Access Modifiers ang makapagsasabi kung ang ilan sa mga Members (o bahagi) na nabanggit ay maaring gamitin sa labas ng class o sa sarili loob lamang ng class kung saan ito naidiklara. Ang ginagamit sa salita upang maglarawan nito ay public, protected, internal, protected internal, at
private.

Upang ipakita ang isang halimbawa, balikan natin ang isang class na ating binuo (assuming na sinundan mo ang pagsulat nito sa unang tatlong bahagi ng serye):

Makikita natin dito na ang lahat ng miyembro ng class ay nakadiklara na public. Ito ay naglalarawan na ang sinumang gumamit ng class na ito, o gumamit ng assembly kung saan kabilang ang class na ito ay pwedeng gamitin sa kanilang code ang Grades, UpdateGrade at NameLastFirst.

Ilang bagay ang ating gagawin upang ipahiwatig ang intensiyon na ilarawan ang encapsulation na nababagay sa halimba sa itaas.

Una: dahil ang ‘Grades’ na property ay hindi natin nais ipagamit ng diretso, gagawin natin itong private;

Pangalawa: upang magamit ang ‘UpdateGrade’ sa derived classes at hindi sa iba pa, papalitan natin ang access modifier nito ng protected.

Pangatlo: ang pagpapakita ng laman ng Grades na koleksiyon sa parehas na assembly at derived classes ay maaring makamit sa pamamagitan ng protected internal.

Tingnan ang halimbawa sa ilalim:

Sa bagong halimbawa, hindi na makikita ang Grades at UpdateGrade kung ang class ay tatawagin sa isang instance.

Subalit maari paring makita sa isang derived class ang UpdateGrade, pero hindi ang Grades. Halimbawa:

At ang kalalabasan nito sa ating programa kapag pinatakbo ay:

read it, love it, live it!

Advertisements