# OOP အား Python ဖြင့်ထိတွေ့ခြင်း (Part - 1)

ဒီ Article လေးမှာတော့ OOP ဆိုတာ ဘာလဲဆိုတာပြောပြသွားမှာဖြစ်ပြီး python နဲ့ဘယ်လိုပြန်အသုံးချမလဲဆိုတာပြောပြပေးသွားမှာပါ။

# What is OOP?

OOP ရဲ့အရှည်ကောက်က (Object Oriented Programming) ကိုပြောတာဖြစ်ပါတယ်။ OOP က programming paradigm တစ်ခုဖြစ်ပါတယ်။ paradigm ဆိုတာက စံနမူနာ or model or pattern လို့ပြောလို့ရပါတယ်။ Programming Languages တိုင်းမှာ paradigms တွေရှိပါတယ်။ OOP ရဲ့ concepts က objects and classes တွေပေါ်မှာအခြေခံထားပါတယ်။ ဥပမာ ရိုးရှင်းစွာ ပြောပြရလျှင် class ကိုပုံစံခွက်လို့သတ်မှတ်လို့ရပြီးတော့ object ဆိုတာဒီပုံစံခွက်ဆိုတဲ့ class ကိုအသုံးပြုပြီးဖန်တီးရမှာဖြစ်ပါတယ်။ classes တွေက blueprints တွေဖြစ်ပါတယ်။ objects တွေကို instances လို့လည်းခေါ်ပါတယ်။ စာအရမ်းရှည်မှာစိုးတဲ့အတွက် အကျဥ်းချုံးပဲပြောပြသွားပါမယ်ခင်ဗျာ။

# Define a class

python မှာ class တစ်ခုကိုအောက်ပါအတိုင်း define လုပ်နိုင်ပါတယ်။

```python
class EmployeeInfo:
    pass
```

အထက်ပါ code မှာ class ဆိုတဲ့ keyword ကိုအသုံးပြုပြီးတော့ EmployeeInfo ဆိုတဲ့ name နဲ့ class တစ်ခုကြေငြာရပါမယ်။ pass ဆိုတာကတော့ အခွံအနေနဲ့ ဘာ data မှာမထည့်သေးပဲခေတ္တကျော်သွားဖို့အတွက် အသုံးပြုတာဖြစ်ပါတယ်။ တစ်ခုသတိမူရမှာက EmployeeInfo ဆိုတဲ့ name ကိုရေးသားတဲ့အခါ naming convention အရ CapitalizeWord notation ကိုအသုံးပြုထားပါတယ်။ python official docs ရဲ့ naming convention မှာသွားရောက်ဖတ်ရှူ့လေ့လာနိုင်ပါတယ်။

# Sample Program ရေးသားခြင်း (၁)

အောက်ပါအတိုင်း company တစ်ခုမှာအခြေခံအသုံးပြုနိုင်မယ့် EmployeeInfo ဆိုတဲ့ class or blueprint တစ်ခုဖန်တီးပြီးတော့ employees တွေဖန်တီးလို့ရပါတယ်။

```python
class EmployeeInfo:
    pass

emp_1 = EmployeeInfo()
emp_2 = EmployeeInfo()
```

class တစ်ခုကို လှမ်းခေါ်သုံးတဲ့ခါ သူ့နောက်မှာ ကွင်းစကွင်းပိတ် (parentheses) လေးထည့်ပေးရပါတယ်။ EmployeeInfo() ဆိုပြီး class ကိုလှမ်းခေါ်ပြီး instance objects employee 1 and 2 ကိုတည်ဆောက်လိုက်ပါတယ်။ class ထဲမှာတော့ ဘာ data မှာမထည့်ပဲအလွတ်ထားပြီး pass ပေးလိုက်ပါမယ်။ သူ့ထဲမှာတော့ properties and methods တွေပါဝင်နိုင်ပါတယ်။ properties ဆိုတာ variables ကိုပြောတာဖြစ်ပါတယ်။ methods ဆိုတာ functions ကိုပြောတာဖြစ်ပါတယ်။ class ထဲမှာဆို properties and methods လို့ ခေါ်ဝေါ်သုံးနှုန်းပါတယ်။

```python
# Employee-1
emp_1.id = 1
emp_1.name = 'Eric'
emp_1.Age = 22

# Employee-2
emp_1.id = 2
emp_2.name = 'Jessica'
emp_2.Age = 24
```

ထို့နောက်အထက်ပါ code ကိုထပ်ဖြည့်လိုက်ပါမယ်။ class တစ်ခုနဲ့သက်ဆိုင်တဲ့ properties methods တွေကိုလှမ်းခေါ်တဲ့အခါ ' . ' (dot) ကိုအသုံးပြုပြီးလှမ်းခေါ်သုံးနိုင်ပါတယ်။ အထက်ပါ code မှာ EmployeeInfo class ကိုလှမ်းခေါ်ပြီး instance objects ဖန်တီးထားတဲ့ emp\_1 and emp\_2 တို့ကနေ id, name and age ဆိုတဲ့ properties တွေဖန်တီးပြီးတော့ လိုအပ်တဲ့ employee data တွေဖြည့်ထားပါတယ်။

```python
print(emp_1.__dict__)
print(vars(emp_2).items())
```

ဖန်တီးခဲ့တဲ့ employee နှစ်ယောက်ရဲ့ data တွေကို အားလုံးခြုံငုံပြီး print ထုတ်တာပါ။ output အနေဖြင့်အောက်ပါအတိုင်းထွက်လာပါလိမ့်မည်။

```bash
{'id': 2, 'name': 'Eric', 'Age': 22}
dict_items([('name', 'Jessica'), ('Age', 24)])
```

Code အပြည့်အစုံ

```python
class EmployeeInfo:
    pass
emp_1 = EmployeeInfo()
emp_2 = EmployeeInfo()
# Employee-1
emp_1.id = 1
emp_1.name = 'Eric'
emp_1.Age = 22
# Employee-2
emp_1.id = 2
emp_2.name = 'Jessica'
emp_2.Age = 24
print(emp_1.__dict__)
print(vars(emp_2).items())
```

Part(2) - ဆက်ရန် &gt;
