Object Oriented Programming | වස්තු පාදක ක්රමලේඛනය
පසුගිය පාඩමින් අපි Object Oriented Programming වගේම Object සහ Class ගැන පැහැදිලි අවබෝධයක් ලබා ගත්තා මේ දෙවන කොටසින් අපි Object Oriented Programming වල මූලික සංකල්ප 4 ගැන පැහැදිලි කිරීමක් ඇති කරගමු
Encapsulation (සංවෲත හාවය)
වාහන ගැන කතා කරපු නිසා වාහනයකම උදාහරනයක් ගම්මුකෝ
වාහනයක Gearbox එකේ අපිට පෙනෙන ක්රියාකාරීත්වය ගත්තොත් ලීවරය යම්කිසි පිහිටුමකට ගත්තොත් අදාල ගියරයට එන්ජිම සම්බන්ද වෙනවා
නමුත් ඇතුලතින් ඒ ගියරය අදාල දැතිරෝද සැකසුම වෙනස් වීම බල තුලනය වගේ සංකීර්න ක්රියා රාශියක් වෙනවා නමුත් ඒ කිසිවක් අපිට පෙනෙන් නෑ
Abstraction වලදිත් අපිට ලබා දෙන්නේ මේවගේ දෙයක් .. අපි යම් කිසි Behavior එකක් සමග වැඩකරනවා නමුත් ඒ පිටුපස තිබෙන සංකීර්න ක්රීයාවලි අපට පේන් නෑ .. එය අපෙන් වෙන් වෙලයි තියෙන්නේ.මෙහි තියෙන ලොකුම වාසිය තමා සංකීර්න ක්රියාවලියේ වෙනසක් සිදුවුනා කියලා අපි ඒක පාවිච්චි කරලා තියෙන තැන් වල වෙනසක් සිදු නොවීම
Gear Box එකේ දැතිරෝද සෙට් එක අපි අලුතින් දැම්මා කියලා අපි ගියර්ලීවරය පාලනය කරන හැටි වෙනස් වෙන් නෑ නෙ.
Polymorphism (බහුරූපි භාවය)
[FONT=ARIAL,HELVETICA]
[/FONT] එකම Object එක විවිදාකාරයෙන් පැවතීම තමා Polymorphism කියන්නේ ..ඒ කියන්නේ යම්කිසි Object එකක් Inheritance හි Is-A කියන සම්බන්දතාවට එක අවස්ථාවකට වඩා තෘප්ත කරනවානම් එය Polymorphism
විදහා දක්වන්නක්. අපි උදාහරණයකට Double-Cab එකක් ගත්තොත් එහි Car හා Jeep යන දෙකේම ලක්ෂණ තියෙනවා.එතකොට මෙන්න මේ විදියට තමයි දිස් වෙන්නේ
Double-Cab Is-A Vehicle
Double-Cab Is-A Car
Double-Cab Is-A Jeep
ඔය අවස්තා තුනටම ඕක සත්යක් වෙනවා .. එතකොට Double-Cab කියන Object එක Car එකක් විදියටත් පවතිනවා Jeep විදියටත් පවතිනවා Car එකත් Jeep එකත් Vehicle වලින් Inherit වුන නිසා Vehicle එකකුත් වෙනවා
අනිත් බහුලම අවස්තාව තමා Method Overloading අවස්තාව
මෙය මම Gear Box එක සම්බන්ද උදාහරනෙන් පෙන්වන්නම්
මෙහි changeGear() කියලා Method එකක් තියෙනවා යැයි සිතන්නඅපිට changeGear() වලදි අපි කියන ලද ඒ කියන්නේ 1st ,2nd ,3rd වගේ අපි specify කරන Gear එකක්ට මාරු කරන්නත් පුලුවන් නැත්නම් දැනට ඉන්න Gear එකෙ ඉදලා ඉහලට හෝ පහලට ගියරය මාරු කරන්නත් පුලුවන්
පසුගිය පාඩමින් අපි Object Oriented Programming වගේම Object සහ Class ගැන පැහැදිලි අවබෝධයක් ලබා ගත්තා මේ දෙවන කොටසින් අපි Object Oriented Programming වල මූලික සංකල්ප 4 ගැන පැහැදිලි කිරීමක් ඇති කරගමු
- Encapsulation (සංවෲත හාවය)
- Inheritance (පැවත ඒම)
- Abstraction (උකහා ගැනීම)
- Polymorphism (බහුරූපි භාවය)
Encapsulation (සංවෲත හාවය)
Encapsulation වල මූලිකම අරමුන තමා දත්ත ආරක්ශාකාරීව භාවිතය හා දත්ත වලට අනවශ්ය බලපෑම් සිදුවීමට ඇති ඉඩ කඩ අවම කිරීම
අපේ කලින් Table Fan උදාහරණෙ ගත්තොත් එහි තිබෙන Switch එකේ ක්රියාකාරිත්වයත් හරියට මේ වගේ ..අපිට Fan එකේ Statues මාරුකිරීනට වඩා ආරක්ශාකාරි ක්රමයක් Switch එක මගින් ලැබෙනවා. Computer භාෂාවක් තුලදි මේ සදහා පහසුකම් ලැබෙන්නේ Access Specifiers නමින් හැදින්වෙන Keywords මගිනුයි.මෙහිදී සියලුම Variables වලට Private Access Specifiers ලබා දෙන අතර Functions සියල්ල Public ආකාරයට සපයනවා.
Inheritance (පැවත ඒම)
Abstraction (උකහා ගැනීම)අපේ කලින් Table Fan උදාහරණෙ ගත්තොත් එහි තිබෙන Switch එකේ ක්රියාකාරිත්වයත් හරියට මේ වගේ ..අපිට Fan එකේ Statues මාරුකිරීනට වඩා ආරක්ශාකාරි ක්රමයක් Switch එක මගින් ලැබෙනවා. Computer භාෂාවක් තුලදි මේ සදහා පහසුකම් ලැබෙන්නේ Access Specifiers නමින් හැදින්වෙන Keywords මගිනුයි.මෙහිදී සියලුම Variables වලට Private Access Specifiers ලබා දෙන අතර Functions සියල්ල Public ආකාරයට සපයනවා.
Inheritance (පැවත ඒම)
[FONT=ARIAL,HELVETICA]
[/FONT]
මෙතනදි Is-A Has-A සම්බන්දය තමා බලපාන්නේ ඒ කියන්නේ Car Is-A Vehicle ,Van Is-A Vehicle , Jeep Is-A Vehicle නම් Vehicle And Car Has-An Engine කියලා කියන්න පුලුවන්. මෙතනදි Vehicle කියන්නේ Super Class එකත් Car කියන්නේ Sub Class එකත් කියලා කියනවා.Vehicle වලින් තමා Car , Van , Jeep තුනම පැවතගෙන එන්නේ ඉහලින් ඉන්නේ Vehicle ඊට යටින් තමා Car , Van , Jeep වගේ එව්වා තියෙන්නේ
Vehicle Class එකේ තියෙන වත්කම් (State ) හා හැසිරීම (Behavior) Car , Van , Jeep තුනේම දකින්න ලැබෙනවා ඒ වගේම Jeep කියන එකට ආවේනික වෙච්ච 4WD වගේ විශේෂ Behaviors අපිට ඒ අදාල Class එකට විතරක් යොදන්න පුලුවන්.මෙහි විශේෂ වාසිය තමා එකම කේත නැවත නැවත ලිවීමට සිදුවීම අඩුවීම.
මෙතනදි Is-A Has-A සම්බන්දය තමා බලපාන්නේ ඒ කියන්නේ Car Is-A Vehicle ,Van Is-A Vehicle , Jeep Is-A Vehicle නම් Vehicle And Car Has-An Engine කියලා කියන්න පුලුවන්. මෙතනදි Vehicle කියන්නේ Super Class එකත් Car කියන්නේ Sub Class එකත් කියලා කියනවා.Vehicle වලින් තමා Car , Van , Jeep තුනම පැවතගෙන එන්නේ ඉහලින් ඉන්නේ Vehicle ඊට යටින් තමා Car , Van , Jeep වගේ එව්වා තියෙන්නේ
Vehicle Class එකේ තියෙන වත්කම් (State ) හා හැසිරීම (Behavior) Car , Van , Jeep තුනේම දකින්න ලැබෙනවා ඒ වගේම Jeep කියන එකට ආවේනික වෙච්ච 4WD වගේ විශේෂ Behaviors අපිට ඒ අදාල Class එකට විතරක් යොදන්න පුලුවන්.මෙහි විශේෂ වාසිය තමා එකම කේත නැවත නැවත ලිවීමට සිදුවීම අඩුවීම.
වාහන ගැන කතා කරපු නිසා වාහනයකම උදාහරනයක් ගම්මුකෝ
වාහනයක Gearbox එකේ අපිට පෙනෙන ක්රියාකාරීත්වය ගත්තොත් ලීවරය යම්කිසි පිහිටුමකට ගත්තොත් අදාල ගියරයට එන්ජිම සම්බන්ද වෙනවා
නමුත් ඇතුලතින් ඒ ගියරය අදාල දැතිරෝද සැකසුම වෙනස් වීම බල තුලනය වගේ සංකීර්න ක්රියා රාශියක් වෙනවා නමුත් ඒ කිසිවක් අපිට පෙනෙන් නෑ
Abstraction වලදිත් අපිට ලබා දෙන්නේ මේවගේ දෙයක් .. අපි යම් කිසි Behavior එකක් සමග වැඩකරනවා නමුත් ඒ පිටුපස තිබෙන සංකීර්න ක්රීයාවලි අපට පේන් නෑ .. එය අපෙන් වෙන් වෙලයි තියෙන්නේ.මෙහි තියෙන ලොකුම වාසිය තමා සංකීර්න ක්රියාවලියේ වෙනසක් සිදුවුනා කියලා අපි ඒක පාවිච්චි කරලා තියෙන තැන් වල වෙනසක් සිදු නොවීම
Gear Box එකේ දැතිරෝද සෙට් එක අපි අලුතින් දැම්මා කියලා අපි ගියර්ලීවරය පාලනය කරන හැටි වෙනස් වෙන් නෑ නෙ.
Polymorphism (බහුරූපි භාවය)
[/FONT] එකම Object එක විවිදාකාරයෙන් පැවතීම තමා Polymorphism කියන්නේ ..ඒ කියන්නේ යම්කිසි Object එකක් Inheritance හි Is-A කියන සම්බන්දතාවට එක අවස්ථාවකට වඩා තෘප්ත කරනවානම් එය Polymorphism
විදහා දක්වන්නක්. අපි උදාහරණයකට Double-Cab එකක් ගත්තොත් එහි Car හා Jeep යන දෙකේම ලක්ෂණ තියෙනවා.එතකොට මෙන්න මේ විදියට තමයි දිස් වෙන්නේ
Double-Cab Is-A Vehicle
Double-Cab Is-A Car
Double-Cab Is-A Jeep
ඔය අවස්තා තුනටම ඕක සත්යක් වෙනවා .. එතකොට Double-Cab කියන Object එක Car එකක් විදියටත් පවතිනවා Jeep විදියටත් පවතිනවා Car එකත් Jeep එකත් Vehicle වලින් Inherit වුන නිසා Vehicle එකකුත් වෙනවා
අනිත් බහුලම අවස්තාව තමා Method Overloading අවස්තාව
මෙය මම Gear Box එක සම්බන්ද උදාහරනෙන් පෙන්වන්නම්
මෙහි changeGear() කියලා Method එකක් තියෙනවා යැයි සිතන්නඅපිට changeGear() වලදි අපි කියන ලද ඒ කියන්නේ 1st ,2nd ,3rd වගේ අපි specify කරන Gear එකක්ට මාරු කරන්නත් පුලුවන් නැත්නම් දැනට ඉන්න Gear එකෙ ඉදලා ඉහලට හෝ පහලට ගියරය මාරු කරන්නත් පුලුවන්
අපිට මෙය මෙහෙම ලියන්න පුලුවන් සරලව
void changeGear(int gear) {
// move gear to given number
}
void changeGear(String shift) {
// move gear according to givenshift }
හැබැයි Polymorphism කියන්නේ Method Overloading කරන එකටම නෙවෙයි Method Overloading කියන්නේ Polymorphism වල එක් අවස්තාවක් විතරයි
Last edited:




marai ne nikn mata tube light wage 





