ဝတ္တစက္ခုဗေဒ(Object Oriented)

Object Oriented ဆိုသည်မှာ ပုံဆောင်ဝတ္တုအချင်းချင်း ပူးပေါင်း၍ စစ္စတမ်တစ်ခု၏ တာဝန်များထမ်းဆောင်စေရန် စဉ်းစားခြင်းကို ခေါ်ဆိုသည်။ စစ္စတမ်အတွင်းတွင် အသုံးပြုသော အချက်အလက်များနှင့် လုပ်ဆောင်ချက်များကို အုပ်စုဖွဲ့ကာ ပုံဆောင်ရုပ်ဝတ္တု တစ်ခုအနေဖြင့် ကိုယ်စားပြုပြီး၊ ထိုပုံဆောင်ရုပ်ဝတ္တုများ အချင်းချင်း ဆက်သွယ်ဆောက်ရွက်ခြင်း အားဖြင့် စစ္စတမ်တစ်ခုလုံးကို ဖွဲ့စည်းတည်ဆောက်ခြင်းဖြစ်၏။ အင်္ဂလိပ်ဘာသာစကား object-oriented မှ ဆင်းသက်လာသော စကားလုံးတစ်ခုဖြစ်၏။

Object Oriented ဘာသာရပ်၏ စတင်လာပုံမှာ ပရိုဂရမ်၏ဖွဲ့စည်းပုံကို ကိုယ်စားပြု ရုပ်ဝတ္တုများ၏ အပြန်အလှန်ဆောင်ရွက်ချက်များအနေဖြင့် ပြောင်းလည်းကြည့်မြင်ပြီး၊ ပရိုဂရမ်ကုဒ်များ ကိုရေးသား ဖော်ပြစေသော Object Oriented ပရိုဂရမ်မင်း(OOP; object-oriented programming) အဖြစ်စတင်၏။ ထိုမှတဆင့် စစ္စတမ်များကို တည်ဆောက်ရာတွင် အခြေခံလိုအပ်ချက်များကို သုံးသပ်ရာတွင်လည်းကောင်း၊ တည်ဆောက်ရာတွင် ဖွဲ့စည်းပုံကို ရုပ်ဝတ္တုအနေဖြင့် ကိုယ်စားပြုသက်မှတ်ပြီး စဉ်းစားသော Object-Oriented Analysis နှင့် စစ္စတမ်၏ လုပ်ဆောင်ချက်များနှင့် ဖွဲ့စည်းပုံကို ရုပ်ဝတ္တုနှင့် ကလပ်စ်များဖြင့်ဖော်ပြသော Object-Oriented Design ဟူ၍ အဆင့်ဆင့် တိုးတက်ပြောင်းလည်းလာခဲ့၏။

## ဝတ္တုစက္ခုဗေဒ
**Object Oriented**စကားလုံးအား အချိန်အခါအပေါ်တွင်မှုတည်၍  မကွဲမပြား အသုံးပြုလေ့ရှိ၏။
* Object-Oriented Programming
* Object-Oriented Analysis
* Object-Oriented Design
အထက်ပါစကားလုံးများကို စုစည်း၍ **Object Oriented**ဟု ခေါ်ဆိုလေ့ရှိ၏။

## Object Oriented ဘာသာရပ်၏လက်ရှိအနေအထား
Object Oriented ဘာသာရပ် မပေါ်ပေါက်ခင်ကာလများတွင် စစ္စတမ်များအား အသေးစိတ်ခွဲခြမ်းစိတ်ဖြာ သုံးသပ်ရာတွင် ဒေတာဖွဲ့စည်းပုံကို အခြေခံ၍ ခွဲခြမ်း စိတ်ဖြာသည့် နည်းလမ်းဖြစ်သော ဖွဲ့စည်းပုံစနစ်ချခြင်းနည်းပညာကို အသုံးပြုခဲ့ကြ၏။

တဖန်ပရိုဂရမ်မင်းအဆင့်တွင်လည်း ပရိုဂရမ်မင်း၏ လုပ်ဆောင်ပုံကို သက်မှတ်ပေးသော အမိန့်ဖွဲ့စည်းပုံများကို စုပေါင်းရေးသားလေ့ရှိသော ဖွဲ့စည်းပုံစနစ်ချပရိုဂရမ်မင်းနှင့် အမျိုးအစားတူ လုပ်ဆောင်ချက်များကို စုစည်းထား၍ ပြင်ပမှ အလွယ်တကူ ဆက်သွယ်ခြင်း မပြုလုပ်နိုင်ရန် အကန့်များကို သတ်မှတ်လေ့ရှိသော မော်ဂျူးပရိုဂရမ်မင်း၊ အနေအထားအမျိုးမျိုးအပေါ်တွင် အသုံးပြုနိုင်မှု့ကို ဦးစားပေးသား ဒေတာအမြင် ပရိုဂရမ်မင်းအစရှိသော နည်းလမ်းများကို အသုံးပြုခဲ့ကြ၏။

Object Oriented ဘာသာရပ်သည် အထက်ပါနည်းလမ်းများကို စုပေါင်း၍ အသုံးလွယ်ကူရန် စီစဉ်ထားသော နည်းပညာတစ်ခုဖြစ်သည်ဟု စဉ်းစားနိုင်သည်။

Object-Oriented Analysisနှင့် Object-Oriented Designတွင် အခြေခံ၍ လက်တွေ့စစ္စတမ်များကို တည်ဆောက်ရာတွင် မဖြစ်မနေ Object-oriented programming language ကို အသုံးပြုရမည်ဟု မဆိုလိုပါ။ သို့ရာတွင် ဝတ္တုစက္ခုလက္ခဏနည်းလမ်းဖြင့် ခွဲခြမ်းစိတ်ဖြာ၍၊ ဝတ္တုစက္ခုဒီဇိုင်းဖြင့် ဖွဲ့စည်းပုံကို ဒီဇိုင်းရေးစွဲထားသော စစ္စတမ်တစ်ခုအား လက်တွေ့တည်ဆောက်ရာတွင် ဘာသာရပ်ပိုင်းဆိုင်ရာ အတွေးအခေါ်များတွင် ကွာခြားမှု့နည်းပါးစေရန် ဝတ္တုစက္ခုပရိုဂရမ်မင်းဘာသာရပ်များကို အသုံးပြုကြသည်က များပါသည်။

## Object Oriented အခြေပြု စစ္စတမ် တည်ဆောက်ပုံများ
Object Oriented အခြေပြု စစ္စတမ် တည်ဆောက်ပုံများအနေဖြင့်Booch နည်းလမ်း၊OMTနှင့်OOSE/Objectory အစရှိသည့် နည်းလမ်းများက ထင်ရှားကြ၏။ 

နောက်ပိုင်းနှစ်များတွင် အထက်ပါနည်းလမ်းများတွင် အသီးသီးအသုံးပြုခဲ့သော ဖော်ပြပုံများသည် OMG (Object Management Group) ၏ ကြိုးပမ်းမှု့ကြောင့် တစ်ခုတည်းသော စံပြုဘာသာရပ်UML (Unified Modeling Language) အဖြစ် ၁၉၉၇ခုနှစ်မှစ၍ အခြေခံစံပြုဘာသာအဖြစ် သက်မှတ်ခဲ့ပြီးနောက်ပိုင်းတွင် ဝတ္တုစက္ခုတည်ဆောက်ပုံများကို ဖော်ပြရာတွင် UML ကိုသာအသုံးပြုလေ့ရှိကြ၏။

## Object Oriented ဘာသာရပ်၏ အခြေခံဖွဲ့စည်းပုံ
Object Oriented ဘာသာရပ်၏ အဓိကအတွေးအမြင်များမှာ အောက်ပါအတိုင်းဖြစ်ကြ၏။
### ဖုန်းကွယ်ထားနိုင်ခြင်း(Encapsulation)
ဆော့ဖ်ဝဲတစ်ခုကို တည်ဆောက်ရာတွင် ပရိုဂရမ်အစုအဝေးတစ်ခုအား ရုပ်ဝတ္တုတစ်ခုအနေနှင့် ကြည့်မြင်ရာတွင်၊ ထိုရုပ်ဝတ္တု၏ အချက်အလက်နှင့်၊ လုပ်ဆောင်ချက်များအတွင်းတွင်၊ ပြင်ပသို့ အသုံးပြုစေလိုသောအရာများ ပါရှိသလို၊ ပြင်ပမှ တိုက်ရိုက်ဆက်သွယ် အသုံးပြုပါက လက်ရှိရုပ်ဝတ္တု၏ ရပ်တည်မှု့ကို ပျက်စီးစေလိုသော လုပ်ဆောင်ချက်များနှင့် အချက်အလက်များလည်း ပါရှိပါလိမ့်မည်။ ထိုအခါမျိုးတွင် လုပ်ဆောင်ချက်နှင့် အချက်အလက်များကို ပြင်ပမှအသုံးပြုနိုင်သော အရာများ၊ အသုံးပြုနိုင်သည့် အဆင့်ကို သတ်မှတ်ထားရန်လိုအပ်သည်။ 
* မိမိတစ်ဦးတည်းသာ အသုံးပြုနိုင်သော အရာများ၊ 
* မိမိ၏ တစ်အိမ်တည်းနေသူ (package တစ်ခုအတွင်းတွင် တည်ရှိသော Object) များမှ အသုံးပြုနိုင်သည့် အရာများ
* မိမိ၏အမွေဆက်ခံသူများကို အသုံးပြုစေလိုသည့်အရာများ
* မည်သူမဆို အသုံးပြုနိုင်သည့်အရာများ 
အစရှိသဖြင့် အမျိုးမျိုး သတ်မှတ်ထားရန် လိုအပ်ခဲ့သည်။ သို့ရာတွင် ယခုနောက်ပိုင်း ပရိုဂရန်မင်းစာအုပ်များတွင် ဝတ္တစက္ခုဗေဒတွင် ဖုန်းကွယ်ထားခြင်းကို မဖြစ်မနေရေးသားရန် လိုအပ်သည်ဟု မှားယွင်းစွာ ဖော်ပြတတ်ကြသည်ကို တွေ့ရတတ်၏။ 
### အမွေဆက်ခံနိုင်ခြင်း(Inheritance)
Object Oriented ဘာသာရပ်၏ စတင်ပေါ်ပေါက်လာခဲ့ရခြင်းများကို ပြန်လည်တွေးကြည့်မည်ဆိုလျှင် အမွေဆက်ခံမှု့၏ အရေးပါမှု့ကို သိရှိနိုင်သည်။ ရေးသားထားသော ကုဒ်များကို ပြန်လည်အသုံးပြုလိုခြင်းသည် ဝတ္တုစက္ခုဗေဒကို ဖြစ်ပေါ်လာစေခြင်း အကြောင်းတစ်ခုဖြစ်သည်။ ဝတ္တုစက္ခုဗေဒတွင် ကလပ်စ်များအကြားတွင် အထက်အောက်ပတ်သက်မှု့များကို ထားရှိပြီး၊ ကလပ်စ်တစ်ခုအား ဆင့်ပွား၍ ပြုလုပ်ထားသော ကလပ်စ်တစ်ခု၏ အော့ဘဂျက်သည် မိမိ၏ အထက်ရှိကလပ်စ်၏အော့ဘဂျက်၏ လုပ်ဆောင်ချက်များနှင့် အချက်အလက်များကို အသုံးပြုနိုင်သည်။ အမွေဆက်ခံနိုင်ခြင်းသည် ဝတ္တုစက္ခုဗေဒ၏ အလွန်အရေးကြီးသော အတွေးအမြင်တစ်ခုဖြစ်သည်။ မျိုးရိုးဆက်ခံရာတွင် ကလပ်စ် အများစုမှ မျိုးရိုးဆက်ခံနိုင်သော ဘာသာရပ်များရှိသကဲ့သို့၊ တစ်ခုတည်းမှသာ မျိုးရိုးဆက်ခံနိုင်သော ဘာသာရပ်များလည်းရှိကြသည်။ Java ဘာသာရပ်သည် တစ်ခုသော ကလပ်စ်မှသာ မျိုးရိုးဆက်ခံနိုင်သောဘာသာရပ် တစ်မျိုးဖြစ်သည်။ 
### အသွင်ပြောင်းလဲနိုင်ခြင်း(Polymorphism)
### ဒိုင်းနမစ်ဘိုင်းဒီန်(Dynamic Binding)
## Object Oriented ဘာသာရပ်၏ နည်းလမ်းများ
* ကလပ်စ်အခြေခံနည်းလမ်း -- ကလပ်စ်တစ်ခုကို သတ်မှတ်၍၊ ထိုကလပ်စ်ကို အခြေခံ၍ အင်းစတန့်စ်ကို မွေးဖွားစေသော နည်းလမ်းဖြစ်၏။ **အမွေဆက်ခံခြင်းအခြေခံ**ဟုလည်း ခေါ်ဆိုလေ့ရှိ၏။
* ပရိုတိုတိုက်အခြေခံနည်းလမ်း --လက်ရှိအင်းစတန့်စ်ကို အခြေခံ၍ အင်းစတန့်စ်အသစ် တစ်ခုကိုမွေးဖွားစေသော နည်းလမ်းဖြစ်၏။ **အင်းစတန့်စ်အခြေခံ**ဟုလည်း ခေါ်ဆိုလေ့ရှိ၏။
* Mixingနည်းလမ်း --အမျိုးမျိုးသော ရုပ်ဝတ္တုများ၏ မှုလပုံစံများကို တွဲဖက်ကာ အခြားသော ရုပ်ဝတ္တုတစ်ခုကို တည်ဆောက်သော နည်းလမ်းဖြစ်၏။

## ကိုးကားများ