6/27/11

object oriented programming | වස්තු පාදක ක්‍රමලේකනය III

Encapsulation vs Abstraction


ඔන්න කීප දෙනෙකුට ප්‍රශ්නයයක් ඇවිල්ලා තිබ්බා මේ Encapsulation සහ Abstraction ගැන ඒ හින්දා ටිකක් ඒක වැඩිපුර පැහැදිලි කරන්න හිතුවා

මුලින්ම පොතේ තියන විදියට දාන්නම්කෝ
 Encapsulation is information hiding.
 Abstraction means working on a higher level, not worrying about the internal details



 Encapsulation හැම තිස්සෙම සම්බන්ද වෙන්නේ දත්ත එහෙම නැත්නම් object එකක state එකත් එක්ක ..
නැත්නම් Encapsulation  එකක්ති වෙන්නේ අපේ දත්ත වටා බැම්ම බදින එක .. නමුත්  ඒ object එකේ දත්ත භාවිතයට ගන්න පුද්ගලයට  සීමා සහිත කපොලු කිහිපයකුත් තියනවා දත්ත වලට පිවිසෙන්න

Abstraction වලදි අපි object එකක behavior එක පිලිබදව තමා සම්බන්ද වෙන්නේ මෙතනදි මේ behavior එකෙන් object එකකේ state එක වෙනස් කිරීම සිද්ද වෙනවා නමුත් එය වෙනස් වන විදිය ගැන එහම නැත්නම් implementation එක ගැන ඒ object එක භාවිතා කරන පුද්ගලයට නිරාවරනය වීමක් වෙන්නෑ

ඔන්න අපි තව දුරටත් මේක අපිට සමීප උදාහරනයකින් ගම්මුකෝ



ඔන්න තියෙනවා වතුර ටැංකියක් මේකෙ තියෙන වතුර තමයි data .. මේ ටැංකියට පිටාර නළයකුයි .. වතුර ඇතුල් කරන්න නළයකුයි ..වතුර ගන්න නළයකුයි තියෙනවා මේ නළ ටික තමා අපේ Encapsulation  methods
අපිට ටැංකියේ වතුර ගන්න හරි ටැංකිය පුරවන්න හරි ඕනෑ උනාම අපි ඔය නළ ටික තමා පාවිච්චි කරන්නේ නැතුව ටැංකියේ උඩ පියන ඇරලා වතුර දාන්නවත් ගන්නවත් යන් නෑනෙ
අන්න ඒ වෙගේ වතුර (data ) වලට තියෙන අනවශ්‍ය ප්‍රවේශ මාර්ග වලක්වලා වඩා ආරක්ශාකාරී කර්මයකට (Encapsulation  methods \ getters and setters )  මගින් වතුර (data ) වලට පිවිසීමට ඉඩ ලබා දීම තමා Encapsulation  කියන්නේ



Abstraction කියන්නේ මේ වතුර ටැංකියේ වතුර පිටවෙන නලයට හයි කරලා තියෙන ටැප් එකක් වගේ වතුර ටැංකියෙන් වතුර ගන්න ඕනි එක්කෙනෙක් කරන්නේ ටැප් එක අරින එක ... එතකොට වතුර එනවා ... නමුත් මේ වතුර එන්න බලපාන විභව ගක්තිය පීඩනඅන්තරය වගේ දේවල්  ටැප් එක අරින එක්කෙනාට පේන් නෑනෙ ..එයා අනික ඒ ගැන වද වෙන්නත් ඕනි නෑ  .. Abstraction කියන්නේත් ඒවගේ .. වතුර (data )  වලින් අවසාන ප්‍රයෝජනය ගන්න එක්කෙනාට ඒ වතුර (data ) එතෙන්ට ආවෙ කොහොමද කියලා දැනගන්න නොදෙන විදියට කෝඩ් ලියන එක තමා Abstraction  කියන්නේ


මම හිතනවා කස්ටියටම තේරෙන්න ඇති කියලා  මෙතන තියෙනවා පොතේ හැටියට තවවත් ප්‍රශ්න තියෙනවනම් අහන්න පුලුවන් විදියට කියලා දෙන්නම් (OOP එව්වා විතරයි හොදේ)

6 comments:

budhajeewa said...

රායිට්. එතකොට (අර කලිං ගත්තු උදාහරණේ විදියට) Encapsulation කියන්නේ වයර් කැලි ඇමිණීමේ බරපතල ක්‍රියාදාමේ ස්විච් එකකිං වැසීම. Abstraction කියන්නේ එහෙම හයි කරපු ස්විච් එක පාවිච්චි කරලා බල්බ් එක දැල්වෙන හා අක්‍රිය යන අවස්ථා වලට පත් කරවා ගැනීම.

නේ?

Confiuzd ප්‍රෝග්‍රැමර් said...

@budhajeewa : හරියට හරි ... හැබැයි ස්විච් එක ඇතුලේ ක්‍රියාකාරිත්වය අපිට වැඩක් නෑ .. අපි දන්නේ ස්විච් එක දෙපැත්තට දාන්න විතරයි

Chamli said...

නියමා..............යි.
දිගටම ලියමු..

Asith said...

එල සහෝ. දිගටම ලියමු.

AHP said...

Niyama wedak

චතුර බුද්ධික said...

suppppperrrrrrr

Post a Comment