Monday, January 27, 2014

ලිනක්ස් ඉගෙනගනිමු

ඔබ පරිගණක විද්‍යාව හැදෑරුවොත් ඔබට අනිවාර්යෙන්ම වැඩකරන්න ඉගෙන ගන්න වෙන්නේ ලිනක්ස්-බේස්ඩ්(linux-based) ඔපරේටින් සිස්ටම්(operating system) තියෙන පරිගනකත් එක්ක.ඒ කියන්නෙ අපි මෙතෙක් කල් දැනගෙන හිටියෙත් වැඩකලෙත් මයික්රෝසොෆ්ට්ලගේ වින්ඩෝස් එක්කනේ.නමුත් එක වාණිජ මෘදුකාංගයක්.අපි වගේ රටක විශ්වවිද්‍යාල ඇතුළු උසස් අධ්‍යාපන ආයතනවල ඒවා පවත්වාගෙන යන්න තරම් අපේ රට දියුණු නැහැ.ඒ නැතත් නිදහස් මෘදුකාංග(free and open source) වල වාසිය ඒවා ඩිවෙලොප් කරන්න පුළුවන්.සෝර්ස් කොඩ්ස්තුත් දෙනවනේ.මේ වගේ හේතු නිසා අපිට ලිනක්ස් ගැන හොද දැනුමක් තියෙන්න ඕන.මෙතනදී මම වෙනම ලිපි පෙළක් ලිනක්ස් ගැන ලියන්න බලාපොරොත්තු වෙන්නේ නැහැ.සිංහල බ්ලොග් අවකාශයේ මම කියවපු හොද බ්ලොග් කිහිපයකට මග පෙන්නන්නයි හදන්නේ,

  1. මේකේ තියෙනවා,ආරම්බයේ ඉදලම වටපිටාව ඔක්කොම විස්තර කරලා,කාලය අරගෙන ආසාවෙන් කියවලා බලන්න-http://linux-sinhala.blogspot.com
  2. මෙතන තියෙනවා IET එකේ  සහෝදරයෙක් ලියපු තවත් අඛන්ඩ ලිපි පෙළක්-http://sudill12.blogspot.com
  3. ලිනක්ස්-බේස්ඩ් මෙහෙයුම් පද්ධති(ෆෙඩෝරා,උබුන්ටු වැනි) සමග වැඩ කිරීමේදී ඇතිවන ප්‍රශ්න මේ බ්ලොගය තුල විස්තර කරලා තියෙනවා-http://linuxformee.blogspot.com 
  4. තව ලිනක්ස් -බේස්ඩ් ඔපරේටින් සිස්ටම් ගැන සින්හලෙන් වගේම ඉංග්‍රීසියෙනුත් ලියපු ලිපි මේ බ්ලොග් එකේ තියෙනවා-http://prabu-lk.blogspot.com/
  5. මේ බ්ලොග් එක සම්පුර්ණයෙන්ම ලිනක්ස් වලට මාරුවෙලා වැඩ කරන සහෝදරයෙකුගේ බ්ලොග් එකක්.තමන්ගේ අත්දැකීමෙන් ඉගෙන ගත්තු ගොඩක් දෙඅල් මේ බ්ලොග් එකේ කතෘ ලියල තියෙනවා.ගොඩක් දේවල් ඉගෙනගන්න පුළුවන් අපිට.කොටින්ම කිව්වොත් සම්මාන ගහපු බ්ලොග් එකක්-http://blog.shaakunthala.com
තවත් පරිගණක පාඩමකින් යලි හමුවෙමු. 

Friday, January 24, 2014

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

ක්ලාසස් සහ ඔබ්ජෙක්ට්ස්(classes and objects)
OOP විසින් අබ්ස්ට්‍රක්ෂන් හා එන්කැප්සියුලේෂන්(OO සංකල්ප) නිරුපනය කිරීම සදහා ක්ලාසස් හා ඔබ්ජෙක්ට්ස් යොදාගනියි.රියල් වර්ල්ඩ් එකේ අපි දකින යම් එන්ටිටි එකක්(අබ්ස්ට්‍රක්ෂන් එකක්) OOP සමග මැප්(map) කරන ආකාරය රුප සටහනෙන් දැක්වේ.මේ අනුව ගත්තම ක්ලාස් එකක් කියන්නෙ ඔබ්ජෙක්ට්ස් ගණනාවක් හදාගන්න පුළුවන් ස්ට්‍රක්චර්(structure) එකක්.ක්ලාස් එකක් තුල දත්ත(ඩේටා වෙරියබ්ල්ස් වලින්) හා ඔපරේෂන්ස් අන්තර්ගත වෙනවා.ජාවා වස්තු පාදක ක්‍රමලේකනය ගැන අපේ සහෝදරයෙක් ලියපු හොද සටහනක් තියෙනවා මේ ලින්ක් එකේ.ඒකත් කියවලා බලන්න.
http://javaxclass.blogspot.com/2010/05/java-i.html
ක්ලාස් එකක් කියන්නෙ ඩේටා ටයිප් එකක් නිසා ඒක කෙලින්ම මැනිපියුලේට්(manipulate) කරන්න බැහැ.පහත උදාහරණය බලන්න.
"ඇපල් කියන්නෙ පළතුරක්"
එතකොට මෙතන  පලතුර කියන්නෙ ක්ලාස් එකක් හැටියට ගන්න පුළුවන්.ඇපල් කියන්නෙ  ඔබ්ජෙක්ට් එකක් වගේ.ඇපල් කියන්නෙ එක පලතුරු වර්ගයක් විතරයි.ඒවගේම ඔබ්ජෙක්ට් එකක් කියන්නෙත් ක්ලාස් එකේ එක අවස්ථාවක්(instance)එකක් විතරයි.
හරි මන් හිතනවා ක්ලාස් හා ඔබ්ජෙක්ට් අතර වෙනස දැන් පැහැදිලි ඇති කියලා.
ඔබ්ජෙක්ට් එකකට තියෙනවා විශේෂ ලක්ෂණ තුනක්.පලවෙනි එක තමයි ගතිගුණ(properties).එකෙන් ඔබ්ජෙක්ට් එකේ අභ්‍යන්තර තත්වය(internal state) පවත්වාගෙන යනු ලබනවා.ඊලගට ඔපරේෂන්ස්.ඔබ්ජෙක්ට් එකට අවශ්‍ය ක්‍රියාකාරිත්වය ලබා දෙන්නේ එමගින්.අවසානෙට ඕනෙම ඔබ්ජෙක්ට් එකට යුනික් අයිඩන්ටිටි(unique identity) එකක් තියෙනවා.ප්‍රොපටීස් හා ෆන්ක්ෂන්ස අතර තියෙන සම්බන්දය මේ විදියට අදුනගන්න පුළුවන්.ෆන්ක්ෂන්ස් මගින් එහි ප්‍රොපටීස් පාලනය(control) කරනු ලබනවා.ෆන්ක්ෂන් එකක ප්‍රතිපලය රදා පවතින්නේ ඔබ්ජෙක්ට් එකක ප්‍රොපටීස් මත.ඒවගේම ප්‍රොපටීස් මගින් ඔබ්ජෙක්ට් එකේ හැසිරීම තීරණය කරනු ලබනවා.උදාහරණයක් විදියට කාර් කියන ක්ලාස් එකේ තිරිංග තත්වය කියන ප්‍රොපටි එක ගනිමු.තිරිංග හරියට වැඩ කරන්නේ නැත්තම් ප්‍රතිපලය ගැන තීරණයක් ගන්න බැහැ.

පසුවදන.......................
වස්තු පාදක පද්ධති සංවර්දනය පිලිබදව ගෙන ආ ලිපි මාලාව මෙයින් නිම කිරීමටයි,මේ සුදානම.අපේ මාතෘකාව අයත් වෙන්නේ රුහුණු විශ්වවිද්‍යාලයේ පරිගණක උපාධි පාඨමාලාවේ පළමු වසර දෙවන සිමෙස්ටරයට.එතනදී අප මේ කතාකල OOA/OOD අමතරව UML/UP වල මුලික කරුනුත් සාකච්චා කළා.ඇත්තටම අපි මෙතනදී කතාකලේ ඉතාම කෙටියෙන් මුලිකම කරුණු ටිකක්.නමුත් මම
හිතනවා,නවකයෙකුට ආරම්බයක් හැටියට මේ ටික වුනත් ලොකු හයියක් වේවි කියලා.මේ කොර්ස් යුනිට් එකේදී අපිට රෙකමන්ඩ් කරපු අතිරේක පොත් දෙක තමයි,
Grady Booch - Object-Oriented Analysis and Design With Applications, 2nd EDITION
Applying UML and Patterns by Craig Larman
මේ පොත් ගැනත් යමක් සදහන් කලොත් පලවෙනි පොත නම් ටිකක් අමාරුයි තේරුම් ගන්න.දෙවෙනි පොත නම් ගැටළුවක් නැහැ,සාමාන්‍ය ඉංග්‍රීසි දැනුමකිනුත් තේරුම් ගන්න පුළුවන්.හරි එහෙනම් ගිහින් එන්නම්.තවත් පරිගණක පාඩමකින් යලි හමුවෙමු.

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) ඇති සංකල්පයක්.ඒ කියන්නෙ පොත,පෑන,ශිෂ්‍යයා,සේවකයා වගේ උදාහරණ ඔබ්ජෙක්ට්ස් වලට දෙන්න පුළුවන්.දැන් මේ එන්ටිටි ටික බලන්න.ලස්සන,ගංගාව,අහස...ඒවායේ සීමාව පිළිබද අදහසක් නැහැ.ඒ නිසා ඒවා ඔබ්ජෙක්ට්ස් හැටියට ගන්නේ නැහැ.සත්‍ය ලෝකයේ ගැටළු විසදන්න අපි ඔබ්ජෙක්ට්ස් හා ක්ලාසස් වලින් යුක්ත ආකෘතියක් හදාගන්නවා,මේක තමයි ඔබ්ජෙක්ට් මොඩ්ල් කියලා හැදින්වෙන්නේ.
 
තවත් විස්තර රැගත් ලිපියකින් නුදුරේදීම හමුවෙමු.

Thursday, January 9, 2014

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

මෘදුකාංග අර්බුදය(software crisis)

පසුගිය ලිපියේ අපි කතා කලේ මෘදුකාංග සංවර්දනය සංකීර්ණ වීමට හේතු.එකේ ප්‍රතිපලය වෙන්නේ මෘදුකාංග අර්බුදය.ප්‍රමාද වී බාරදීම්(late delivery),අපේක්ෂිත අයවැය ඉක්මවීම්(exceeding the budget),අඩු තත්වය(low quality),ඉල්ලුම් තෘප්ත කිරීමට අසමත් වීම්,විශ්වාසදායක බව අඩුවීම්(less reliability) වැනි  දේ මෘදුකාංග අර්බුදයේ ලක්ෂණ ලෙස දක්වන්න පුළුවන්.නිසි ලෙස ව්‍යුහගත(structured) හා සංවිදානාත්මක ක්‍රමවේදයක්(organized approach) මගින් මීට බොහෝ දුරට පිළියම් සෙවිය හැකි වෙනවා.නමුත් මෘදුකාංග සංවර්දනය හා නඩත්තුව සදහා වැය වන මුදල දෘඩාංග සංවර්දනය(hardware development) සදහා වන මුදලට වඩා සැලකිය යුතු ලෙස වැඩිවන බව වසර කිහිපයක් පසුපසට බලද්දී විශ්ලේෂකයන්ට පෙනී ගිය කරුණක් වුනා.SDLC හි එක් එක් ෆේසස්(phases) වලට වැයවන මුදල් සැලකුවහොත් නඩත්තුව(maintenance) සදහා 60% ක් පමණ වුනා.එතකොට අනිත් සියලු ෆේසස්  වලට ගියේ 40% විතර මුදලක්.ඒ කියන්නෙ එතෙක් නිර්මාණය වෙලා තිබුණු මෘදුකාංග ඉංජිනේරු සංකල්පයන්(software engineering concepts) එතරම් මේ අර්බුදයට විසදුම් ලෙස බල නොපාන බව පෙනී ගියා.එතෙක් පැවති ක්‍රමලේකන බාශාවන් වල තිබු මුලික අඩුපාඩු දෙකක් හදුනා ගත හැකිවුනා.එනම්,මෘදුකාංග නඩත්තුව හා ප්‍රතිබාවිතයක්(re-usability) නොවීම යි.මෙනිසා වඩා විශ්වාසදායක හා ප්‍රතිබාවිතයට ඉඩදෙන පද්ධති නිපදවීමට අදාළ මුලදර්ම(concepts) හා මෙවලම්(tools) නිර්මාණය කිරීමට පෙළඹුනා.අපි දන්න විදියට පසුගිය කාල වකවානුව තුල ප්‍රමිතිගත දෘඩාංග  උපාංග(standard hardware components) (සිලිකන් චිප් වැනි) ඉතා ශීග්‍රයෙන් දියුණු වුනා.කිසියම් දෘඩාංග බිදවැටිමකදී  පහසුවෙන් එහි පැවති ක්‍රියාකාරිත්වයට බාදාවක් නොවන විදියට එය යලි ප්‍රතිස්ථාපනය(replacement) කරන්න පුළුවන්. මෙම ප්‍රමිතිගත කොම්පොනන්ට් බාවිතය වෙනත් ප්‍රොඩක්ට් වලදීත් බාවිතයට ගැනෙනවා.එතෙක් මෘදුකාංග සංවර්දන ක්ෂේත්‍රය  ස්පර්ශ නොකළ මෙම රියුසබල් කම්පනන්ට් බාවිතය  මෘදුකාංග සන්වර්දන ක්ෂේත්‍රයට නව මගක් එක්කලා. 1980 දී පමණ පැමිණි OOP සංකල්ප මගින් ක්‍රමලේකනය සිදුකිරීමේදී තාර්කික බුද්ධියත්(logical intelligence),නිර්මානශීලිබවත්(creativity),ටැලන්ට් එකත්  බෙහෙවින් වැදගත් වෙනවා.එසේම 
ව්‍යුහගත ක්‍රමලේකනය වැනි පුර්ව ක්‍රමලේකන සංකල්පවලින් පරිබාහිරව චින්තනය මෙයෙහවීමත් ඉතා වැදගත් වෙනවා.

ගැටළුවක් විසදන සාමාන්‍ය ක්‍රමය උදාහරණයක් ඇසුරෙන් පැහැදිලි කරගනිමු.

කළමනාකරුවෙකුට තමන්ගේ පාරිබෝගිකයා සේවා කරන ස්ථානයට ගිහින් ලියුමක් අත්සන් කර ගැනීමට අවශ්‍ය යයි සිතමු.ඉතින් මේ සදහා පළවෙනියටම මැනේජර්ට ලියුම් ටයිප් කරන්නා ගාවට ගිහින් ලියුමක් ලියව ගන්න ඕන.ඉතින් ඔහු ගිහිල්ලා තමන් ගේ ෂෝර්ට් හෑන්ඩ් රයින්ටින්ග් එක දෙනවා.එක බලාගෙන ලියුම් ලියන්නා පරිගණකයත් මුද්‍රණ යන්ත්‍රයත් බාවිතයෙන් ලියුම සකස් කරලා මැනේජර්ට දෙනවා.ඊලගට ඔහු එකත් අරගෙන ඩ්‍රයිවර් හමුවෙන්න යනවා, කස්ටමර් ගාවට යන්න.ඩ්‍රයිවර් ගමනාන්තයට යන්න යොදාගන්නේ කාර් එක.
දැන් අපි මේ සිද්දිය පොඩ්ඩක් විමසලා බලමු.මැනේජර් ගැටලුව විසදන්න ඔබ්ජෙක්ට්ස්(objects) දෙකක් යොදාගත්තා.එකක් ලියුම් ලියන්නා,අනෙකා ඩ්‍රයිවර්.මෙහිදී මැනේජර්ට වැදගත් නැහැ ,ලගුලේකඛයා ලිපිය සකස් කරන්නේ කොහොමද කියලවත්,ඩ්‍රයිවර් කාර් එක ගෙනියන්නේ කොහොමද කියලවත් .ඒක වෙන වෙනම පුද්ගලයන් දෙන්නෙකුට පවරලයි(assigned) තියෙන්නේ ,ඊලගට තව දුරටත් විමසුවහොත් ඩ්‍රයිවර් තමන්ට පැවරුණු කාර්යය(task) කරන්නේ කාර් කියන object එක බාවිතයෙන්,ඒ වගේම ලගුලේඛකයා ලිපිය සකස් කරන්නේ කම්පියුටරය හා ප්‍රින්ටරය බාවිතයෙන්.මැනේජර් ස්වායත්තව එකිනෙකාට ටාස්ක්ස් පවරපු ඒකයි මෙහිදී වෙලා තියෙන්නේ,එකිනෙකාගේ වගකීම්(responsibilities) අවබෝදයෙන් කටයුතු කරාම සංකීර්ණ කටයුත්තක් වුනත් මේ විදියට සරල විදියට බෙදන්න පුළුවන්.තවද මැනේජර් එක එක ඔබ්ජෙක්ට් වැඩ පවරන්නේ මැසේජ් එකක් මගින්.ඒ වගේම පවරපු වැඩේ කරන්න ඒ ඒ ඔබ්ජෙක්ට් එක මෙතඩ් එකක් බාවිතා කරනවා.සීක්වන්ෂල් ලැන්වේජ්(sequential language) එකක නම් අපි මෙතඩ් එකක්වෙනුවට බාවිතා කරේ ෆන්ක්ෂන්ස් ,ෆන්ක්ෂන්ස්වලට කෝල් කරලා තමයි වැඩක් කරගත්තේ.

ෆන්ක්ෂන් කෝල් කිරීම(function calling) හා මැසේජ් පාසිංග්(massage passing) අතර ඇති වෙනස පැහැදිලි කරගනිමු.
  • ෆන්ක්ෂන්ස් ආර්ග්යුමන්ට්ස්(arguments) නැතිව හෝ කිහිපයක් බාවිතා කරන්න පුළුවන්.නමුත් මැසේජ් පාසිංග් වලදී අඩු වශයෙන් එක් ආර්ග්යුමන්ට් එකක් හෝ බාවිතා කරනවා.
  • ෆන්ක්ෂන් එකක් සෑම විටම විශේෂ කාර්යයක් හා බද්දව පවතිනවා.නමුත් මැසේජ් එකක් යනු ඩේටා වලට පිවිසීම(access) සදහා බාවිතා කරනු ලබන්නකි.එමගින් object එකෙන් කිසියම් ක්‍රියාකාරිත්වයක් අයැද සිටිනු ලබනවා.

මීලගට OOSD වල මුලික සංකල්ප ටික අප පැහැදිලි කර ගනිමු.එනම්,
  •     abstraction
  •     encapsulation
  •     modularity
  •     hierarchy යන ඒවා දක්වන්න පුළුවන්.
මේවාට අමතරව තවත් ලක්ෂණ දෙකක් ලෙස ,
  •       inheritance
  •       polymorphism යන ඒවා දක්වන්න පුළුවන්.

abstraction-වියුක්ත දැකීම

ගැටළු වක් විසදීම සදහා අත්‍යවශ්‍ය අවශ්‍යතාවයක් ලෙස  දක්වන්න පුළුවන්.කලින් උදාහරණයට අනුව මැනේජර් විසින් තමන් ගමනාන්තයට ගෙන යන මෙන් පණිවිඩයක් දෙනු ලබනවා.වාහනය පැදවීම යන ක්‍රියාව කරනු ලබන්නේ ඩ්‍රයිවර්(driver) විසින්.ඩ්‍රයිවර්ට එම කාර්ය කල හැකිබව පමණක් මැනේජර් දනී.ඒ අනුව මනේජර්ගේ දෘෂ්ටිකෝණයෙන්(manager's perspective) ඩ්‍රයිවර් යනු තමන් ගමනාන්තයට ගෙන යන සේවකයා.එම වියුක්ත තොරතුර මැනේජර්ට ප්‍රමාණවත්.ඒ අනුව තම කාර්යාලයේ සේවය කරන්නෙකු ලෙස ඩ්‍රයිවර්ගේ නම  මැනේජර් විසින් දැනගන්න ඕන.ඊලගට ඩ්‍රයිවර්ගේ දෘෂ්ටිකෝණයෙන් මේ වැඩට පාවිච්චි කරන්නේ කාර් එක.එතනදී කාර් එකේ ප්‍රොපටීස්(properties) වන බ්‍රෑන්ඩ් නේම්(brand name),රෙජිස්ටර් නම්බර්(registration number) ,කලර්(color),ඉන්දන වර්ගය(fuel type) හා ෆන්ක්ෂන්ස් වන පැදවීම-drive(),ස්ටාර්ට් කිරීම-start(),පදවන වේගය-currentSpeed()යන ඒවා දත යුතු වෙනවා.එහෙම නැතුව කාර් එකේ අබ්යන්තර ක්‍රියාකාරිත්වය(internal implementation) ගැන විස්ටර ඩ්‍රයිවර්ට වැදගත් නැහැ.ඒ වගේම මනේජර්ගේ පර්ස්පෙක්ටිව් එකෙන් කාර් එක ගැන දැනගන්න ඕන ,එක A/C ද නැද්ද ,කාර් එකේ ටයිප් එක වගේ දේවල්.ඒ අනුව අපිට පැහැදිලි වෙන්නේ එකම එන්ටිටි එකක් ගැන වියුක්ත තොරතුරු විවිද පුද්ගලයන්ගේ දෘෂ්ටිකෝණ අනුව වෙනස් වන වග.
සරලවම කිව්වොත් ඇබ්ස්ට්‍රැක්ශන් කියන්නෙ මොකක් හරි වස්තුවක තියෙන්න ඕන අත්‍යාවශ්‍යම තොරතුරු(essential features) ටික.එක ඒ වස්තුව ගැන ගුණයක් හෝ ක්‍රියාකාරිත්වයක් වෙන්න පුළුවන්.ඒ අනුව හොද ඇබ්ස්ට්‍රැක්ශන් එකක පහත ලක්ෂණ තියෙන්න ඕන.
1.තේරුමක් තියෙන නමක්(අපේ උදහරනේදී නම් ඩ්‍රයිව් කරන ක්‍රියාව කරන්න ඩ්‍රයිවර් කියල ගත්ත).
2.අවම තොරතුරු (ඒ එක්කම සම්පුර්ණත්වයත් තියෙන්න ඕන).
3.ඒවා එකට ගැලපෙන තොරතුරු වෙන්න ඕන.

තවත් විස්තර රැගත් ලිපියකින් නුදුරේදීම හමුවෙමු.