Friday, 1 March 2019

Object Oriented Methodology - Abstraction හදුනාගනිමු


Abstraction කියන්නේ අදාළ තොරතුරු පමණක් නිරූපණය කරන ගුණයයි. මෙහිදී අනවශ්‍ය කොටස්  ඒකක user පෙන්වන්නේ නැහැ. උදාහරණයක් ගතහොත් කාර් එකක් සලකමු. කාර් එක දර්ශනය වන්නේ  කාර් එක විදිහට මිසක් තනි සංරචකයන් විදිහට නොවේ.

රෝද 4 ක් ඇති, බොඩි එකයි, ෂීට් ටිකයි, හා එන්ජින් අඩංගු හා තව කොටස් අඩංගු  වාහනයක් කියලා හදුන්වන්න පුලුවන්. නමුත් ඒවා driver වැදගත් වේ. නමුත් කර් එකේ passengers ලට ඒවා දැනගැනීම වැදගත් නොවේ.

තව උදාහරණයක් ගතහොත් Coffee හදන wending machine එකක් ගතහොත් ඒකෙන් Coffee එකක් හදලා දෙනවා. ඒක රහට සීනි ගානට එන විදිහට තියෙනවා. නමුත් wending machine එකේ Coffee හදන්න ඇතුලේ වන දේවල් අපට දකින්න බැහැ.මෙහිදි wending machine එකකින් Coffee සාදා ගැනීම  එකකි.

Programming වලදීත් මේ වගේ තමා. ඇතුලේ ඇති ඇති අර්ථ දැක්වීම් නොපෙන්වමින් අදාළ දේ පමණක් පෙන්වමින් Abstraction සිදුකරයි. Java වලදි Abstraction ලබා ගන්නේ Interface හා Abstraction  වලිනි. ඉන් 100% ක් ම   නිරූපනය කරන්නනේ Interface තුළ ය.

Abstraction ඇති classes හදුන්වන්නේ Abstract class කියාය. එම Abstract class නිර්මාණය කිරීමට Abstract කියන keyword එක යොදා ගැනේ. Abstraction ඇති classes හදුන්වන්නේ concrete class කියාය.

උදාහරණය

abstract class Abstract_Animal{
   //method or class
}

Method එකේ විස්තර කරලා නම් (implement කරලා නම්) ඒ Method  එක concrete method  එකක් වේ. Abstract class එකක method ඔක්කොම,  concrete method වෙන්ත් පුලුවන් ඔක්කොම Abstract method වෙන්නත් පුලුවන්. ඒකියන්නේ අඩුම තරමින් එක Abstract method එකක් ඕනෑ Abstract class එකක් සෑදීමට. Abstract method නිරූපනය කරන්නේ method signature එකත් එකක් Abstract කියන keyword එක යොදා ගෙනය . මේකේ body එකක් නැහැ. අවසන් කිරීමට සගල වරහන් යුගල වෙනුවට({) තිත් කොමා(;) යොදා ගැනේ.

උදාහරණය
abstract double area(double height, double width);

හැබැයි යම් class එකක් Abstract method එකක් හෝ කිහිපයක් තියෙනවා නම්  ඒක අනිවාර්යෙන්ම Abstract class එකක් කරන්න ඕනෑ. Abstract class එකක් refer කරලා Abstract class එකක් හදන්න(instantiate) කරන්න බැහැ.

Encapsulation එකේදී data එක සගවනවා වගේම  Abstraction  වලදි implement details සගවයි.

Abstraction වල වාසි

  • ක්‍රම ලේඛනයේ පැටලිලි බව හා සංකීර්ණ බව අඩු කරයි.
  • කේත වල duplicate සෑදීම වලකයි.
  • නැවත භාවිතය(re-usability) වැඩිකරයි.
  • කේත වල ආරක්ෂව වැඩිකිරීමට උපකාරීවේ.

No comments:

Post a Comment