Object Oriented Programming II

Mal Baba

Well-known member
  • Apr 26, 2009
    106,262
    5,596
    113
    Blob Storage
    www.37innovate.com
    Object Oriented Programming | වස්තු පාදක ක්‍රමලේඛනය

    පසුගිය පාඩමින් අපි Object Oriented Programming වගේම Object සහ Class ගැන පැහැදිලි අවබෝධයක් ලබා ගත්තා මේ දෙවන කොටසින් අපි Object Oriented Programming වල මූලික සංකල්ප 4 ගැන පැහැදිලි කිරීමක් ඇති කරගමු

    1. Encapsulation (සංවෲත හාවය)
    2. Inheritance (පැවත ඒම)
    3. Abstraction (උකහා ගැනීම)
    4. Polymorphism (බහුරූපි භාවය)

    Encapsulation (සංවෲත හාවය)

    encapsulation.gif


    Encapsulation වල මූලිකම අරමුන තමා දත්ත ආරක්ශාකාරීව භාවිතය හා දත්ත වලට අනවශ්‍ය බලපෑම් සිදුවීමට ඇති ඉඩ කඩ අවම කිරීම
    අපේ කලින් Table Fan උදාහරණෙ ගත්තොත් එහි තිබෙන Switch එකේ ක්‍රියාකාරිත්වයත් හරියට මේ වගේ ..අපිට Fan එකේ Statues මාරුකිරීනට වඩා ආරක්ශාකාරි ක්‍රමයක් Switch එක මගින් ලැබෙනවා. Computer භාෂාවක් තුලදි මේ සදහා පහසුකම් ලැබෙන්නේ Access Specifiers නමින් හැදින්වෙන Keywords මගිනුයි.මෙහිදී සියලුම Variables වලට Private Access Specifiers ලබා දෙන අතර Functions සියල්ල Public ආකාරයට සපයනවා.



    Inheritance (පැවත ඒම)

    [FONT=ARIAL,HELVETICA]
    inheritance.gif
    [/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 එකට විතරක් යොදන්න පුලුවන්
    .මෙහි විශේෂ වාසිය තමා එකම කේත නැවත නැවත ලිවීමට සිදුවීම අඩුවීම.


    Abstraction (උකහා ගැනීම)

    2psod9s.jpg


    වාහන ගැන කතා කරපු නිසා වාහනයකම උදාහරනයක් ගම්මුකෝ
    වාහනයක Gearbox එකේ අපිට පෙනෙන ක්‍රියාකාරීත්වය ගත්තොත් ලීවරය යම්කිසි පිහිටුමකට ගත්තොත් අදාල ගියරයට එන්ජිම සම්බන්ද වෙනවා
    නමුත් ඇතුලතින් ඒ ගියරය අදාල දැතිරෝද සැකසුම වෙනස් වීම බල තුලනය වගේ සංකීර්න ක්‍රියා රාශියක් වෙනවා නමුත් ඒ කිසිවක් අපිට පෙනෙන් නෑ

    Abstraction වලදිත් අපිට ලබා දෙන්නේ මේවගේ දෙයක් .. අපි යම් කිසි Behavior එකක් සමග වැඩකරනවා නමුත් ඒ පිටුපස තිබෙන සංකීර්න ක්‍රීයාවලි අපට පේන් නෑ .. එය අපෙන් වෙන් වෙලයි තියෙන්නේ.මෙහි තියෙන ලොකුම වාසිය තමා සංකීර්න ක්‍රියාවලියේ වෙනසක් සිදුවුනා කියලා අපි ඒක පාවිච්චි කරලා තියෙන තැන් වල වෙනසක් සිදු නොවීම
    Gear Box එකේ දැතිරෝද සෙට් එක අපි අලුතින් දැම්මා කියලා අපි ගියර්ලීවරය පාලනය කරන හැටි වෙනස් වෙන් නෑ නෙ.



    Polymorphism (බහුරූපි භාවය)

    [FONT=ARIAL,HELVETICA]
    polymorphism.gif


    [/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 වල එක් අවස්තාවක් විතරයි
    _________________________________________________

    OPP ගැන යම් දෙයක් නොතේරුනා නම් ඒ ගැන අහන්න පුලුවන් වැරැද්දක් තියෙනව නම් පෙන්නල දෙන්න.

    _________________



    _________________

    Special Thanks Confiuzd Programmer
    Mal Baba Exclusive@Facebook

    ©2011/MB/EK.COM




     
    Last edited:

    gayankuwait

    Well-known member
  • Oct 13, 2010
    56,348
    4,726
    113
    මට නම් මෙලො දෙයක් තෙරෙන්නෙ නැහැ බබා සර් :eek:
    කමක් නැහැ තෙරෙන අය ඇතිනෙ ඔන්න බම්ප් එකක්