สวัสดีครับผู้อ่านทุกท่าน! บทความนี้จะพาทุกท่านไปสำรวจคอนเซปต์ "Polymorphism" ซึ่งเป็นหัวใจสำคัญของการเขียนโปรแกรมแบบวัตถุนิยม (Object-Oriented Programming - OOP) ผ่านภาษา Delphi Object Pascal ที่หลายคนยกให้เป็นอีกหนึ่งภาษาที่มีเอกลักษณ์และงานออกแบบที่ยอดเยี่ยม ค่ะ
"Polymorphism" ในโลกของ OOP หมายถึงความสามารถของ Object ในการรับรู้ interface หรือ method ทั่วไปเดียวกัน แต่สามารถตอบสนองหรือเนรมิตพฤติกรรมได้หลายแบบตามความเป็นจริงของวัตถุนั้นๆ
ตัวอย่างง่ายๆ เช่น เมื่อเรากดปุ่ม power ของ remote control, มันสามารถเปิดทีวี, เครื่องเสียง, หรือแม้แต่เปิดไฟ ซึ่งปุ่มเดียวกันนี้ผ่านการตั้งโปรแกรมให้มีการตอบสนองที่แตกต่างกันไป เมื่อทำงานกับวัตถุที่ต่างกัน (ในที่นี้คือทีวี, เครื่องเสียง, หรือโคมไฟ)
ในภาษา Delphi Object Pascal Polymorphism ประยุกต์ใช้อย่างชาญฉลาดผ่าน class inheritance และ method overriding โดยที่ class ลูกสามารถมี methods ที่ทำงานต่างจาก class แม่ที่มันสืบทอดมา
เรามาเริ่มกันที่ตัวอย่าง Code ที่ใช้ polymorphism ใน Delphi กันครับ:
type
// คลาสพื้นฐาน
TAnimal = class
public
function MakeSound: string; virtual; abstract;
end;
// คลาสแมวที่สืบทอดจากคลาส Animal
TCat = class(TAnimal)
public
function MakeSound: string; override;
end;
// คลาสสุนัขที่สืบทอดจาก Animal
TDog = class(TAnimal)
public
function MakeSound: string; override;
end;
// หน้าที่ของคลาสแต่ละคลาส
function TCat.MakeSound: string;
begin
Result := 'Meow';
end;
function TDog.MakeSound: string;
begin
Result := 'Woof';
end;
ในตัวอย่างนี้คุณจะเห็นว่าคลาส `TAnimal` เป็นคลาสพื้นฐานที่มี method ชื่อ "MakeSound" ประกาศไว้ โดยมีคำสั่ง `virtual; abstract;` แสดงให้เห็นว่า method นั้นต้องถูก override เมื่อมีการสร้าง instance จากคลาสลูก
ต่อไปนี้เป็นการตั้งค่า polymorphism ที่จะแสดงการทำงานของ codes ที่เราเขียนมา:
var
MyAnimal: TAnimal;
begin
MyAnimal := TCat.Create;
ShowMessage(MyAnimal.MakeSound); // Output: Meow
MyAnimal.Free;
MyAnimal := TDog.Create;
ShowMessage(MyAnimal.MakeSound); // Output: Woof
MyAnimal.Free;
end;
จากโค้ดข้างต้นทำให้เราเห็นว่า `MyAnimal` ซึ่งเป็นประเภทของ `TAnimal` สามารถถูกสร้างขึ้นใหม่เป็น `TCat` หรือ `TDog` แล้วแสดงผลตามประเภทของ class นั้น
การใช้ polymorphism มีประโยชน์หลายอย่างในโลกจริง เช่นในการพัฒนาซอฟต์แวร์สำหรับการจัดการอุปกรณ์ต่างๆ เราจะสามารถสร้าง `TDevice` class และ subclass ต่างๆ เช่น `TScanner`, `TPrinter`, `TCamera`ซึ่งทั้งหมดนี้สามารถมี method `Connect` ที่ทำงานได้ต่างกันแต่ใช้ interface เดียวกัน
เช่นเดียวกัน, หากคุณสนใจเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโปรแกรมเพื่อใช้งานความรู้นี้ในรูปแบบที่กระชับและมีคุณภาพ, "Expert-Programming-Tutor" (EPT) พร้อมที่จะนำคุณไปสู่โลกของการพัฒนาซอฟต์แวร์ด้วยการเรียนรู้ที่ปรับให้เข้ากับสถานการณ์จริงและเทคนิคที่ใช้งานได้จริง ไม่ว่าจะเป็นในภาษา Delphi หรือการใช้งานคอนเซปต์ OOP ที่ครอบคลุมถึง Polymorphism หรือแม้กระทั่ง Encapsulation และ Inheritance คุณจะได้รับประสบการณ์การเรียนรู้ที่ทั้งมีคุณค่าและจำเป็นต่อการพัฒนาไปสู่โปรแกรมเมอร์ระดับสูง สนใจเพิ่มเติม ติดต่อ EPT ได้ทันทีนะครับ!
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM