Skip to main content

โมเดลวัตถุ (Object Model)

โมเดลวัตถุคืออะไร?​

โมเดลวัตถุ (Object Model) คือแนวทางการออกแบบและการจัดระเบียบข้อมูลในรูปแบบของวัตถุ (Object) ซึ่งเป็นหน่วยพื้นฐานในการพัฒนาโปรแกรมในแนวคิดการเขียนโปรแกรมเชิงวัตถุ (Object-Oriented Programming: OOP) โดยโมเดลวัตถุจะประกอบด้วยข้อมูล (Attributes) และฟังก์ชันหรือวิธีการ (Methods) ที่ทำงานเกี่ยวข้องกับข้อมูลนั้นๆ

การออกแบบโมเดลวัตถุช่วยให้โปรแกรมมีโครงสร้างที่สามารถขยายและดูแลรักษาได้ง่ายยิ่งขึ้น โดยใช้แนวคิดของการจัดกลุ่มข้อมูลและฟังก์ชันที่เกี่ยวข้องเข้าด้วยกันในลักษณะของวัตถุที่มีการติดต่อสื่อสารระหว่างกัน

หลักการของการเขียนโปรแกรมเชิงวัตถุ (OOP)​

การพัฒนาโปรแกรมโดยใช้โมเดลวัตถุจะยึดหลักการสำคัญ 4 ประการ ได้แก่:

1. การห่อหุ้มข้อมูล (Encapsulation)​

การห่อหุ้มข้อมูลหมายถึงการปิดกั้นการเข้าถึงข้อมูลโดยตรงจากภายนอกวัตถุ และแทนที่ด้วยการใช้เมธอด (Methods) เพื่อเข้าถึงและปรับเปลี่ยนข้อมูลได้ การห่อหุ้มข้อมูลช่วยให้โปรแกรมมีความปลอดภัยและง่ายต่อการบำรุงรักษา

ตัวอย่าง:

class BankAccount:
def __init__(self, balance):
self.__balance = balance # การห่อหุ้มข้อมูล (Encapsulation)

def deposit(self, amount):
self.__balance += amount # ใช้เมธอดในการเปลี่ยนแปลงข้อมูล

def get_balance(self):
return self.__balance # ใช้เมธอดในการเข้าถึงข้อมูล

2. การสืบทอด (Inheritance)​

การสืบทอดช่วยให้สามารถสร้างคลาสใหม่ที่มีคุณสมบัติและพฤติกรรมของคลาสที่มีอยู่แล้ว และสามารถปรับแต่งหรือเพิ่มเติมความสามารถใหม่ๆ ให้กับคลาสนั้นได้

ตัวอย่าง:

class Animal:
def speak(self):
print("Animal speaks")

class Dog(Animal): # Dog สืบทอดจาก Animal
def speak(self):
print("Dog barks")

dog = Dog()
dog.speak() # Output: Dog barks

3. การพหุกรรม (Polymorphism)​

การพหุกรรมคือความสามารถในการใช้ชื่อเมธอดเดียวกันเพื่อให้ทำงานได้แตกต่างกันไปตามชนิดของอ็อบเจ็กต์ที่ใช้งาน เมธอดเดียวกันสามารถทำงานแตกต่างกันในแต่ละคลาส

ตัวอย่าง:

class Cat(Animal):
def speak(self):
print("Cat meows")

animals = [Dog(), Cat()]
for animal in animals:
animal.speak() # Output: Dog barks, Cat meows

4. การแยกความรับผิดชอบ (Abstraction)​

การแยกความรับผิดชอบหมายถึงการซ่อนรายละเอียดการทำงานภายในและเปิดเผยแค่เมธอดที่จำเป็นต่อผู้ใช้งาน การแยกความรับผิดชอบทำให้โปรแกรมสามารถเข้าใจได้ง่ายและยืดหยุ่นในการใช้งาน

ตัวอย่าง:

class Car:
def start(self):
self._engine_start() # การซ่อนรายละเอียด
print("Car started")

def _engine_start(self): # การซ่อนรายละเอียดการทำงานภายใน
print("Engine started")

องค์ประกอบหลักของโมเดลวัตถุ​

โมเดลวัตถุจะประกอบด้วยองค์ประกอบหลักที่สำคัญดังนี้:

1. วัตถุ (Object)​

วัตถุคืออินสแตนซ์ของคลาส ซึ่งเป็นตัวแทนของข้อมูลและพฤติกรรมในโปรแกรม โดยวัตถุจะมีสถานะ (State) และพฤติกรรม (Behavior) ที่เกี่ยวข้องกับข้อมูลที่เก็บอยู่ในนั้น

2. คลาส (Class)​

คลาสคือแม่แบบในการสร้างวัตถุ ซึ่งกำหนดคุณสมบัติ (Attributes) และวิธีการ (Methods) ที่จะใช้กับวัตถุที่สร้างจากคลาสนั้นๆ

3. คุณสมบัติ (Attributes)​

คุณสมบัติหรือที่เรียกว่าแอตทริบิวต์ คือข้อมูลที่เก็บในแต่ละวัตถุ เช่น ชื่อ, อายุ, ที่อยู่ เป็นต้น

4. วิธีการ (Methods)​

วิธีการหรือเมธอดคือฟังก์ชันที่ถูกกำหนดไว้ในคลาส เพื่อใช้ดำเนินการต่างๆ กับข้อมูลภายในวัตถุ

5. การเชื่อมต่อระหว่างวัตถุ (Object Interaction)​

วัตถุในระบบ OOP สามารถมีการติดต่อสื่อสารและแลกเปลี่ยนข้อมูลกันได้ โดยการเรียกใช้เมธอดจากวัตถุอื่นๆ ในระบบ ซึ่งการติดต่อสื่อสารนี้ช่วยให้ระบบสามารถทำงานได้ร่วมกันอย่างมีประสิทธิภาพ

ตัวอย่างการออกแบบโมเดลวัตถุ​

สมมติว่าเรามีระบบการจัดการห้องสมุด เราสามารถออกแบบโมเดลวัตถุได้ดังนี้:

class Book:
def __init__(self, title, author):
self.title = title
self.author = author
self.is_checked_out = False

def check_out(self):
self.is_checked_out = True

def check_in(self):
self.is_checked_out = False

class Library:
def __init__(self):
self.books = []

def add_book(self, book):
self.books.append(book)

def list_books(self):
for book in self.books:
status = "Checked out" if book.is_checked_out else "Available"
print(f"{book.title} by {book.author} - {status}")

ในตัวอย่างนี้ Book และ Library เป็นวัตถุที่มีคุณสมบัติและวิธีการที่เกี่ยวข้องกับการจัดการหนังสือในห้องสมุด โดย Library จะทำหน้าที่ในการเก็บรวบรวมและจัดการข้อมูลของหนังสือทั้งหมด

สรุป​

โมเดลวัตถุ (Object Model) เป็นแนวทางในการออกแบบและจัดระเบียบข้อมูลในโปรแกรมโดยใช้แนวคิดของวัตถุ ซึ่งมีลักษณะเป็นข้อมูลที่มีพฤติกรรมที่เกี่ยวข้องกับข้อมูลเหล่านั้น การออกแบบโมเดลวัตถุช่วยให้โปรแกรมมีความยืดหยุ่นและสามารถขยายตัวได้ง่าย โดยใช้หลักการของการเขียนโปรแกรมเชิงวัตถุ (OOP) เช่น การห่อหุ้มข้อมูล, การสืบทอด, การพหุกรรม และการแยกความรับผิดชอบ