User Tools

Site Tools


Sidebar


Introduction


Basic Tutorials


Advance Tutorials


Useful Techniques


Examples

  • Simple Pipe Weight Calculator
  • Unit Convertor

Sidebar

tutorial:class

This is an old revision of the document!


Class

คือ Structural Type ชนิดหนึ่ง เป็น Data Type ที่มีทั้ง Field, Method และ Property เหมือนกับ Object แค่มีรายละเอียดที่ซับซ้อนมากกว่า ปัจุบัน Class ถูกใช้อย่างแพร่หลายภายใต้การเขียนโปรแกรมเชิงวัตถุ (Object Oriented Programming) เพราะความสามารถที่มีมากกว่า Object

สิ่งที่แตกต่างระหว่าง Class กับ Object มีดังนี้

  • Class หมายถึง ต้นแบบ ซึ่งหากจะนำไปใช้จริงๆ จะต้องสร้างตัวผลิตภัณท์ของ Class นั้นขึ้นมา ในมี่นี้ เราเรียกว่า Instance
  • Object ใช้หน่วยความจำแบบ Stack ส่วน Class ใช้หน่วยความจำแบบ Heave นั่นทำให้ทุกครั้งที่มีการสร้าง Instance จาก Class ขึ้นมาใช้งาน จำเป็นต้องมีการกำจัด Instance เมื่อใช้งานเสร็จเสมอ เพื่อไม่ให้เกิดปัญหา Memory Leak
  • Class จำเป็นต้องมี Constructor และ Destructor เสมอ ซึ่งสองตัวนี้ คือ Procedure พิเศษ มีไว้สำหรับส้รางและทำลาย Instance ตามลำดับ ในขณะที่ Object ไม่จำเป็นต้องมี
  • Object ใช้การอ้างอิงตัวแปรแบบ Value ส่วน Class ใช้การอ้างอิงตัวแปร สาเหตุที่เป็นแบบนี้ ให้ดูหัวข้อถัดไปแบบ Reference เพื่อให้เห็นภาพ ขอยกตัวอย่าง หากให้ A,B เป็น Object เมื่อใช้คำสั่ง B:=A ; จะหมายถึง มี B เกิดขึ้นมาอีกหนึ่งตัวซึ่งเกิดจากการคัดลอก A ผลก็คือหากเราทำอะไรกับ B ก็จะไม่ส่งผลกับ A เพราะเป็นคนละตัวกัน แต่หากเราให้ A,B เป็น Instance ของ Class เมื่อใช้คำสั่ง B:=A ; จะกลายเป็นว่า B อ้างอิงไปที่ A ไม่ได้เกิดการคัดลอกใดๆ ทีนี้หากเราทำการเปลี่ยนแปลง B จะหมายถึงการเปลี่ยนแปลง A ด้วยเช่นกัน
  • Class มี Access Modifier มากกว่า Object ซึ่งมีรายละเอียดดังนี้
Access Modifier Descriptions
private มองเห็นได้เฉพาะที่อยู่ใน Unit เดียวกันกับ Class นี้เท่านั้น
protect มองเห็นได้เฉพาะ Derived-Class (Class ที่สืบทอด) เท่านั้น
public มองเห็นได้จากทุกที่ที่ uses Unit นี้
published เหมือนกันกับ Public แต่จะสร้าง Run Time Type Information (RTTI) ขึ้นมา เพื่อประโยชน์ในการ Streaming ข้อมูล
tutorial/class.1548640377.txt.gz · Last modified: 2019/01/28 08:52 by admin