object oriented programming | වස්තු පාදක ක්‍රමලේකනය

rigamage

Well-known member
  • Feb 18, 2007
    3,388
    1,220
    113
    මහවිලච්චිය
    object oriented programming | වස්තු පාදක ක්‍රමලේකනය

    what is object oriented programming ?
    වස්තු පාදක ක්‍රමලේකනය කියන්නේ මොකක්ද?

    object oriented programming කියන්නේ අපි යම්කිසි real world problem එකකට පරිගනකයක් ආශ්‍රයෙන් විසදුමක් ලබා ගන්න ඕනි උනා ම real world එකේ problem එකට අදාල සියලුම වස්තුන් (object ) වලට අනූරූපව හා අංගසමව පරිගනකය තුල object ලෙසට නිර්මානය කරලා අපි පරිගනකය තුල නිර්මානය කල objects අතර අන්තර්ක්‍රියාරිත්වය මගින් ගැටලුව පරිගනකය තුල නැවත නිර්මානය කර විසදුමක් ලබාගෙන අප real world object වලට ඇති අංග සමතාවයෙන් real world problem එකට විසදුමක් ලබා ගැනීමයි



    What Is an Object?
    Object එක තමා OOP වල කොදු නාරටිය ..මම පැහැදිලි කිරීමේ පහසුවට අපේ වට පිටාවෙ තියෙන Objects වලට real world Object කියලත් අපි පරිගනකය තුල නිර්මානය කරන ඒ වට Software Object කියලත් භාවිතා කරන්නම් ..මේක පැහැදිලි කරන්න විතරයි ... ඇත්ත වශයෙන්ම එහෙම දෙවර්ගයක් නෑ Object නම් Object

    ඔබගේ මේසය දෙස බලන්න අනිවාර්යෙන්ම පහසුවෙන්ම දකින්න පුලුවන් real world Object කොච්චර තියෙනවද ?
    මම table lamp එක ගන්නම් .. ඒකට පාටක් තියෙනවා ..මේ වෙලාවෙ ඒක off කරලයි තියෙන්නේ .. මට ඕනිනම් ඒක on කරන්න පුලුවන් ..ආයෙ off කරන්නත් පුලුවන්

    ඒවගේම mobile phone එක ..ඒකටත් පාටක් තියෙනවා ...ඒකෙ SMS ,MP3 enable , services provider කෙනෙක් ඉන්නවා .. දැනට ඒක තියෙන්නේ standby mode එකේ ..ඕනිනම් මට ඒකෙන් call එකක් ගන්න පුලුවන් .. table lamp එකට වඩා හුගක් වැඩ mobile phone එකත් එක්ක කරන්න පුලුවන්

    මේ උදාහරන දෙක දිහා බැලුවහම real world Object වල ගතිලක්ෂන එහෙමත් නැත්නම් characteristics දෙකක් තියෙනවා වත්කම් (state ) හා හැසිරීම (behavior)


    Software Object වලත් මේ characteristics එහෙම්මම තියෙනවා අපි state නිරූපනය කරන්න variables සහ behavior නිරූපනය කරන්න functions යොදා ගන්නවා
    අපිට Software Object එකක state එකක් වෙනස කරන්න ඕනිනම් functions එකක් හරහා තමා ඒක කරන්න ඕනි ..ඒ කියන්නේ Software Object අතර communication එක වෙන්නේ behavior නැත්නම් functions හරහා තමයි

    What Is a Class?

    A class is the blueprint from which individual objects are created.

    මේක තමා class එකක ගැන දෙන සරලම පැහැදිලි කිරීම ..
    table lamp කියන real world Object එක ගත්තාම ලෝකෙ කොච්චර table lamps තියනවද ..මේ හැම එකක්ම හදන්න යොදාගෙන තියෙන සැලසුම් පිටපත ..plan එකට තමයි class එක කියන්නේ ..ඒ සැලසුමට අනුව හදපු (instance ) එකකට තමා අපි table lamp Object එක කියන්නේ .. අපි එකම සැලසුමට හදපු නිසා ඒ ඔක්කොම table lamp ඔක්කොම එකම වත්කම් (state ) හා හැසිරීම (behavior) තමා බෙදා හදා ගන්නේ ..නමුත් ඒ හදපු instance එකිනෙකින් ස්ව්‍යායක්තයි .. මගෙ table lamp එක switch off කලා කියලා ඔයාගෙ table lamp එක switch off වෙන් නෑනෙ

    එතකොට class එකක තියෙන්න පුලුවන් මොනවද ? ඒකෙ තියෙන්න පුලුවන් වත්කම් (state ) හා හැසිරීම (behavior)
    state ගත්තොත් table lamp එකේ පාට අපි ප්ලෑන් එකේදි දක්වන් නෑ නෙ .. අපි එක පාටකින් හදලා ඒවට පාට ලබා දීම කරන්නේ පස්සෙනෙ ..එහෙම නොකොලොත් අපිට රතු පාට table lamp හදන්න එක blueprint එකකුත් කොල පාට table lamp හදන්න තව එකකුත් ඕනි වෙනවනේ
    behavior ගත්තොත් පොදුවේ table lamp එක switch off කරන්න switch on කරන්න ඕනි විධාන පිලිවෙලින් ගොනු කරලා තියෙනවා

    class TableLamp{

    String color = black;
    int state= 0;


    void switchOn() {
    state= 1;
    }

    void switchOff() {
    state= 0;
    }

    void setColor(String aColor) {
    color= aColor;
    }

    String getColor() {
    return color;
    }


    }

    මෙන්න මේ වගේ class එකක් තමා අපි මෙච්චර වෙලා කතා කරපු table lamp එකට හදන්න පුලුවන්
     

    rigamage

    Well-known member
  • Feb 18, 2007
    3,388
    1,220
    113
    මහවිලච්චිය
    object oriented programming | වස්තු පාදක ක්‍රමලේකනය II
    පසු ගිය පාඩමින් අපි class හා object ගැන අදුනා ගත්තා ..මේ පාඩමින් අපි OOP වල මූලික සංකල්ප 4 ගැන කතා කරමු


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

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

    Encapsulation වල මූලිකම අරමුන තමා දත්ත ආරක්ශාකාරීව භාවිතය හා දත්ත වලට අනවශ්‍ය බලපෑම් සිදුවීමට ඇති ඉඩ කඩ අවම කිරීම
    අපේ කලින් table lamp උදාහරනේ ගත්තොත් එහි තිබෙන switch එකේ ක්‍රියාකාරිත්වයත් හරියට මේ වගේ ..අපිට බල්බ් එකේ statues මාරුකිරීනට වඩා ආරක්ශාකාරි ක්‍රමයක් switch එක මගින් ලැබෙනවා

    පරිගනක භාශාවක් තුලදි මේ සදහා පහසුකම් ලැබෙන්නේ access specifiers නමින් හැදින්වෙන keywords මගිනුයි
    මෙහිදී සියලුම variables වලට private access specifiers ලබා දෙන අතර functions සියල්ල public ආකාරයට සපයනවා

    Inheritance (පැවත ඒම)

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

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

    gearbox එකේ දැතිරෝද සෙට් එක අපි අලුතින් දැම්මා කියලා අපි ගියර්ලීවරය පාලනය කරන හැටි වෙනස් වෙන් නෑ නෙ :D

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

    එකම 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 අවස්තාව

    මෙය මම gearbox එක සම්බන්ද උදාහරනෙන් පෙන්වන්නම්
    මෙහි 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 given shift

    }


    හැබැයි Polymorphism කියන්නේ method overloading කරන එකටම නෙවෙයි method overloading කියන්නේ Polymorphism වල එක් අවස්තාවක් විතරයි
     

    rigamage

    Well-known member
  • Feb 18, 2007
    3,388
    1,220
    113
    මහවිලච්චිය
    object oriented programming | වස්තු පාදක ක්‍රමලේකනය III
    Encapsulation vs Abstraction


    ඔන්න කීප දෙනෙකුට ප්‍රශ්නයයක් ඇවිල්ලා තිබ්බා මේ Encapsulation සහ Abstraction ගැන ඒ හින්දා ටිකක් ඒක වැඩිපුර පැහැදිලි කරන්න හිතුවා

    මුලින්ම පොතේ තියන විදියට දාන්නම්කෝ

    Encapsulation is information hiding.

    Abstraction means working on a higher level, not worrying about the internal details




    Encapsulation හැම තිස්සෙම සම්බන්ද වෙන්නේ දත්ත එහෙම නැත්නම් object එකක state එකත් එක්ක ..
    නැත්නම් Encapsulation එකක්ති වෙන්නේ අපේ දත්ත වටා බැම්ම බදින එක .. නමුත් ඒ object එකේ දත්ත භාවිතයට ගන්න පුද්ගලයට සීමා සහිත කපොලු කිහිපයකුත් තියනවා දත්ත වලට පිවිසෙන්න

    Abstraction වලදි අපි object එකක behavior එක පිලිබදව තමා සම්බන්ද වෙන්නේ මෙතනදි මේ behavior එකෙන් object එකකේ state එක වෙනස් කිරීම සිද්ද වෙනවා නමුත් එය වෙනස් වන විදිය ගැන එහම නැත්නම් implementation එක ගැන ඒ object එක භාවිතා කරන පුද්ගලයට නිරාවරනය වීමක් වෙන්නෑ

    ඔන්න අපි තව දුරටත් මේක අපිට සමීප උදාහරනයකින් ගම්මුකෝ



    ඔන්න තියෙනවා වතුර ටැංකියක් මේකෙ තියෙන වතුර තමයි data .. මේ ටැංකියට පිටාර නළයකුයි .. වතුර ඇතුල් කරන්න නළයකුයි ..වතුර ගන්න නළයකුයි තියෙනවා මේ නළ ටික තමා අපේ Encapsulation methods
    අපිට ටැංකියේ වතුර ගන්න හරි ටැංකිය පුරවන්න හරි ඕනෑ උනාම අපි ඔය නළ ටික තමා පාවිච්චි කරන්නේ නැතුව ටැංකියේ උඩ පියන ඇරලා වතුර දාන්නවත් ගන්නවත් යන් නෑනෙ
    අන්න ඒ වෙගේ වතුර (data ) වලට තියෙන අනවශ්‍ය ප්‍රවේශ මාර්ග වලක්වලා වඩා ආරක්ශාකාරී කර්මයකට (Encapsulation methods \ getters and setters ) මගින් වතුර (data ) වලට පිවිසීමට ඉඩ ලබා දීම තමා Encapsulation කියන්නේ



    Abstraction කියන්නේ මේ වතුර ටැංකියේ වතුර පිටවෙන නලයට හයි කරලා තියෙන ටැප් එකක් වගේ වතුර ටැංකියෙන් වතුර ගන්න ඕනි එක්කෙනෙක් කරන්නේ ටැප් එක අරින එක ... එතකොට වතුර එනවා ... නමුත් මේ වතුර එන්න බලපාන විභව ගක්තිය පීඩනඅන්තරය වගේ දේවල් ටැප් එක අරින එක්කෙනාට පේන් නෑනෙ ..එයා අනික ඒ ගැන වද වෙන්නත් ඕනි නෑ .. Abstraction කියන්නේත් ඒවගේ .. වතුර (data ) වලින් අවසාන ප්‍රයෝජනය ගන්න එක්කෙනාට ඒ වතුර (data ) එතෙන්ට ආවෙ කොහොමද කියලා දැනගන්න නොදෙන විදියට කෝඩ් ලියන එක තමා Abstraction කියන්නේ
     

    lahirukasun

    Well-known member
  • Nov 28, 2006
    1,639
    103
    63
    good thread !!!
    digatama karanawa nam hondai saho!! :):)
    nathnam ithin kalin thibba mae wage thread wage tika dawasakin apita pus thamai.

    anyway,, rep 6++