บทที่ 4 คอนสตรัคเตอร์ (Constructor) และ การห่อหุ้มวัตถุ (Encapsulation)
คอนสตรัคเตอร์ (Constructor) และ การห่อหุ้มวัตถุ (Encapsulation)
คอนสตรัคเตอร์ (Constructor) คือการกำหนดเมธอดชนิดพิเศษที่มีชื่อเมธอดว่า New ไว้ภายใน
Class หากเป็นภาษาจาวาการทำคอนสตรัคเตอร์คลาสจะใช้ชื่อเดียวกับชื่อของคลาส
ซึ่งการใช้งานคลาสคอนสตรัคเตอร์ นั้นใช้ในขณะที่สร้างออบเจ็กต์จากคลาส
คลาสนั้นจะสามารถส่งค่าผ่านคลาสไปกำหนดค่าเริ่มต้นให้กับตัวแปรหรือแอททริบิวต์ภายในคลาส
โดยจะใช้เมธอดชนิดไม่คืนค่ากลับ (ซับรูทีน) ในการประกาศคอนสตรัคเตอร์คลาส
ส่วนรายการพารามิเตอร์นั้นจะมีหรือไม่มีก็ได้
รูปแบบของการประกาศคอนสตรัคเตอร์
Public Sub New(รายการพารามิเตอร์)
ประโยคคำสั่ง
End Sub
ประโยคคำสั่ง
End Sub
ตัวอย่างการสร้างคลาสคอนสตรัคเตอร์เพื่อกำหนดค่าเริ่มต้นให้กับเมธอดพื้นคำนวณพื้นที่สามเหลี่ยมจากโค้ดในบรรทัดที่
2 ถึง 3 จะเป็นส่วนของการประกาศเมธอดแบบไม่คืนค่า โดยเมธอดจะมีชื่อคือ New และจะรับค่าพารามิเตอร์ ผ่านเมธอด ฐาน ความสูง เป็นชนิด Double
(1) สร้างคลาสที่มีเมธอดคอนสตรัคเตอร์ชื่อว่า New
|1| Public Class clsTriangle
|2|
|3| Public Sub New(prmBase As Double,
prmHeight As Double)
|4| _Base = prmBase
|5| _Height = prmHeight
|6| End Sub
|7|
|8| End
Class
(2) ในบรรทัดที่ 4
จะเป็นการสร้างวัตถุจากคลาสโดยมีการส่งค่าอาร์กิวเมนต์ ฐานคือ 20 และความสูงคือ 50
ไปยังออบเจ็กต์ objclsTriangle
|1| Public Class Form1
|2| Private Sub btnCal_Click(....) Handles
btnCal.Click
|3|
|4| Dim objclsTriangle As New
clsTriangle(20, 50)
|5|
|6| End Sub
|7| End
Class
ตัวอย่างที่ 1 การสร้างคลาสคอนสตรัคเตอร์เพื่อส่งค่าเริ่มต้นไปให้กับเมธอดการคำนวณพื้นที่สามเหลี่ยม
(1) ออกแบบหน้าจอการแสดงผลและกำหนดค่าพร็อพเพอร์ตี้
Name ดังภาพ
(2) สร้างคอนสตรัคเตอร์คลาสสำหรับการประมวลผลพื้นที่สามเหลี่ยม
|1| Public Class clsTriangle
|2| Private _Base As Double
|3| Private _Height As Double
|4| '-------------------------------------------------------
|5| Public Sub New(prmBase As Double,
prmHeight As Double)
|6| _Base = prmBase
|7| _Height = prmHeight
|8| End Sub
|9|
'-------------------------------------------------------
|10| Public Function CalArea() As Double
|11| Return 0.5 * _Base
* _Height
|12| End Function
|13| End Class
บรรทัดที่ 2
และ 3 คือ ประกาศตัวแปรที่ใช้ในคลาสเป็นแบบ Private เพื่อเป็นการป้องกันจากออบเจ็กต์
บรรทัดที่ 5 ถึง 8 คือ ประกาศคอนสตรัคเตอร์คลาส โดยรอรับค่าพารามิเตอร์จำนวน
2 ตัว
บรรทัดที่ 6 และ 7 คือ การส่งค่าพารามิเตอร์ไปยังตัวแปรคลาส
บรรทัดที่ 10 ถึง 12 คือ
เมธอดสำหรับการคำนวณพื้นที่สามเหลี่ยมซึ่งมีการส่งค่ากลับเป็นชนิด Double
(3) เขียนโค้ดคำสั่งในส่วนของคลาสฟอร์ม
|1| Public Class Form1
|2| Private Sub btnCal_Click(....) Handles
btnCal.Click
|3| Dim objclsTriangle As New
clsTriangle(txtBase.Text, txtHeight.Text)
|4| MsgBox(objclsTriangle.CalArea)
|5| End Sub
|6| End Class
บรรทัดที่ 3
คือ ประกาศตัวแปรออบเจ็กต์โดยมีการส่งค่าอาร์กิวเมนต์เพื่อกำหนดค่าเริ่มต้น
บรรทัดที่ 4
คือ การแสดงผลบนกล่องข้อความจากการส่งค่ากลับของเมธอด CalArea
(4) รันโปรแกรมโดยการกดปุ่ม F5 แล้วป้อนค่าฐาน 90 และความสูงคือ 200 จากนั้นกดปุ่มคำนวณ
โดยการแสดงผลจะได้ดังภาพ
ตัวอย่างที่ 2 โปรแกรมตัดเกรด แบบ 5 เกรด
(A-E) ตามเงื่อนไขของคะแนนคือ ถ้าคะแนนตั้งแต่ 80 ขึ้นไปผลลัพธ์คือ A , ถ้าคะแนนตั้งแต่
70 ขึ้นไปผลลัพธ์คือ B ถ้าคะแนนตั้งแต่ 60 ขึ้นไปผลลัพธ์คือ
C , ถ้าคะแนนตั้งแต่ 50 ขึ้นไปผลลัพธ์คือ D ถ้าน้อยกว่า 50 ผลลัพธ์คือ
E , และหากไม่ตรงเงื่อนไขใดๆ
ผลลัพธ์คือ Error
(1)
ออกแบบหน้าจอและกำหนดค่าคุณสมบัติ Name ของตัวควบคุมดังภาพ
(2)
สร้างคลาส clsGrade.vb
ลักษณะการทำงานนั้นจะรับค่าผ่านทางคอนสตรัคเตอร์คลาสและส่งค่าเกรดผ่านทางผ่านทางเมธอด
doGrade() จากนั้นจึงส่งค่าให้กับตัวแปรคลาสชื่อว่า Score ซึ่งวิธีนี้จะเป็นการรับค่าผ่านทางคอนสตรัคเตอร์คลาสและส่งค่ากลับทางตัวแปรของคลาส
บรรทัดที่ 2
คือ ประกาศตัวแปรที่ใช้ในคลาสเป็นแบบ Public เพื่อส่งค่าไปยังออบเจ็กต์
บรรทัดที่ 4 ถึง 6 คือ ประกาศคอนสตรัคเตอร์คลาส โดยรอรับค่าพารามิเตอร์คะแนน
บรรทัดที่ 8 ถึง 23 คือ
เมธอดสำหรับหรับการประมวลผลเกรดโดยการส่งค่ากลับเป็นชนิด String
(3) เขียนโค้ดคำสั่งในส่วนของคลาสฟอร์ม
|1| Public Class Form1
|2| Private Sub btnGrade_Click(....) Handles
btnGrade.Click
|3| Dim objclsGrade As New clsGrade(txtScore.Text)
|4| Dim grade As String = objclsGrade.Score
|5| MsgBox(grade)
|6| End Sub
|7| End Class
บรรทัดที่ 3
คือ ประกาศตัวแปรออบเจ็กต์โดยสร้างจากคลาส clsGrade โดยคลาสนี้มีการรับค่า
อาร์กิวเมนต์จาก txtScore.Text เพื่อนำไปประมวลผลในเมธอด doGrade()
อาร์กิวเมนต์จาก txtScore.Text เพื่อนำไปประมวลผลในเมธอด doGrade()
บรรทัดที่ 4 คือ การประกาศตัวแปร และกำหนดค่าเริ่มต้นโดยการส่งค่าจากแอททริบิวต์(ตัวแปรใน
ออบเจ็กต์) ไปยังตัวแปร
ออบเจ็กต์) ไปยังตัวแปร
บรรทัดที่ 5
คือ การแสดงค่าจากตัวแปร Grade ในกล่องข้อความ
4)
รันโปรแกรมโดยการกดปุ่ม F5 แล้วป้อนค่าคะแนนคือ 79 เข้าไปยังช่องรับข้อมูล
จากนั้นกดปุ่มเกรดเพื่อแสดงผลเกรด B ออกทางกล่องข้อความ
ความคิดเห็น
แสดงความคิดเห็น