31/12/2023
New Class or New Sharing ❤
# Road to Junior Web Application Security Analysts
Hello အားလုံးပဲ မင်္ဂလာပါဗျ 🙋♂️
အရင်ဆုံး Road to Junior Pe*******on Tester Class က Member တွေကို ကျေးဇူးအများကြီးတင်ပါတယ်ဗျာ 🙇
သူတို့ရဲ့ Feedback တွေကနေ Moti တွေရပြီးနောက် Class ပြန်ဖွင့်ဖို့ Ready ဖြစ်နေပါပြီ
အခုပြန်ဖွင့်မဲ့ Class ကတော့ အပေါ်ဆုံးမှာရေးထားတဲ့အတိုင်း Road to Junior Web Application Security Analysts ဆိုတဲ့ Class လေးပဲဖြစ်ပါတယ်
Web Attacks ကို Focus ထားမှာဖြစ်ပြီး Basics + Foundational Web Application Assessments ဆိုတဲ့ပုံစံမျိုးသွားမှာပါ
OWASP Top 10 လို Framework ကို Cover ဖြစ်အောင် Course ကို Create လုပ်ထားတဲ့အပြင် Business Logic Vulnerabilities တွေကိုပါ Sharing လုပ်သွားပါမယ်
Course ကိုတော့ OffSec ရဲ့ WEB-200 ကို Reference ယူထားပြီး Lab တွေအတွက်ကတော့ Free ရတဲ့ TryHackMe ရဲ့ Room တွေနဲ့ PortSwigger က Lab တွေကိုအသုံးပြုသွားမှာပါ
Course အတွက်အသေးစိတ်ကိုတော့ အောက်က Link ကနေလေ့လာကြည့်လို့ရပါတယ်ဗျ
https://drive.google.com/file/d/1OoW_JvChpqbhINSFkAZ6PECNPdg3Q7SO/view?usp=sharing
❗Class က Member တွေနဲ့တိုက်ရိုက်ထိတွေ့ရမဲ့ Live Class မျိုးဖြစ်ပြီး 1 ပတ်ကို 3 ရက် (Monday to Wednesday) ညဘက် 9:30 ကနေ 11:30 ထိယူပါမယ် (မီးအခြေအနေကြောင့် Class အချိန်က ညနက်သွားတာတော့ ခွင့်လွှတ်ပေးပါဗျ)
❗Class Duration အနေနဲ့ကတော့ 2 Months (48 Hours) ဆိုပေမယ့် အခြေအနေပေါ်မူတည်ပြီး ပိုကြာတာမျိုးတော့ရှိပါမယ်
❗Fee အနေနဲ့ကတော့ ဒီ Page လေးအတွက် First Class လဲဖြစ် New Year Gift အနေနဲ့လေး Share ပေးချင်တာကြောင့် 5 သောင်းကျပ်လို့သတ်မှတ်ထားပါတယ် (အရင်လို Free Class လေးမဟုတ်တော့တာ ထပ်ပြီးတောင်းပန်ပါတယ်ဗျာ)
❗Class ကိုတော့ February 5 ရက်နေ့မှာစမှာဖြစ်ပြီး အသေးစိတ်ကိုတော့ Messenger ကနေတစ်ဆင့်မေးလို့ရပါတယ်ဗျ
သေချာလေး Focus ထားပြီး Sharing လုပ်ချင်တာမို့ လူဦးရေအကန့်အသတ်ရှိပါမယ်ဗျ
Thanks for Your Attention ❤
07/06/2023
Hello အားလုံးပဲ မင်္ဂလာပါ။
စာတွေတောင် မတင်ဖြစ်တာနည်းနည်းကြာသွားတယ်ဗျာ။ ဒီနေ့ပြောပြမယ့်အကြောင်းကတော့ Javaမှာ အများဆုံးသုံးဖြစ်တဲ့ Data Structure တစ်ခုဖြစ်တဲ့ ArrayListတွေအကြာင်းပါ။
ArrayListတွေက Javaမှာ အသုံးအများဆုံး Data Structure တစ်ခုဖြစ်ပြီးတော့ Dataတွေသိမ်းတဲ့နေရာမှာ လွယ်ကူအဆင်ပြေပါတယ်။
ArrayListဆိုတာက Arrayတစ်ခုကိုပဲ Javaက manageလုပ်ပေးထားတာဖြစ်ပါတယ်။ ArrayListမှာ InternalArrayတစ်ခုရှိပြီးတော့ ArrayListရဲ့ valueတွေအကုန်လုံးက အဲ့InternalArrayထဲမှာသိမ်းထားတာပါ။
Array တွေကဘယ်လိုအလုပ်လုပ်လဲဆိုတာကိုတော့ ဟိုအရင်အပါတ်တွေက ရှင်းပြထားဖူးပါတယ်။ ArrayListတစ်ခု စပြီးဆောက်လိုက်ပြီဆိုရင်၊
List stringList = new ArrayList(); ဆိုပြီး ရေးလိုက်ရင်
စစချင်း InternalArrayတစ်ခုကို instantiateလိုက်ပြီး အဲ့InternalArrayရဲ့ limitကို ၁၀လို့ထားပါတယ်။ ArrayListထဲကိုထည့်တဲ့ valueတွေဟာ အဲ့InternalArrayထဲမှာ ထိန်းသိမ်းထားပါတယ်။
InternalArrayဟာ စစချင်းမှာlimit၁၀ ရှိပါတယ်။ ArrayListထဲ itemတွေထည့်လို့ limitကျော်သွားတဲ့အခါမှာ ArrayListဟာ InternalArrayရဲ့ sizeကို အလိုအလျောက်တိုးပေးပါတယ်။ ပိုကြီးတဲ့Array တစ်ခုဆောက်လိုက်ပြီး Array အဟောင်းရဲ့ တန်ဖိုးတွေကိုကူးပြီးထည့်လိုက်တာပါ။ ArrayListတစ်ခုမှာရှိတဲ့ elementတွေရဲ့ တန်ဖိုးကိုရှာရင် InternalArrayကနေတန်းပြီးယူလို့ရတာမို့လို့ ပုံမှန်Arrayကနေယူရသလိုပဲ Performanceကောင်းတဲ့အတွက် ArrayListကို LinkedListတို့ LinkedQueueတို့ထက် ပိုပြီးတော့ အသုံးပြုကြပါတယ်။ ArrayListကို itemထည့်တဲ့ အခါတိုင်း၊ itemတွေ deleteလုပ်တဲ့အခါတိုင်း၊ ArrayListက လိုရင်လိုသလို InternalArrayရဲ့sizeကို ပြောင်းလဲပေးပါတယ်။ Sizeမလောက်တော့ရင် တိုးပေးပြီးတော့၊ ArrayListရဲ့size ကအရမ်းကြီးနေတဲ့အချိန်မှာ elementက ၁ခု၂ခုလောက်ပဲရှိတော့ရင်လဲ Array size ကို ပြန်ပြီးလျော့ပေးပါတယ်။
ပြောရမယ်ဆိုရင် ArrayListက Arrayတစ်ခုမှာရှိတဲ့benefitတွေ အကုန်ရှိပြီးတော့ Arrayတွေရဲ့ limitationတွေ၊ အဆင်မပြေမှုတွေဖြစ်တဲ့ size limitationတွေနဲ့ တခြားလိုအပ်တဲ့ allocation processတွေ (itemတွေကို နေရာရွှေ့ပေးတဲ့ processတွေ)ကိုပိုပြီး ချောမွေ့အောင်လုပ်ပေးပါတယ်။ အသုံးပြုရတာလွယ်ကူပြီးတော့ performanceကောင်းတဲ့ data structureတစ်ခု ဖြစ်လို့ Java programmingမှာ အသုံးအများဆုံး data structure တစ်ခုဖြစ်ပါတယ်။
ဒီအပါတ်တော့ ဒီလောက်ပါပဲ။ နောက်အပါတ်တွေမှာ popular programming language တေွမှာ အသုံးပြုတဲ့ နည်းပညာတွေနဲ့ software development process တွေအကြာင်း ဆက်ပြောပြသွားပါမယ်။
30/04/2023
ဒီနေ့ည 12 နာရီမှာ Road to Jr Pe*******on Tester Class အတွက် Register Form ပိတ်ပါမယ်ဗျ
Telegram Group Link ပါတဲ့ Confirm Mail ကို Register Form ပိတ်ပြီးတာနဲ့ အကုန်ပို့ထားပေးပါမယ်
Class ကို Support ပေးတဲ့သူတွေကိုရော စိတ်ဝင်တစားနဲ့ Register လုပ်ပေးတဲ့သူတွေကို ကျေးဇူးအများကြီးတင်ပါတယ်ဗျ 🙆♂️
27/04/2023
Workshop တုန်းက ကျတော်သုံးခဲ့တဲ့ Slide လေးလိုချင်တဲ့သူတွေ Page Chat Box မှာ Nickname လေးပြောပြီး ယူလို့ရပါပြီဗျ ❤
တချို့ Case လေးတွေကြောင့် Public မ Share ဖြစ်တော့လို့လဲတောင်းပန်ပါတယ် 🙏
Page Chat Box မှာ Reply ကြာသွားတာတွေအတွက်လဲတောင်းပန်ပါတယ် ကျတော် Class အတွက် Focus နေတာမို့ပါ 🙆♂️
25/04/2023
နောက် 1 နာရီဆို Workshop စပါပြီနော် 🙆♂️
9 နာရီဒေါင်ဆိုတာနဲ့ Google Meet ကစောင့်နေပါ့မယ်ဗျ
Join လို့မရတာဘာညာရှိရင် ဒီ Post မှာ Comment မန့်ပြီးပြောလို့ရပါတယ်နော် ❤
24/04/2023
Workshop for Road to Jr Pe*******on Testing အတွက် Invitation Mail တွေအကုန်ပို့ထားပါတယ်ဗျ
Spam Folder ထဲမှာလဲရောက်နေတတ်တာမို့ သေချာလေးစစ်ကြည့်ပေးကြပါဦးနော်
Invitation Mail လုံးဝမရဘူးဆိုရင်လဲ Page Chat Box မှာ Nickname လေးပြောပြီး Invitation တောင်းလို့ရပါတယ်
Hope to see you in Workshop
21/04/2023
Workshop အတွက် အခုချိန်ထိ Register လုပ်ထားသူအားလုံးကို Invitation Mail တွေပြန်ပို့ထားပေးထားပါတယ်နော်
တကယ်လို့ Register လဲလုပ်ထားတယ် ဘာ Mail မှမရဘူးဆိုရင်တော့ Page Chat Box မှာ Nickname လေးတစ်ချက်ပြောပြီး Invitation ပြန်ယူလို့ရပါတယ်ဗျ
Invitation Mail မှာ Nickname မှားတာတို့ Google Meet Link ကို Clickable ဖြစ်အောင်မလုပ်ပေးမိလိုက်တာမျိုးရှိခဲ့ရင်လဲ ခွင့်လွှတ်ပေးဖို့တောင်းဆိုပါတယ်ဗျ 🙇♂️
Post ကို Share ပေးပြီး Supporting လုပ်ပေးတဲ့သူတွေကိုလဲ ကျေးဇူးအများကြီးတင်ပါတယ်ဗျ ❤️
Road to Jr Pe*******on Tester (Free Class)
အားလုံးပဲ မင်္ဂလာပါဗျ 🙋♂️
ကျတော်တို့ Try2Learn Page ကနေ Pentesting နဲ့ဆိုင်တဲ့ Knowledge Sharing Post တွေကို စောင့်မျှော်နေတဲ့သူတွေနဲ့ Supporting ပေးနေတဲ့သူတွေကို အရင်ဆုံးကျေးဇူးတင်ပါရစေ။
ကျတော်တို့ Page ကနေ Pentesting ကိုစိတ်ဝင်စားပြီး ဘယ်ကစလေ့လာရမှန်းမသိဖြစ်နေတဲ့သူတွေ၊ Pentesting ပိုင်းကိုလေ့လာဖို့အတွက် Essential Skill တွေဖြည့်နေတဲ့သူတွေနဲ့ Pentesting ပိုင်းကိုစလေ့လာနေတဲ့သူတွေအတွက်ရည်ရွယ်ပြီး Road to Jr Pe*******on Tester ဆိုတဲ့ Title နဲ့ Free Class လေးကို Myanmar New Year Present အနေနဲ့ Share ပေးချင်ပါတယ်။
ဒီ Class လေးကိုဘယ်သူတွေတက်သင့်လဲတို့ ဘာတွေ Learning လုပ်ရမလဲတို့ Class နဲ့ဆိုင်တဲ့ Rule တွေ ဘယ်နေ့စမှာလဲဆိုတာတွေနဲ့ ဘယ်ချိန်တွေလဲဆိုတာကိုတော့ အသေးစိတ်ရှင်းပြဖို့အတွက် April 25 ရက်နေ့ Tuesday မှာ Workshop တစ်ခုလုပ်သွားဖို့ရှိပါတယ်။
စိတ်ဝင်စားတယ်ဆိုရင် အောက်က Google Form လေးကိုဖြည့်ပြီး Workshop အတွက်စာရင်းပေးလို့ရပါတယ်။
Google Form - https://forms.gle/XH4NwV7tHk3xWXVc8
အရင်လို Knowledge Sharing Post တွေအစား ဒီ Sharing အကြီးကြီးကိုကြိုက်နှစ်သက်မယ်လို့မျှော်လင့်ရင်း နှစ်သစ်မှာစိတ်ချမ်းသာြခင်း ကိုယ်ကျန်းမာြခင်းများနဲ့ပြည့်စုံပါစေလို့ဆုမွန်တောင်းတောင်းပေးပါရစေ။
So, hope to see you in my workshop ❤️
20/04/2023
Road to Jr Pe*******on Tester (Free Class)
အားလုံးပဲ မင်္ဂလာပါဗျ 🙋♂️
ကျတော်တို့ Try2Learn Page ကနေ Pentesting နဲ့ဆိုင်တဲ့ Knowledge Sharing Post တွေကို စောင့်မျှော်နေတဲ့သူတွေနဲ့ Supporting ပေးနေတဲ့သူတွေကို အရင်ဆုံးကျေးဇူးတင်ပါရစေ။
ကျတော်တို့ Page ကနေ Pentesting ကိုစိတ်ဝင်စားပြီး ဘယ်ကစလေ့လာရမှန်းမသိဖြစ်နေတဲ့သူတွေ၊ Pentesting ပိုင်းကိုလေ့လာဖို့အတွက် Essential Skill တွေဖြည့်နေတဲ့သူတွေနဲ့ Pentesting ပိုင်းကိုစလေ့လာနေတဲ့သူတွေအတွက်ရည်ရွယ်ပြီး Road to Jr Pe*******on Tester ဆိုတဲ့ Title နဲ့ Free Class လေးကို Myanmar New Year Present အနေနဲ့ Share ပေးချင်ပါတယ်။
ဒီ Class လေးကိုဘယ်သူတွေတက်သင့်လဲတို့ ဘာတွေ Learning လုပ်ရမလဲတို့ Class နဲ့ဆိုင်တဲ့ Rule တွေ ဘယ်နေ့စမှာလဲဆိုတာတွေနဲ့ ဘယ်ချိန်တွေလဲဆိုတာကိုတော့ အသေးစိတ်ရှင်းပြဖို့အတွက် April 25 ရက်နေ့ Tuesday မှာ Workshop တစ်ခုလုပ်သွားဖို့ရှိပါတယ်။
စိတ်ဝင်စားတယ်ဆိုရင် အောက်က Google Form လေးကိုဖြည့်ပြီး Workshop အတွက်စာရင်းပေးလို့ရပါတယ်။
Google Form - https://forms.gle/XH4NwV7tHk3xWXVc8
အရင်လို Knowledge Sharing Post တွေအစား ဒီ Sharing အကြီးကြီးကိုကြိုက်နှစ်သက်မယ်လို့မျှော်လင့်ရင်း နှစ်သစ်မှာစိတ်ချမ်းသာြခင်း ကိုယ်ကျန်းမာြခင်းများနဲ့ပြည့်စုံပါစေလို့ဆုမွန်တောင်းတောင်းပေးပါရစေ။
So, hope to see you in my workshop ❤️
17/04/2023
မြန်မာနှစ်သစ် (၁၃၈၅) ခုနှစ်တွင် ကိုယ်စိတ်နှစ်ဖြာ ရွှင်လန်းချမ်းမြေ့ကြပါစေကြောင်း Try to Learn မှ ဆုမွန်ကောင်းတောင်းပေးလိုက်ရပါတယ်။
06/04/2023
How to install a Apache in Azure Cloud?
Hi အားလုံးပဲ ပြန်လည်ကြိုဆိုလိုက်ပါတယ်။အခုအလှည့်ကျတာတာ့ ကျွန်တော်ရေးနေတဲ့ Cloud Computing ဖြစ်ပါတယ်အဲ့အတွက်ကြောင့် ဒီတစ်ခါမှာတော့ ကျွန်တော်နဲ့အတူတူ Labs လေးလိုက်လုပ် ကြည့်ကြရအောင်ဗျာ။ ဘာလုပ်ကြမလဲဆိုရင် Cloud Service Provider တစ်ခုဖြစ်တဲ့ Azure Cloud ပေါ်မှာ ကျွန်တော်တို့ Virtual Machine တစ်ခု Create လုပ်ပြီးတော့ Web Service ဖြစ်တဲ့ Apache လေး Install လုပ်ပြီးတော့ အဲ့ Server ကိုကျွန်တော်တို့စက်ကနေ လှမ်းခေါ်ကြည့်ရအောင်ဗျာ။ဒါဆိုရင် ကျွန်တော်တို့ Lab လေးစလုပ်ဖို့အတွက် ဘာတွေလိုအပ်လဲဆိုရင် Azure Cloud Account တစ်ခုလိုအပ်ပါတယ်။အဲ့တော့ Azure Account ကိုဘယ်လို Open မလဲဆိုရင် နိုင်ငံခြားကဖုန်းနံပါတ်တစ်လုံးရှိတာနဲ့ ဖွင့်လို့ရပါတယ်။ကျွန်တော်တို့ Local ကဖုန်းတွေနဲ့တော့ ဖွင့်လို့မရပါဘူး။နောက်တစ်ခုရှိသေးတာက Microsoft ဘက်နေ ကျောင်းသားဖြစ်တယ်ဆိုတာလျှောက်ထားရုံနဲ့ Azure Account မှာ တစ်နှစ်အတွင်း $100 Free သုံးခွင့်ကိုရရှိမှာပဲ ဖြစ်ပါတယ်။လျှောက်ချင်တယ်ဆိုရင်တော့ အောက်က Link မှာလျှောက်လို့ရပါတယ်။
https://azure.microsoft.com/en-us/free/students/
အဲ့တော့ကျွန်တော်တို့လိုအပ်တဲ့ Azure Account လည်းရပြီဆိုရင် အရင်ဆုံး Azure portal ဖြစ်တဲ့
(https://portal.azure.com)
ကိုသွားပြီးတော့ ကိုဖွင့်ထားတဲ့ Azure Account ကို login ဝင်လိုက်ပါ။ပြီးရင် ကျွန်တော်တို့ လိုအပ်တဲ့ Virtual Machine တစ်ခုကို Create လုပ်မှာ ဖြစ်တဲ့အတွက်ကြောင့် Create a resource group ကိုဝင်လိုက်ပါ။ဘာလို့လဲဆိုတော့ Azure Cloud မှာ Resource တွေကို Group တွေအလိုက် Manage လုပ်တာဖြစ်တဲ့အတွက်ကြောင့် အရင်ဆုံး Resource Group ကိုလုပ်ခိုင်းတာပဲ ဖြစ်ပါတယ်။Resource Group Create လုပ်ပြီးပြီဆိုရင် ကျွန်တော်တို့လိုချင်တဲ့ Virtual Machine ကို Create လုပ်လို့ရပါပြီ။တစ်ခုသတိထား ရမှာက ကျွန်တော်တို့ Create လုပ်ထားတဲ့ Resource Group ထဲမှာထည့်ဖို့ပဲ ဖြစ်ပါတယ်။VM create လုပ်ဖို့အတွက် လိုအပ်တာတွေထက်ဖြည့်ရပါမယ်။VM Name, Region, Availability options, Operation System, Size , Authentication method and Network Setting သတိထားရမှာက Disk ရွေးတဲ့အချိန်မှာ Management Disk and Unmanagement Disk ကိုသေချာလေး သတိထားပြီးတော့ ကိုလိုအပ်တာကိုရွေးချယ် ဖို့ပါပဲ။ Networking ကို Configure လုပ်မယ်ဆိုရင် IP address, Network Security Group and Virtual Network တွေလုပ်ပေးရမှာပဲ ဖြစ်ပါတယ်။ဒါတွေအားလုံးရွေးချယ်ပြီးတော့ Configure လုပ်ပြီးပြီးဆိုရင် Review and Create ကိုနှိပ်ပြီးတော့ ကျွန်တော်တို့ရွေးချယ်ထားတာမှန်လားမှားလားစစ်ပြီးတာနဲ့ မှန်တယ်ဆိုရင် VM ကိုစပြီးတော့ Create စလုပ်ပါပြီ။VM create လုပ်လို့ပြီးပြီဆိုရင် ကျွန်တော်တို့ရွေးချယ်ခဲ့တဲ့ Authentication Method မှာဘာရွေးချယ်ခဲ့လဲအပေါ်မူတည်ပြီးတော့ ကျွန်တော်တို့ Create လုပ်ထားတဲ့ VM ကို Login ဝင်နိုင်မှာပဲ ဖြစ်ပါတယ်။ကျွန်တော်ကတော့ Ubuntu 20.04 LTS ကိုရွေးချယ်ပြီးတော့ Authentication Method ကိုတော့ ကျွန်တော်က Password Method ကိုရွေးချယ်ခဲ့တဲ့အတွက် ကျွန်တော်က MobaXtem ကနေပဲ Public IP ကိုထည့်မယ်ပြီးရင် Host ကိုလှမ်းခေါ်ပြီးတော့ Login ဝင်လိုက်ပါမယ်။ဒါဆိုရင် Server ထဲကိုရောက်သွားပါပြီ။ ကျွန်တော်တို့ Server ကို Package Update ဖြစ်အောင် ဒီ Commend ကိုရိုက်လိုက်ပါတယ်။ “sudo apt-get update” ဒါကတော့ Package တွေကို Update လုပ်တာပဲ ဖြစ်ပါတယ်။နောက်တစ်ဆင့်အနေနဲ့ Apache ကို Install လုပ်ရမှာပဲ ဖြစ်ပါတယ်။Apache ကို Install လုပ်ဖို့အတွက် “sudo apt install apache2”နဲ့ Install လုပ်လိုက်ပါတယ်။ပြီးရင် Apache Service အလုပ်လုပ်မလုပ်ကို “sudo systemctl status apache2”နဲ့ကြည့်လို့ရပါတယ်။အဲ့မှာ Service က Active ဖြစ်နေတယ်ဆိုရင် Service ကအလုပ်လုပ်နေပါပြီ။နောက်တစ်ခုအနေနဲ့ VM Firewall မှာ Web Service သုံးမှာ ဖြစ်တဲ့အတွက်ကြောင့် Port 80 and 443 ကိုဖွင့်ပေးရပါမယ်။ဒါမှပဲ ကျွန်တော်တို့ Apache web server ကို Browser ကနေခေါ်လို့ရမှာပဲ ဖြစ်ပါတယ်။အဲ့တော့ Browser မှာ VM ရဲ့ Public IP ကိုရိုက်ထည့်လိုက်တယ်ဆိုရင် Apache Page ကျလာမှာပဲ ဖြစ်ပါတယ်။ဒါဆိုရင်တော့ ကျွန်တော်တို့ Cloud Server ပေါ်မှာ Apache Web Server တင်တာ အောင်မြင်သွားပါပြီ။နောက်နေ့တွေမှာ ကျွန်တော်နဲ့အတူတူ Cloud နဲ့ပတ်သက်တဲ့ Labs တွေနဲ့အတူတူ ပြန်လာခဲ့ပါမယ်ဗျာ။
Try Together
Learn Together
Strong Together 💪
03/04/2023
Inheritance in OOP..
ဒီPostကတော့ Object orientated programming မှာ အရေးပါတဲ့ conceptတစ်ခုဖြစ်တဲ့ Inheritance အကြောင်းပြောမှာပါ။
Inheritanceဆိုတာက နာမည်လိုပါပဲ၊ အမွေရရှိတာ၊ လက်ခံရရှိတာပါ။ Class နှစ်ခုရှိတဲ့နေရာမှာ Child class က Parent class ဆီကနေ၊ Sub Class က Super Class ဆီကနေ၊ properties တွေကို ဆက်ပြီးတော့ လက်ခံရရှိတာကို Inheritanceလို့ခေါ်ပါတယ်။ ကိုယ့် Program မှာ Teacher Class နဲ့ Student Class ဆိုတာရှိတယ်ဆိုပါစို့။ Teacher Class မှာရော Student Class မှာရော Name, Age အစရှိတဲ့ တူညီတဲ့ Variables တွေရှိနိုင်ပါတယ်။ အဲ့လို နာမည်၊ အသက်၊ နေရပ်လိပ်စာ စတာတွေကို Teacher Class အတွက်တစ်ခါ Student Classအတွက်တစ်ခါ ရေးနေရင် ပိုပါတယ်။ Code redundant ဖြစ်တယ်လို့ခေါ်ပါတယ်။ အဲ့အစား Parent Class တစ်ခု Person Class ဆိုပြီး လုပ်ပြီးတော့ Teacher Classကိုရော Student Classကိုရော Parent Class ဖြစ်တဲ့ Person Class ရဲ့ properties တွေကို ဆက်ခံခွင့်ပေးလိုက်ရင် နှစ်ခါမရေးရတော့တဲ့ အပြင် Code ကို Maintain လုပ်ရတာလဲ ပိုလွယ်စေပါတယ်။ အဲ့အပြင် အခု Teacher Classရော Student Classရောက Parent Class (Person Class) ရဲ့ propertiesတွေကို ဆက်ခံပြီးတဲ့အပြင် သူတို့ကိုယ်တိုင်လည်း မတူတဲ့ propertiesတွေရှိလို့ရပါပြီ။ Teacher Class ဆိုရင် classNameတွေ၊ Student Class ဆိုရင် subjectNameတွေ၊ အစရှိသဖြင့် လိုသလို ဆက်ပြီးတော့ implementလို့ရပါပြီ။ ဒီဥပမာမှာက Age, Name, Address လောက်ကိုပဲပြထားတာမို့လို့မသိသာပေမယ့် တစ်ကယ့် real world scenario တွေမှာ၊ Variables တွေ၊ Method တွေ၊ အများကြီးကို ပြန်သုံးဖို့၊ overideဖို့၊ လိုတဲ့အချိန်တွေမှာဆိုရင် Inheritanceက တစ်ကယ်အသုံးဝင်ပါတယ်။
များသောအားဖြင့် OOP concepts တွေကိုရှင်းပြကြရင် Inheritanceကိုက နားလည်ကြပါတယ်။ တစ်ခြားconceptsတွေထက်စာရင် Inheritanceက ရှင်းပြီး နားလည်ရလွယ်လို့ သဘောပေါက်ကြပါတယ်။ ဒါပေမယ့် Inheritanceနဲ့ပတ်သက်ပြီး အများစုအထင်မှားကြတာက Inheritanceကို ရှင်းပြကြရင် Animal Class -> Dog Class, Cat Class တို့ ၊ Person Class -> Teacher Class, Student Class တို့နဲ့ ရှင်းပြကြတာများတော့ Inheritance ဆိုတာ အထက်ကနေအောက်ကိုသွားတဲ့ ပုံစံမျိုး၊ hierarchy ပုံစံမျိုးလို့ထင်ကြပါတယ်။ Inheritance ဆိုတာ Code Reuse အတွက်ပါ။ Codeရဲ့ Readibility နဲ့ Maintainability ကို ပိုကောင်းဖို့အတွက်သုံးရတာပါ။ Programmer တွေ Codeကို ပိုပြီး efficiently ရေးနိုင်ဖို့နဲ့ ရှိပြီးသားcodeတွေ ခဏခဏ ပြန်သုံးနေစရာ မလိုဖို့ အတွက်က အဓိကပါ။ Real world example တွေလိုမျိုး အထက်ကနေအောက်ကိုပဲ သွားစရာ မလိုပါဘူး။ Companyနဲ့ ပတ်သက်တဲ့ Program တစ်ခုမှာ Staff ဆိုတဲ့ Classရှိပြီး Managerဆိုတဲ့ Classက Staff Classနဲ့ Propertiesတွေ အကုန်တူပြီး manageStaff() ဆိုတဲ့ methodတစ်ခုပဲ အပိုပါတယ်ဆိုရင် Manager Class ကို Staff Classကနေ extend လုပ်လိုက်လို့ရပါတယ်။ အပေါ်ကလူမို့လို့ အပေါ်မှာရှိသင့်တယ်၊ Parent Class ဖြစ်သင့်တယ်၊ Super Class ဖြစ်သင့်တယ်ဆိုပြီး မရှိပါဘူး။
Standard practices တွေအရတော့ Inheritanceကို Abstracted type တွေဆီကပဲ သုံးသင့်ပါတယ် (Interfaceတို့၊ Abstract Classတို့)။ Design pattern တွေအရဆိုရင် Interface တို့ Abstract Classတို့ ဆီကနေပဲ Inherit သင့်ပြီးတော့ Normal Class တွေဆီက Inherit မယ်ဆိုရင် Inheritance အစား Composition ကိုသုံးသင့်ပါတယ်တဲ့။
Composition ဆိုတာဘာလဲ၊ ဘာလို့သူ့ကို ပိုသုံးသင့်တာလဲ၊ ဘယ်လိုအချိန်တွေမှာ သုံးသင့်တာလဲ ဆိုတာတွေကတော့ နောက်မှ Composition နဲ့ Inheritance အကြောင်းမှာပြောပါမယ်။
ဒီနေ့တော့ ဒီလောက်ပါပဲ။