header

header

Thursday, January 16, 2014

වස්තු පාදක පද්ධති සංවර්දනය-4

අපි පහුගිය ලිපියේ OO වල පළමු ෆීචර්(feature) එක ගැන කතා කළා.හරි දැන් අපි මේකේ ප්‍රයෝජනය මොකක්ද කියලා බලමු.කෙටියෙන් කිව්වොත් අබ්ස්ට්‍රක්ෂන්(abstraction) එකෙන් බලා පොරොත්තු වෙන්නේ ඉන්ටර්ෆේස්(interface) එක ඉම්ප්ලිමන්ට්(implementation) එකෙන් වෙන්කරලා අදුන ගන්න එක.අපි ඒ ගැන සවිස්තරව බලමු.

ඉන්ටර්ෆේස්  හා ඉම්ප්ලිමන්ටේෂන් එක අතර වෙනස


උදාහරණයක් විදියට අපි කලින් කතා කරපු ඩ්‍රයිවර්ට ස්ටියරින්ග් වීල්(steering wheel) එක ක්‍රියාත්මක කරන්නේ කොහොමද කියලා දැනගත්තම ප්‍රමාණවත්,එහෙම නැතුව ඒකෙ අභ්‍යන්තර මැකැනිසම්(mechanism) එක ඒ කියන්නෙ  වීල් එක සම්බන්ද වෙන එක එක කොම්පොනන්ට්ස්(components) හා ජෝයින්ට්ස්(joints) ගැන දැනුමක් අවශ්‍ය වෙන්නේ නැහැ.ඉන්ටර්ෆේස් එක කියන්නෙ අදාල දේත් එක්ක මොනවද කරන්න පුළුවන්(what can be done) කියන එක යුසර් ගේ වීව්(view) එකින්.ඉම්ප්ලිමන්ටෙෂන් කියන්නෙ යුසර්ට වැදගත් නැති අදාල දේ ගොඩනගද්දී අවශ්‍ය වෙන අභ්‍යන්තර ක්‍රියාවලි(internal operations).

එන්කැප්සියුලේෂන්(encapsulation)
යුසර්ගේ වීව් එකට අනුව ෆීචර්ස් ගණනාවක් එන්ටිටි(entity) එකක(අබ්ස්ට්‍රක්ෂන් කිව්වත් වැරදි නැහැ) කැප්සියුල්(capsule) කරලා තියෙන්නේ.එක හරියට අපි හොදටම දන්නා බෙහෙත් කරලක අදාළ රසායනික සංයෝගය අන්තර්ගත කරලා තියෙනවා.එන්ටිටි එකෙන් යුසර්ට සර්විසස්(services) සපයන්නේ ඉම්ප්ලිමන්ට් ඩිටේල්ස්(implement details) සගවලා ඉන්ටර්ෆේස් එකක් හරහා.මෙලෙස  එන්කැප්සියුලේෂන් හරහා තොරතුරු සැගවීම සිදුකරනු ලබනවා.
කලින් අප බාවිතා කල උදාහරණයම සැලකුවොත් ඩ්‍රයිවර් ස්ටීරින්ග් මැකැනිසම් එක දන්නේ නැහැ.එක තොරතුරු සගවීමක් ලෙස දක්වන්න පුළුවන්.මොන වර්ගයේ ස්ටීරින්ග් වීල් එකක් වුනත්(කාර් එකක,බස් එකක,වැන් එකක මොක වුනත්) කරකවන විදිය එකයි.ඒ අනුව ස්ටීරින්ග් වීල් එක කැරකැවීම ඉන්ටර්ෆේස් එක හැටියට සලකන්න පුළුවන්.යුසර්ට(මෙතැනදී නම් ඩ්‍රයිවර්ට) පෙනෙන ස්ටීරින්ග් වීල්  එක(ඉන්ටර්ෆේස් එක)  වෙනස් වෙන්නේ නැහැ ස්ටීරින්ග් මැකැනිසම් එක මොක වුනත්(පවර් ස්ටීරින්ග් වගේ).මේ අනුව අපිට පැහැදිලි වෙන දෙයක් තමයි අපිට පුළුවන් වෙනවා,ඉම්ප්ලිමෙන්ටේෂන් එක වෙනස් කරන්න ඉන්ටර්ෆේස් එකට වෙනසක් වෙන්නේ නැතුව.මේකට තමයි කියන්නෙ ඉම්ප්ලිමන්ටෙෂන් ඉන්ඩිපෙන්ඩන්ස්(independence) කියලා.
ව්‍යුහගත ක්‍රමලේකනයේදී(structured programming) පළමුවෙන්ම ගැටළුවක් විසදීම සදහා අලෝගරිතමයක් සකස් කරනු ලබනවා.අපේ වැඩසටහනෙහි ෆන්ක්ෂන්ස්(functions) තීරණය කරනු ලබන්නේ එම අලෝගරිතමයට අනුව.එලෙස ලබාගත් ෆන්ක්ෂන්ස් දත්ත කොටසක් මත ක්‍රියාත්මක වෙනවා.මෙම ක්‍රමලේකනයේදී අලෝගරිතමය සංවර්දනය කිරීමට සුවිශේෂ තැනක් හිමිවෙනවා.දත්ත සදහා සුවිශේෂී තැනක් හිමිවෙන්නේ නැහැ.මෙයින් ඇතිවන අවාසනාවන්ත තත්වය නම් යම් තීරණාත්මක දත්ත වලට පවා ග්ලෝබලි ඇක්සෙස්(globally access) කරන්න පුළුවන් වීමයි.
නමුත් රියල් වර්ල්ඩ්(real world) එකේදී ගැටළුවක් විසදන්නේ වගකීම ඔස්සේ දිවෙන ප්‍රවේශයකින්.ටිකක් විතර තේරුනේ නෑ නේද?කමක් නැ කියවගෙන යන්න දිගටම.හරි,මම කිව්වේ රියල් වර්ල්ඩ් එකේ ගැටළුවක් විසදන ස්වබාවික ක්‍රමය(natural method) ගැන.එහි පහත ලක්ෂණ දකින්න පුළුවන්.
1.පණිවිඩ හුවමාරුව(message communication).
2.වියුක්ත දැකීම(abstraction).
3.දත්ත සැගවීම(data hiding).
මෙලෙස අප නොදැනුවත්වම ගැටළු විසදීමේ සාමාන්‍ය ක්‍රමවේදය තුල අප අවදානය යොමු කරලා තියෙන්නේ අපි කලින් OO වලදී ඉගෙන ගත්ත සංකල්ප වලට නේද?මෙතනදී ව්‍යුහගත ක්‍රමලේකනයෙදී අපි විශේෂ තැනක් නොදීපු දත්ත(data) වලට සුවිශේෂී තැනක් දෙනවා.මොකක්හරි ක්‍රියාවක් අරබන්නේ මැසේජ් එකක ආයාචනයකින්(invoke).දත්ත හා ෆන්ක්ෂන්ස් එකට බන්ඩ්ල්(bundle) කරලා හදාගත්ත ඔබ්ජෙක්ට්ස් සමුහයක ආදාරයෙන් තමයි ගැටලුව විසදන්නේ.මෙලෙස වස්තු පාදක ක්‍රමලේකන බාශාවන්  දියුණු කරලා තියෙන්නේ වස්තු පාදක සංකල්ප බාවිතා කරලා.


වස්තු පාදක ක්‍රමලේකන සුසමාදර්ශන(object-oriented programming paradigms).
මේ දක්වා අපි Object-Oriented කියන වචනෙට බාවිතා කරේ වස්තු පාදක කියන වචනේ.නමුත් මම මේ ලිපි පෙළ ආරම්බයේදීම කිව්වා මෙතනදී වඩා හොදම වචනේ වස්තු දිශානත කියන එක.ඒ මොකද වස්තු පාදක(Object-based) කියන තැනදී ඉස්මතු වෙන්නේ ඩේටා අබ්ස්ට්‍රක්ෂන්(data abstraction) කියන එක විතරයි.වස්තු දිශානත කියන තැනදී ඊට එහා ගිය ඉන්හෙරිටන්ස්(inheritance) හා පොලිමොෆිස්ම්(polymorphism) කියන තවත් ලක්ෂණ දෙකක් ඉස්මතු වෙනවා.ඒ අනුව වස්තු යොදාගෙන කරනු ලබන ක්‍රමලේකනය කොටස් දෙකකට බෙදන්න පුළුවන්.
1.object-based programming languages
2.object-oriented programming languages
එතකොට object-based ක්‍රමලේකනයේදී  එන්කැප්සියුලේෂන් වැනි ලක්ෂණ දක්නට ලැබුණත් ඉන්හෙරිටන්ස් ,පොලිමොෆිස්ම් හා පණිවිඩ හුවමාරුව හුගක් දුරට දකින්න ලැබෙන්නේ නැහැ.
object-based languages=Encapsulation+Object Identity
මෙවෙනි පරිගණක බාෂා සදහා උදාහරණ ලෙස Ada,C,Haskell යන්න දැක්විය හැකිය.
object-oriented languages=Object based features+Inheritance+Polymorphism
Object-Oriented languages වල මොන සේවකයාසයිස් එකේ ප්‍රොජෙක්ට් එකකට වුනත් වැඩසටහනක බිල්ඩින්ග් බ්ලොක්ස් වෙන්නේ මොඩියුල කියල දෙයක්.මොඩියුලයක් කියන්නෙ එකිනෙක සම්බන්ද වෙන(logically) ඔබ්ජෙක්ට්ස්,ෆන්ක්ෂන්ස් එක් කරලා හදපු දෙයක්.කලින් අපි බාවිතා කරේ මේකට සබ්ප්රෝග්‍රම්ස් කියන වචනේ බව මතක ඇතිනේ.
මෙතනදී අවසාන වශයෙන් තවත් කරුණු කීපයක් මෙලෙස ගොනු කරන්න පුළුවන්.ක්ලාසස් හා ඔබ්ජෙක්ට්ස්(object-model) මොනවද කියන එක පිලිබදව හොද පැහැදිලි අවබෝදයක් මෙතනදී අවශ්‍ය වෙනවා.ඔබ්ජෙක්ට් එකක් කියන්නෙ සරලව කිව්වොත් මනාව විස්තර කෙරුණු සීමාවක්(crisp-defined boundary) ඇති සංකල්පයක්.ඒ කියන්නෙ පොත,පෑන,ශිෂ්‍යයා,සේවකයා වගේ උදාහරණ ඔබ්ජෙක්ට්ස් වලට දෙන්න පුළුවන්.දැන් මේ එන්ටිටි ටික බලන්න.ලස්සන,ගංගාව,අහස...ඒවායේ සීමාව පිළිබද අදහසක් නැහැ.ඒ නිසා ඒවා ඔබ්ජෙක්ට්ස් හැටියට ගන්නේ නැහැ.සත්‍ය ලෝකයේ ගැටළු විසදන්න අපි ඔබ්ජෙක්ට්ස් හා ක්ලාසස් වලින් යුක්ත ආකෘතියක් හදාගන්නවා,මේක තමයි ඔබ්ජෙක්ට් මොඩ්ල් කියලා හැදින්වෙන්නේ.
 
තවත් විස්තර රැගත් ලිපියකින් නුදුරේදීම හමුවෙමු.

No comments:

Post a Comment