ပရိုဂရမ်းမင်းအတွက်မဆိုနည်းနည်းအသိပညာရှိပြီးသူမည်သူမဆို, စိတ္တဇအခြေစိုက်စခန်းအတန်းရှိတယ်ဘာဖြစ်လို့အကြောင်းကိုအံ့သြ။ သူတို့ရဲ့ရည်ရွယ်ချက်ကဘာလဲ? တစ်ဦးစိတ္တဇလူတန်းစားကိုဖန်တီးရန်ဘယ်လိုနေသလဲ? သူတို့အလေ့အကျင့်အတွက်ပူဇော်အားသာချက်များဘာတွေလဲ? အဘယ်ကြောင့်သူတို့ကပရိုဂရမ်းမင်းအတွက်လိုအပ်နေပါသည်နှင့်၎င်းတို့၏အကောင်အထည်ဖော်မှုအချို့ features တွေအကောင့်သို့ယူသင့်သလဲ
စိတ္တဇအတန်း
ဒီတော့ပရိုဂရမ်းမင်းအတွက်အရာဝတ္ထုမဖန်တီးနိုင်သောအခြေခံပေါ်မှာယူနစ်ကုဒ်တောင်းဆိုခဲ့သည်။ ဒါဟာဆက်ခံ၏ဤအတန်းအစားစိတ္တဇမဖွစျနိုငျကွောငျးကိုမှတ်ချက်ပြုသည်။ ထိုကွောငျ့, သူတို့ကိုအပေါ်အခြေခံပြီးအရာဝတ္ထု၏ဖန်တီးမှုအတော်လေးဖြစ်နိုင်ပါတယ်။ ကျွန်တော် Java ကို၏ဥပမာကိုစဉ်းစားပါလျှင်, ငါတို့သည်အတန်းအေအတွက်တည်ဆောက်ဖော်ပြရန်နိုင်ပါတယ်ဒါပေမယ့်သူတို့ကိုသုံးစွဲဖို့တဲ့မော်ဒယ်တည်ဆောက်ရန်, ငါတို့မပေးလို့ရတယ်။ ဤအခြေအနေမှထွက်လမ်းကိုမဆို variable ကိုရည်ညွှန်းကြေညာရန်ဖြစ်ပါသည်။ တဖန်သင်တို့ကဤသည်ကလုပ်ဆောင်နိုင်တယ်ဘယ်လိုအတန်းအစားအေတစ်ခုအရာဝတ္ထုမှထောက်ပြနိုင်အောင်ရှင်းလင်းစွာသတ်မှတ်ခံရဖို့လိုအပ်ပါသလား ဒီအဆောင်ကြဉ်းကျွန်တော်တို့ကိုကူညီလိမ့်မယ်။ ဒါဟာမိဘလူတန်းစားအမြဲတမ်းဆင်းသက်လာထက်ပိုစွယ်စုံဖြစ်စဉ်းစားကြောင်းစိတ်တွင်ဘွားမြင်ရပါမည်။ အလိုအလျှောက်ဆောင်ကြဉ်းရန်အသုံးပြုအများအပြား programming ကိုဘာသာဖြင့်။ ထိုကဲ့သို့သောယန္တရား၏ရှေ့တော်၌အဘယ်သူမျှမယုံကြည်မှုလည်းမရှိလြှငျမူကား, သငျသညျအတိအလင်းအရာဝတ္ထုကိုးကားရမည်ဖြစ်သည်။
စိတ္တဇနည်းလမ်းများ
သူတို့ကဘာတွေလဲ? စိတ္တဇဒီလူတန်းစားအတွက်အကောင်အထည်မဖော်လျက်ရှိသောသူတို့ကိုနည်းလမ်းများကိုခေါ်ပါ။ ထို့ကြောင့် (မြို့သားအသုံးပြုသောအငြင်းပွားမှုများ lists) ကိုအောက်ပါကွင်း (ထိုနည်းလမ်းကို၏တည်ရှိသောပိတ်ပင်တားဆီးမှုဖော်ပြချက်ညျကြိ) ပုံဖွင့်လှစ်မပေးပါဘူး, သာတဲ့ semicolon ။ ထို့ကြောင့်ဤကိစ္စတွင်အတွက်ကြောင့်ဘာအကြောင်းကိုမျှသတင်းအချက်အလက်များလည်းမရှိ။ ဤတွင်မေးခွန်းကိုမေးမြန်းစေခြင်းငှါ: "အဘယ်နည်းလမ်းကိုအကောင်အထည်ဖော်ဆောင်ရွက်မှုမပါဘဲ?" ပြီးနောက်ရှိသမျှတို့, သူကိုအသုံးပြုခံရဖို့မပါ! ဟုတ်ပါတယ်, သူဖော်ပြထားခဲ့သည်ရှိရာစာသင်ခန်းထဲမှာ, ဒီမဖြစ်နိုင်ပါ။ ကျွန်တော်တစ်ဦးဆင်းသက်လာ၏မြင်ကွင်းကို၏အချက်အနေဖြင့်အခြေအနေကထည့်သွင်းစဉ်းစားလျှင်မူကား, ကဟုခေါ်တွင်စေနိုင်ပါတယ်။ ထိုသို့ကဒီအတန်းထဲတွင်ရရှိနိုင်မယ့်တိကျတဲ့ဖော်ပြချက်အပေါ်လုပ်ကိုင်မည်ဖြစ်သည်။
အင်္ဂါရပ်များစိတ္တဇနည်းလမ်းများ
သူတို့ကိုသုံးပြီးအတွက်ကန့်သတ်ရှိပါတယ်။ ၏ဥပမာကိုစဉ်းစားကြစို့ က Java programming language ကို။ တစ်ဦးလိုအပ်ချက်အတန်းအနည်းဆုံးထိုကဲ့သို့သောနည်းလမ်းရှိပါတယ်လျှင်, စိတ္တဇဖြစ်ရမည်ရှိပါသည်။ ထိုအဆိုအမှု၌ထိုကဲ့သို့သောဆောက်လုပ်ရေးသုံးစွဲဖို့သင့်လျော်တဲ့လဲ? ရဲ့ဥပမာတစ်ခုလူတန်းစားအိမ်မွေးတိရစ္ဆာန်များနှင့်အတူဤအမှုကိုနားလည်နိုင်ကြကုန်အံ့။ သူတို့ထုတ်ဝေဖြစ်ကြောင်းအသံမရှိကွောငျးကိုနားလည်သဘောပေါက်ရန်စတင်။ ထို့ကြောင့်အများဆုံးယေဘုယျလူတန်းစားအတွက်နည်းလမ်း၏အသံကအကောင်အထည်ဖော်မှုသတ်မှတ်ထားခြင်းမရှိပါ။ သို့သော်သူ့အဘို့လုပ်ကွက်များမှတဆင့်ရသောဆိတျကှယျခန်ဓာကိုဖန်တီးခဲ့သည်။ ခွေးလူတန်းစားဖန်တီးသောအခါနှင့်အောက်ပါအချက်များကိုအတွက်, ကြောင်သို့မဟုတ်ဟမ်းစတားအင်္ဂါရပ်အားလုံးမှထုတ်ဖော်လိမ့်မည်သည့်မူဘောင်အတွက်ကြောင့်တစ်ခုတည်းနည်းလမ်းသတ်မှတ်ထားသောလိမ့်မည်။
အင်တာဖေ့စ
လူတွေနေတဲ့အရည်အသွေးကောင်းထုတ်ကုန်အောင်ကူညီပေးဖို့ - ပရိုဂရမ်းမင်းခုနှစ်တွင်သူ၏ရည်ရွယ်ချက်အများအပြား tools တွေကိုဖန်ဆင်းခဲ့တယ်။ နှင့်ထည့်သွင်းစဉ်းစားအောက်ရှိခေါင်းစဉ်ကဒီရှုထောင့်အားပေးပြီးမှ, လူတိုင်းကို interface အနေဖြင့်တစ်ဦးစိတ္တဇလူတန်းစားမတူဘဲသိသင့်သည်။ ဒါကြောင့်နောက်ဆုံးအင်္ဂါရပ်ကဂုဏ်သတ္တိများနှင့်နည်းလမ်းများခန္ဓာကိုယ်သတ်မှတ်ကြသည်မဟုတ်မဖွစျနိုငျသောကွောငျ့ဖွစျသညျ။ အဆိုပါ interface ကိုတစ်ဦးထံမှစိတ္တဇလူတန်းစားများအကြားခြားနားချက်ကိုဆန်းစစ်အသုံးပြုပုံများထဲမှအထူးသဖြင့်ပိုမို နေ. သငျ့သညျ။ သဘောပေါက်တာဖြစ်ပါတယ် - ဒုတိယစဉ်ထို့ကြောင့်ပထမဦးဆုံး, အမွေဆက်ခံသည်။ အတွေ့အကြုံလူတစ်ဦးကဒီ inconsequential ထင်ရပေမည်။ အဖြစ်တာအဖြစ်လိုအပ်သော - ဒါပေမယ့်တကယ်တော့တစ်ဦးတည်းသာလူတန်းစားအမွေဆက်ခံခြင်း, သဘောပေါက်နိုင်ပါတယ်ဆိုလိုသတည်း။ ဒါကအင်တာဖေ့စကနေကွဲပြားခြားနားသည်ကားအဘယ်သို့ သည့်စိတ္တဇလူတန်းစား၏။ ဂျာဗား နေဆဲသာစိတ္တဇအများပြည်သူနည်းလမ်းများနှင့်အငြိမ်ရုံကလွဲပြီးမဖျောပွနိုငျသော features တွေဖြစ်ပါတယ်။ ဒါပေမယ့်တူညီတဲ့ interfaces မှာလည်းအမွေဆက်ခံစေနိုင်သည်။ ဒါဟာအသုံးပြုတဲ့အော်ပရေတာအများပြည်သူမှတဆင့်အများပြည်သူဖြစ်ကြောင်းထောက်ပြရန်လိုအပ်ပေသည်။
interfaces ၏အကွိမျမြားစှာအမွေကို
ဒီ feature တွေ (ဥပမာ, ဂျာဗားကိုထည့်သွင်းစဉ်းစား) များစွာသောပရိုဂရမ်းမင်းဘာသာစကားများအတန်းများအတွက်မရရှိနိုင်။ ဤသည်မှာပြဿနာများ၏အရေအတွက်ကြောင့်ဖြစ်သည်။ ထိုကဲ့သို့သောသဲသဲကွဲကွဲမရှိသောဆက်ခံအတွက်ဖြစ်ပေါ်ကြောင်းညွှန်ပြထားသကဲ့သို့။ ဒီအမျိုးစုံ interface ကိုအမွေ၏နိဒါန်းများအတွက်အကြောင်းပြချက်ဖြစ်ခဲ့သည်။ ဤသည်တစ်စိတ်တစ်ပိုင်းလက်ရှိပြဿနာများကိုဖြေရှင်းနိုင်ပါတယ်, ဒါပေမယ့်အားလုံးမဟုတ်။ (သူတို့နာမည်တူကြလိမ့်မည်ဖြစ်သော်လည်း) ဒါ, encapsulation တွေကိုသေချာနှင့် polymorphic ၏အခြေခံမူမှကျေးဇူးတင်စကား, interfaces အောင်မြင်စွာအမျိုးမျိုးသောနည်းလမ်းများနှင့်အညီကွဲပြားခြားနားသောအတန်းထဲတွင်အကောင်အထည်ဖော်နိုင်ပါသည်။ သို့သော်လက်ရှိပြဿနာများအကြောင်းကိုမမေ့မလြော့ပါ။ ဒီတော့မျိုးစုံ interfaces အတူလုပ်ကိုင်သည့်အခါအစဉ်အမြဲကျနော်တို့စိတ်တွင်ရှိသည်သောသတ်မှတ်ရပါလိမ့်မယ်။ သငျသညျနည်းလမ်းနှစ်ခုအတွက်အမည်တူနှင့်အတူအလုပ်လုပ်ရန်ရန်ကြိုးစားသောအခါဒါ့အပြင်ပြဿနာတွေကိုဖြစ်နိုင်ပြီးပါလိမ့်မယ် - ဤအမှု၌, သူတို့ကအခွင့်ကောင်းယူနိုင်လိမ့်မည်မဟုတ်။ ထို့ကြောင့်, ထိုကဲ့သို့သောကိစ္စများတွင်ပါကစုစုပေါင်းရောင်းအား၏ရှေ့မှောက်တွင်ဂရုစိုက်ရန်လိုအပ်သည်။
စိတ္တဇဒေတာ
ဤအယူအဆအစီအစဉ်သော့ချက်ဖြစ်ပါတယ်။ ဤကိစ္စတွင်ခုနှစ်, လွတ်လပ်သောပြန်လည်သုံးသပ်၏ abstraction အောက်, interface နဲ့အကောင်အထည်ဖော်ရေး၏ခွဲခြာနားလည်ပါတယ်။ ဥပမာတစ်ခုကိုကြည့်ကြရအောင်။ ကျနော်တို့အနေနဲ့ object ကိုသို့မဟုတ် module တစ်ခုဖြစ်သောရုပ်မြင်သံကြားရှိသည်။ ၎င်းသည်အင်တာဖေ့စရှိပါတယ်။ ကဲ့သို့သော, သူတို့ကအဖြစ်ကောင်းစွာအသံနဲ့ပုံရိပ်ကိုအတိုင်း, ထိန်းချုပ်မှုဖြစ်ကြသည်။ ပိုမိုစုံလင်သော interface ကိုအသုံးပြုတီဗီပိုမိုအဆင်ပြေ, အသုံးပြုသည်။ ကျနော်တို့ဆို button ကိုနှိပ်ခြင်းဖြင့်အစီအစဉ်များအကြားပြောင်းလဲနိုင်သည်။ ဤကိစ္စတွင်ခုနှစ်, တီဗီထဲမှာရုပ်ပိုင်းဆိုင်ရာဖြစ်စဉ်များကိုစဉ်းစားရန်မလိုအပ်လည်းမရှိ။ သူတို့ထဲက device ကိုစုဆောင်းသူကိုအထူးကု, ဂရုစိုက်ပါ။ ကျနော်တို့ကလူဂုဏ်သတ္တိများကိုသာစိတ်ဝင်စားကြိုက်တယ်။ အဆိုပါပရိုဂရမ်မှပြန်လာသောကျနော်တို့သူတို့တစ်တွေဆင်တူ interface နဲ့အကောင်အထည်ဖော်မှုအပေါ်ဖြစ်ကြောင်းပြောနိုင်ပါသည်။ ပုဂ္ဂိုလ်တစ်ဦးသည်သူ၏သိကျွမ်းခြင်း၌ယုံကြည်မှုရှိလျှင်လည်း, ငါတို့မသိဘဲရမ်းမေးတဲ့တီဗီကိုဖုံးလွှမ်းကြောင့်တိုးတက်ကောင်းမွန်ဖို့ "ကိုဖယ်ရှား" နိုငျသညျ။ ဒီဒေသခံအောင်မြင်မှုဆီသို့ဦးတည်နိုငျသျောလညျးအမြားဆုံးကိစ္စများတွင်, အဆုံးရလဒ်ကအနုတ်ဖြစ်ပါတယ်။ ထို့ကြောင့်, access ကို၏ထောက်ခံ programming ကိုတားမြစ်ချက်နှင့်စိတ္တဇအချက်အလက်များ၏အတွင်းပိုင်းအစိတ်အပိုင်းများကိုဖုံးကွယ်ထားရန်။ ဒီယန္တရား၏နိယာမအတွင်းအစိတ်အပိုင်းများများ၏ရည်ရွယ်ချက်ရှိရှိသို့မဟုတ်ရည်ရွယ်တဲ့ညှိနှိုင်းမှုကာကွယ်တားဆီးဖို့တစ်လမ်းများအတွက်ထောက်ပံ့ပေးသည်။ အခါစိတ္တဇဒေတာအမျိုးအစားများ, သူတို့အပျေါမှာဖျော်ဖြေနိုင်စစ်ဆင်ရေးအစုတခုအစုတခု၏ယုတ်အကြောင်းပြောနေတာ။
အရာဝတ္ထု
ကျနော်တို့ပြီးသားယေဘုယျနှင့်အထွေထွေအတွင်းစိတ္တဇလူတန်းစားများနှင့်အင်တာဖေ့စမြင်ကြပြီ။ အခုတော့ရဲ့အသေးစိတ်ငါတို့အသိပညာကြကုန်အံ့။ စတင်နိုင်ရန်အာရုံစိုက်မှုအရာဝတ္ထုပေးဆောင်။ အာကာသနှင့်အချိန်ရှိသောသဘာဝပတ်ဝန်းကျင်အဖြစ်မှန်သူတို့အားအောက်တွင်, ယေဘုယျအတွက်သတိထား။ သို့သော်တရားဝင်ပရိုဂရမ်ကိုအတွင်းအရာဝတ္ထုဖော်ထုတ်ရန် (view ၏အတွေးအခေါ်နှင့်သီအိုရီအချက်နှင့်အတူ) ခက်ခဲသည်။ ဒါကြောင့်သူ့ရဲ့ဂုဏ်သတ္တိကြောင့်ဖြစ်ပါတယ်။ ဥပမာတစ်ခုအဖြစ်အောက်ပါ: တစ်ခုအရာဝတ္ထုထူးခြား (ကထူးခြားတဲ့အမည်) ကိုဖော်ထုတ်နိုင်ပါတယ်, တကအချို့သောပြည်နယ်ထဲမှာတည်သည်နှင့်အပြုအမူတစ်ခုအခြို့သောပုံစံကိုအသုံးပြုသည်။
အမွေကို
သင့်ရဲ့ပရိုဂရမ်းမင်းတ္ထုများအကြားတစ်ဦး hierarchical သစ်ပင်အဆောက်အဦဆက်ဆံရေးအပေါ်တွင်အခြေခံထားပါသည်ကတည်းကမေးခွန်းကိုမိဘကုဒ်စာကြည့်တိုက်အမျိုးအစားများ၏အခြေခံဂုဏ်သတ္တိများလွှဲပြောင်းခဲ့သည်ဟူသောအချက်ကိုအကြောင်းကိုထမြောက်တော်မူသည်။ တစ်စုံတစ်ဦးကတဦးတည်းကိုအခြားအရာတစ်ခုခုရဲ့အပြုအမူနဲ့ဖွဲ့စည်းပုံမှာကို repeat သည့်အခါအမွေဥစ္စာကိုအောက်မှာဆက်ဆံရေးနားလည်ပါသည်။ သာမန်ဘဝမှာ, နေရာတိုင်းတွင်တွေ့ရှိနိုင်ပါသည်။ ထိုသို့သောရွှေ့ဆိုင်းခြင်းနှင့်နှိုင်းယှဉ်စိတ္တဇ element တွေကို programming ခဲ့သည်။ တစ်ဦးနှိုင်းယှဉ်အဖြစ်, ငှက်ကဲ့သို့အဘယ်သူမျှမထိုကဲ့သို့သောခန္ဓာကိုယ်လည်းမရှိဆိုတဲ့အချက်ကို။ ဒါကတစ်ဦးစိတ္တဇနာမည်ဖြစ်ပါတယ်။ တိကျတဲ့ဥပမာအားဖြင့်အမျှလက်ဖက်, နိုက်တင်ဂေးလ်သို့မဟုတ်စာကလေးဦးဆောင်လမ်းပြ။ ကျနော်တို့အတန်းစာကြည့်တိုက်ကိုသုံးနိုင်သည်အဖြစ်တစ်ဦးအထူးသဖြင့်အစီအစဉ်ကိုအဘို့ထိုသူတို့ဖွံ့ဖြိုးတိုးတက်ဖို့အမွေမြေမှကျေးဇူးတင်ပါသည်။ ဒီ tool ကတစ်ပြိုင်နက်တည်းတစ်ခုပြီးသား created ၏ဂုဏ်သတ္တိများဖြည့်စွက်သို့မဟုတ်ပြောင်းလဲနေတဲ့အသစ်တ္ထုကိုဖန်တီးရန်ကျွန်တော်တို့ကိုခွင့်ပြုပါတယ်။ လိုအပ်ခဲ့လျှင်အမွေဆက်ခံသူ, သူ့ဘိုးဘေးအပေါငျးတို့သနည်းလမ်းများနှင့်လယ်ယာရရှိသွားတဲ့နှင့်၎င်း၏ကိုယ်ပိုင် attribute တွေရရှိသည်။ ကြောင့်စိတ္တဇဒြပ်စင်များနှင့်ရှေးဟောင်းအမွေအနှစ်၏နိယာမရှိပါတယ်ဆိုတဲ့အချက်ကိုငှါ, object-oriented programming အတွင်းပြုပြင်မွမ်းမံများအတွက်လုံလောက်သောအခွင့်အလမ်းများရှိပါသည်။ ထို့အပြင်ကြောင့်ပြဿနာများဖြေရှင်းရေးတစ်ခုပြောင်းလွယ်ပြင်လွယ်ချဉ်းကပ်ခွင့်ပြုပါတယ်။ သငျသညျလွှဲပြောင်းအချက်အလက်များနှင့်လုပ်ငန်းဆောင်တာများသစ်တစ်ခုလူတန်းစားကိုအမွေခံရတဲ့အခါ။
polymorphic
ဒါဟာပြဿနာများ၏ကွဲပြားခြားနားသောအမျိုးအစားများကိုဖြေရှင်းဖို့အတူတူ function ကိုလျှောက်ထားရန်လိုအပ်ပေသည်။ ဤကိစ္စတွင်တစ်ဦးကွဲပြားခြားနားလုပ်ဆောင်ချက်၏ဖြစ်နိုင်ခြေ၏ရှေ့မှောက်တွင်ပေးရာရဲ့ contents အလုပ်ပြုမိသောအတူအရာဝတ္ထုများ၏အမျိုးအစားပေါ်မူတည်ပါလိမ့်မယ်။ polymorphic လက်အောက်တွင်ကွဲပြားခြားနားတဲ့နည်းလမ်းတွေထဲမှာပြဿနာများ၏ semantic အဓိပ္ပာယ်ကိုဆင်တူဖျော်ဖြေဖို့တစ်ဘုံမိဘရှိသည်သောဒြပ်စင်များ၏ဂုဏ်သတ္တိများနားလည်ပါတယ်။ ကျနော်တို့တိရိစ္ဆာန်များနှင့်အတူတစ်ဦးနှိုင်းယှဉ်မယ်ဆိုရင်ဆွဲပါ။ run ဖို့ - အရေးယူရှိပါသည်။ ငါတို့ရှိသမျှသည်ကဖြစ်ပျက်ပုံကိုငါသိ၏။ ဒါပေမယ့်ကွဲပြားခြားနားသောတိရိစ္ဆာန်များ (ခြင်္သေ့, ဆင်, ချင်ပန်ဇီမျောက်, မိကျောင်း, လိပ်) ဤ action ကွဲပြားခြားနားတဲ့နည်းလမ်းတွေထဲကယူသွားပါလိမ့်မည်။ ဤကိစ္စတွင်ခုနှစ်, သူတို့ရဲ့လှုပ်ရှားမှုလိုအပ်ပါကတစ်ဦးအထူးသဖြင့်အမှုတစုံတခုသောလုပ်ရိုးလုပ်စဉ်, algorithm ကိုအောင်မြင်စွာပြုလုပ်အကောင်အထည်ဖော်ဘို့ဖြစ်စေနိုင်သည့်တာဝန်ရှိဆော့ဖ်ဝဲရေးသူဖြစ်ပါတယ်။ ဤသည်နည်းလမ်းများအစုတခုသုံးပြီးပြုမိသည်။ မွေးရာပါနေသောဂုဏ်သတ္တိများကန့်ကွက်ထားတဲ့အသီးအသီးလူတန်းစားပရိုဂရမ်သတ်မှတ်ပေးသည်အတွက်တစ်ချိန်တည်းမှာပင်။ အမျိုးအနွယ်အတွက်တစ်ခုခုပြောင်းခြင်း, သင်သည်ဤအမှု၌တိကျသော, တပ်မက်လိုချင်သောအရေးယူအောင်မြင်ရန်နိုင်ပါတယ်။ ထိုကဲ့သို့သောအကျိုးသက်ရောက်အရာဝတ္ထု၏ polymorphic ဟုခေါ်သည်။ ယေဘုယျအားဖြင့်တစ်ဦးစိတ္တဇလူတန်းစား programming ကိုများအတွက်အလွန်အသုံးဝင်သော tool တစ်ခုဖြစ်သည်။