Just another WordPress.com site

constructor และ destructor เป็น method ที่พิเศษ  ใน class หนึ่งๆ เราอาจจะกำหนดให้มี constructor, destructor หรือไม่มีก็ได้

โดย constructor จะเป็น method ที่มักจะใช้เซตค่าเริ่มต้น เมื่อเราทำการเรียก class นั้นๆ

ส่วน destructor เป็น method ที่ให้ class ทำอะไรบางอย่างก่อนที่ class นั้นจะถูกทำลายลง

ผมขอเริ่มจากการสร้าง constructor ก่อนละกันครับ การสร้าง constructor นั้นจะมีข้อกำหนดว่าชื่อ constructor จะต้องมีชื่อเดียวกับ class เสมอ

สมมติว่าผมต้องการสร้าง class ชื่อ rectangle ที่มี method area ซึ่งแสดงค่าพื้นที่ของรูปสี่เหลี่ยมผืนผ้า กับ method perimeter ซึ่งแสดงค่าความยาวเส้นรอบรูปของสี่เหลี่ยมผืนผ้า

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

เราจะสร้าง method contructor ที่เก็บค่าความกว้าง และความสูงที่มากที่สุด และ method area ซึ่งใช้คำนวนพื้นที่ กับ method perimeter ที่ใช้คำนวนความยาวเส้นรอบรูปดังนี้

ต่อไปเราก็สร้างเขียนรายละเอียดเกี่ยวกับ method ต่างๆดังนี้ครับ

ทีนี้ในส่วนของ main ผมจะทำการทดลองเรียกใช้ class rectangle ดังนี้ครับ

เมื่อทดลองรันดูจะได้ผลลัพธ์ดังภาพครับ

ในบางครั้งเราอาจจะต้องการเซตค่าเริ่มต้นให้กับ constructor ในกรณีที่ผู้ใช้ไม่ได้ใส่ค่าเริ่มต้นมา สมมติว่าผมต้องกำหนดว่าถ้าผู้ใช้ไม่ได้ใส่ค่าเริ่มต้นมา ผมจะเซตค่าความกว้งสูงสุดและ ความสูงที่สูดที่สุดเป็น 10 และ 10 ตามลำดับ ผมจะเพิ่มโค้ดลงไปแบบนี้ครับ

หรืออาจเขียนแบบนี้ก็ได้นะครับ

ใน main ผมจะลองไม่ใส่ค่าเริ่มต้นของ contructor ดังนี้เมื่อลองทำการรันดูจะพบว่า method คำนวนพื้นที่ และ method คำนวนความยาวเส้นรอบรูป จำทำการคำนวนเมื่อ ความกว้าง และความยาวที่ใส่ลงไปมีค่าไม่เกิน 10 ดังรูปครับ

ส่วน destructor ซึ่งเป็น method สุดท้ายก่อนที่ class จะโดนทำลายลงนั้น รูปแบบการประกาศจะต้องใช้ชื่อเดียวกับ class โดยมีเครื่องหมายตัวหนอน(~)นำหน้าชื่อ method  นอกจากนั้น mehod นี้มีข้อกำหนดว่าจะต้องไม่รับค่า parameter ใดๆ ทั้งสิ้นครับ

ตัวอย่างเช่นสมมติว่าผมต้องการให้ class rectangle แสดงข้อความว่า “Good bye……” ก่อนที่ class นี้จะโดนทำลายลง ผมจะเพิ่มโค้ดลงไปดังนี้ครับ

เมื่อลองทำการรันโปรแกรมดูจะได้ผลลัพธ์ดังภาพครับ

หมายเหตุ สำหรับโปรแกรมนี้ class rectangle จะถูกทำลายลงเมื่อฟังก์ชัน main สิ้นสุดการทำงานลงครับ…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: