Most popular

วันพุธที่ 23 มีนาคม พ.ศ. 2554

Delphi OOP เรื่อง Class กับการใช้งาน

Delphi นั้นเป็นเครื่องมีที่ผู้เขียนใช้งานมานาน และมันก็ยังใช้งานดีอยู่ เป็นเรื่องมือที่ใช้ภาษา Object Pascal ในการพัฒนา Object Pascal ต่างจาก Pascal เดิมตรงที่ว่าเพิ่งแนวคิดการพัฒนาเชิงวัตถุ (OOP) เข้าไป ก็คล้ายกับภาษายุคเดียวกันอย่าง C และ C++
เริ่มแรกตอนที่ผู้เขียนใช้ Delphi ใหม่ๆ (ตอนนั้นมี Visual Basic 6 ของ Microsoft และ Delphi 5 ของ Borland) ผู้เขียนเขียน VB6 มาก่อนจึงค่อนข้างถนัดการเขียนแบบ Procedural (เป็นโปรแกรมย่อย) พอมาลองใช้ Delphi ผู้เขียนก็เขียนแบบเดิมคือ Procedural อีกซึ่ง Delphi รองรับอยู่แล้ว และไม่บังคับให้เขียนเป็น OOP จนผู้เขียนได้มีโอกาศเปลี่ยนงานมาทำ Delphi โดยตรง จากมือใหม่ก็เริ่มกลายเป็นมืออาชีพขึ้นมา แต่ทว่า หลายๆบริษัทที่ผู้เขียนเคยทำงานมามักจะเขียนเป็นแบบ Procedural คล้าย VB6 โดยเพียงใช้ unit.pas เก็บ Source code โปรแกรมย่อยๆเหล่านั้น ผู้เขียนคิดว่ามันไม่น่าจะใช่ OOP จริง จากการที่ผู้เขียนได้ค้นคว้าหาข้อมูล และมีรุ่นพี่ๆแนะนำในช่วงนั้น ผู้เขียนยังได้พยายามค้นคว้า OOP ของภาษาอื่นด้วย เช่น Java และ C++ เพื่อให้เข้าใจ และนำมาใช้ในการ Design Code ในงานของตัวเอง
ขั้นแรกเราต้องรู้ก่อนว่า Class คืออะไร ซึ่ง Class เป็นชนิดข้อมูล(Type) ที่มีอยู่ทุกภาษาที่อยู่ในหลัก OOP ผู้เขียนขอให้คำจำกัดความสั้นๆว่า Class นั้นก็คือส่วนที่เก็บคุณสมบัติต่างๆ ของ Object เอาไว้ ซึ่งภายใน Class อาจจะประกอบด้วยหลายสิ่ง เช่น Variable , Method (ซึ่งใน Delphi ก็คือ Function และ Procedure) , property 
ผู้เขียนจะสาธิตการเขียน Class ใน Delphi เพื่อนำมาใช้งานดังนี้
1. ให้เราสร้าง Project ขั้นมาเป็น VCL Form แล้ววาง Button  เราจะใช้ Class ในการเปลี่ยน Caption ของ From


(Code ใน Form)


จาก Code ด้านบนแสดงให้เห็นส่วนของ Class TForm1 ซึ่งได้สืบทอดมาจาก Class TForm ของ Delphi
 TForm1 = class(TForm)
    Button1: TButton;         //ส่วนประกาศสมาชิกของคลาส
private
   { Private declarations }  //ส่วนประกาศ Interface ของคลาสซึ่งจะเป็นส่วนตัว
public
   { Public declarations }   //ส่วนประกาศ Interface ของคลาสซึ่งจะเป็นสาธารณะ
end;

2.  สร้าง Class ขึ้นมา ในที่นี้ผู้เขียนใช้ชื่อว่า TClass1 โดยสร้าง Class ด้านล่างของ Type
 3. สร้าง Method ภายใน Class TClass1 ชื่อ setCaption โดยให้เป็นแบบ Public พร้อมทั้งประกาศ Instance Class ใต้ var ซึ่งเป็นส่วนประกาศแบบ Global ของ unit โดยใช้ชื่อ Class1



4. จากนั้นทดลองเรียกใช้งานจากการคลิ๊กของ Button1 โดยอ้างถึง Instance ชื่อ Class1 และเรียก Method setCaption พร้อมส่ง Parameter เป็น String ไปด้วย
 จากนั้น run โปรแกรมเพื่อทดสอบ
 จะเห็นว่าเมื่อกดปุ่มแล้ว คำสั่งในปุ่มจะไปเรียก Method setCaption ที่อยู่ใน TClass1 ผ่าน Instance Class ชื่อ Class1

หากเป็นการนำไปใช้งานจริงอาจมี Method มากมายที่อยู่ใน Class อาจมี Property หรือมีการทำ Override , Overload อีกมากมาย ผู้พัฒนาก็สามารถนำ Class ไปไว้ใน unit อื่นๆเพื่อเป็นที่รวบรวม Class ต่างๆก็ได้ ซึ่งเป็นการทำ Class library ไว้ใช้งานนั่นเอง

1 ความคิดเห็น:

  1. ไม่ระบุชื่อ17 ตุลาคม 2555 เวลา 19:01

    เข้าใจง่ายดีครับในการพูดถึงเรื่องเข้าใจยาก

    ตอบลบ