ເຂົ້າໃຈພື້ນຖານ OOP ໃນ Python: ຂຽນ Code ໃຫ້ເປັນລະບົບດ້ວຍ Class ແລະ Object

ເມື່ອທ່ານເລີ່ມຕົ້ນຂຽນໂປຣແກຣມໃໝ່ໆ, ທ່ານອາດຈະຂຽນທຸກຢ່າງລຽງລົງມາແຕ່ເທິງລົງລຸ່ມ (Procedural Programming). ແຕ່ເມື່ອໂປຣເຈັກຂອງທ່ານໃຫຍ່ຂຶ້ນ, ມີຕົວປ່ຽນຫຼາຍຮ້ອຍຕົວ, ມີ function ເປັນສິບໆອັນ ການຂຽນແບບເກົ່າຈະເຮັດໃຫ້ Code ຂອງທ່ານຫຍຸ້ງເຫຍີງ ແລະ ແກ້ໄຂຍາກຫຼາຍ.
ນີ້ຄືຈຸດທີ່ OOP (Object-Oriented Programming) ຫຼື ການຂຽນໂປຣແກຣມເຊີງວັດຖຸ ເຂົ້າມາມີບົດບາດ. OOP ບໍ່ແມ່ນພາສາໃໝ່, ແຕ່ເປັນ "ຮູບແບບການຄິດ" ທີ່ຊ່ວຍໃຫ້ເຮົາຈັດກຸ່ມ Code ທີ່ກ່ຽວຂ້ອງກັນໄວ້ນໍາກັນ ໂດຍປຽບທຽບທຸກຢ່າງໃຫ້ເປັນ "ວັດຖຸ" (Object) ໃນໂລກຄວາມເປັນຈິງ. ໃນບົດຄວາມນີ້, ເຮົາຈະມາຮຽນຮູ້ຫຼັກການພື້ນຖານຂອງ OOP ໃນພາສາ Python ໄປນໍາກັນ!
ແນວຄວາມຄິດຫຼັກ: Class ແລະ Object
ເພື່ອໃຫ້ເຫັນພາບງ່າຍທີ່ສຸດ, ລອງນຶກພາບວ່າເຮົາກໍາລັງສ້າງເກມຕໍ່ສູ້ໜຶ່ງເກມ (ຄືກັບ Code ໃນຮູບພາບຕົວຢ່າງ).
- Class (ແບບແປນ): ປຽບເໝືອນ "ພິມເຂັມ" ຫຼື "ແບບແປນ" ຂອງຕົວລະຄອນ. ມັນບອກວ່າຕົວລະຄອນໜຶ່ງຕົວ ຄວນຈະມີຫຍັງແດ່ (ເຊັ່ນ: ຊື່, ພະລັງຊີວິດ, ພະລັງໂຈມຕີ) ແລະ ສາມາດເຮັດຫຍັງໄດ້ແດ່ (ເຊັ່ນ: ໂຈມຕີ, ຍ່າງ, ປ້ອງກັນ). ແຕ່ Class ຍັງບໍ່ມີຕົວຕົນແທ້ໆ.
- Object (ວັດຖຸຈິງ): ຄືຕົວລະຄອນແທ້ໆ ທີ່ຖືກສ້າງຂຶ້ນມາຈາກ Class ນັ້ນ. ເຊັ່ນ: ເຮົາເອົາແບບແປນມາສ້າງເປັນ "ນັກຮົບຊື່ Arthur ມີເລືອດ 100" ແລະ "ນັກເວດຊື່ Merlin ມີເລືອດ 80". ທັງສອງນີ້ຄື Object ທີ່ສ້າງມາຈາກ Class ດຽວກັນ ແຕ່ມີຄ່າພາຍໃນຕ່າງກັນ.
ອົງປະກອບທີ່ສໍາຄັນພາຍໃນ Class
ເມື່ອເຮົາສ້າງ Class ມັນຈະປະກອບດ້ວຍ 2 ສ່ວນຫຼັກຄື:
- Attributes (ຄຸນລັກສະນະ): ແມ່ນຕົວປ່ຽນ (Variables) ທີ່ເກັບຂໍ້ມູນຂອງ Object ນັ້ນໆ ເຊັ່ນ: ຊື່ (name), ເລືອດ (hp), ພະລັງໂຈມຕີ (damage).
- Methods (ພຶດຕິກໍາ): ແມ່ນ Function ທີ່ຢູ່ພາຍໃນ Class ເພື່ອກໍານົດວ່າ Object ນີ້ສາມາດເຮັດຫຍັງໄດ້ແດ່ ເຊັ່ນ: ໂຈມຕີ (attack).
ຕົວຢ່າງການນໍາໃຊ້ຈິງ (Code Example)
ເຮົາມາລອງຂຽນ Code ພາສາ Python ສ້າງ Class ຊື່ວ່າ Unit (ຕົວລະຄອນ) ໂດຍອ້າງອີງຈາກແນວຄວາມຄິດໃນຮູບພາບກັນເລີຍ.
# 1. ການສ້າງ Class (ຂຶ້ນຕົ້ນດ້ວຍຕົວໃຫຍ່ສະເໝີ)
class Unit:
# 2. Method ພິເສດສໍາລັບການກໍານົດຄ່າເລີ່ມຕົ້ນເມື່ອ Object ຖືກສ້າງ
# 'self' ແມ່ນຕົວແທນຂອງ Object ທີ່ກໍາລັງຖືກສ້າງຂຶ້ນມາ
def __init__(self, name, hp, damage):
self.name = name # Attribute ຊື່
self.hp = hp # Attribute ພະລັງຊີວິດ
self.damage = damage # Attribute ພະລັງໂຈມຕີ
# 3. Method ທົ່ວໄປ (ພຶດຕິກໍາການໂຈມຕີ)
def attack(self):
print(f"{self.name} ໂຈມຕີສັດຕູ! ສ້າງຄວາມເສຍຫາຍ {self.damage} ຈຸດ.")
def take_damage(self, amount):
self.hp = self.hp - amount
print(f"{self.name} ຖືກໂຈມຕີ! ເລືອດເຫຼືອ {self.hp}")ຕອນນີ້ເຮົາມີ "ແບບແປນ" ແລ້ວ. ຕໍ່ໄປເຮົາຈະມາສ້າງ Object ຈາກ Class ນີ້ເພື່ອນໍາໄປໃຊ້ງານ:
# ສ້າງ Object ທີ 1
hero = Unit("Arthur", hp=100, damage=25)
# ສ້າງ Object ທີ 2
monster = Unit("Goblin", hp=50, damage=10)
# ຮຽກໃຊ້ງານ Methods ຂອງ Object
hero.attack()
# ຜົນລັບ: Arthur ໂຈມຕີສັດຕູ! ສ້າງຄວາມເສຍຫາຍ 25 ຈຸດ.
monster.take_damage(25)
# ຜົນລັບ: Goblin ຖືກໂຈມຕີ! ເລືອດເຫຼືອ 25ຂໍ້ສັງເກດ: ທ່ານຈະເຫັນຄໍາວ່າ
selfຢູ່ຕະຫຼອດໃນ Python. ໃຫ້ຈື່ໄວ້ສະເໝີວ່າ ເວລາສ້າງ Method ໃນ Class, ຕ້ອງໃສ່selfເປັນ parameter ທໍາອິດສະເໝີ ເພື່ອໃຫ້ Method ນັ້ນຮູ້ວ່າມັນກໍາລັງເຮັດວຽກກັບຂໍ້ມູນຂອງ Object ຕົວໃດຢູ່.
ສະຫຼຸບ
ການຂຽນໂປຣແກຣມແບບ OOP ອາດຈະເບິ່ງຄືຍາກ ແລະ ມີຄໍາສັບໃໝ່ໆຫຼາຍໃນຕອນທໍາອິດ ແຕ່ມັນມີຂໍ້ດີມະຫາສານ:
- ເປັນລະບຽບ (Organized): Code ຖືກຈັດເປັນໝວດໝູ່ໃນ Class ເຮັດໃຫ້ຫາຈຸດແກ້ໄຂໄດ້ງ່າຍ.
- ນໍາກັບມາໃຊ້ໃໝ່ໄດ້ (Reusable): ຂຽນ Class ດຽວ ສາມາດນໍາໄປສ້າງ Object ໄດ້ບໍ່ຈໍາກັດ (ຄືເຮົາສ້າງ monster ໄດ້ເປັນຮ້ອຍຕົວຈາກ Class ດຽວ).
- ເບິ່ງເປັນທໍາມະຊາດ (Real-world modeling): ການຄິດແບບ OOP ຄືກັບການຈໍາລອງໂລກແຫ່ງຄວາມເປັນຈິງ ເຮັດໃຫ້ທີມງານເຂົ້າໃຈ Logic ຂອງໂປຣແກຣມໄດ້ກົງກັນງ່າຍຂຶ້ນ.

