ออบเจ็ค
ในก่อนหน้านี้ คุณได้เรียนรู้วิธีการสร้างคลาสในภาษา C# ซึ่งเป็นพื้นฐานที่สำคัญในภาษา C# ในบทนี้คุณจะได้เรียนรู้เกี่ยวกับการนำคลาสมาสร้างออบเจ็ค คลาสจะสามารถทำงานได้ต้องนำมาสร้างออบเจ็ค
ออบเจ็ค คืออะไร
ออบเจ็ค คือรูปแบบการเขียนโปรแกรมที่ได้เพิ่มเข้ามาในภาษาระดับสูง เช่น ภาษา C# ที่จะทำให้โปรแกรมมีความสามารถ และความยืดหยุ่นเพิ่มมากขึ้น โดยออบเจ็คนั้นจะสร้างขึ้นมาจากคลาสที่คุณได้เรียนรู้ไปแล้วในบทก่อนหน้า และออบเจ็คยังมีคุณสมบัติอื่นๆ อีกมากมาย เช่น การสืบทอด Polymorphism Interfaces ซึ่งคุณจะได้เรียนภายหลัง นอกจากนี้มันยังเป็นสิ่งที่ช่วยให้สามารถนำโค้ดเดิมมาใช้ได้
ออบเจ็คนั้นถือว่าเป็นประเภทข้อมูลของมันเอง ขึ้นอยู่กับคลาสที่ใช้สร้างออบเจ็ค ดังนั้นในการสร้างออบเจ็คเราจะเรียกออบเจ็คที่ได้นั้นว่า ตัวแปรออบเจ็ค ซึ่งมันก็เหมือนตัวแปรทั่วไป ที่ต้องมีการประกาศและมีการเรียกใช้ แต่ตัวแปรออบเจ็คนั้นจะไม่สามารถนำมากระทำการทางคณิตศาสตร์โดยตรงได้
ต่อไปมาดูตัวอย่างการสร้างออบเจ็คจากคลาสในภาษา C#
ClassName indentifier = new ClassName();
ClassName2 indentifier2 = new ClassName2(param1, param, ...);
ClassName3 indentifier3;
indentifier3 = new ClassName3();
การสร้างออบเจ็คในภาษา C
ในการที่จะสร้างออบเจ็ค เราจะขอยกตัวอย่างคลาสง่ายซึ่งจะเป็นคลาสของรูปสี่เหลี่ยมในสองมิติ โดยมีโค้ดดังนี้
class Square {
public string name;
private int width;
private int height;
public void SetDimension (int w, int h) {
width = w;
height = h;
}
public int CalculateArea () {
return width * height;
}
}
จากตัวอย่างของคลาด้านบนนั้น เป็นคลาสที่มีชื่อว่า Square โดยคลาสนี้จะมีสมาชิกที่เป็นตัวแปร 3 ตัว และเป็นเมธอด 3 อัน ต่อไปเราจะนำคลาสดังกล่าวมาสร้างออบเจ็ค เพื่อให้มันสามารถทำงานได้ มาดูตัวอย่างการใช้งาน
using System;
class ObjectExample
{
static void Main(string[] args)
{
Square a = new Square();
a.name = "Paper";
a.SetDimension(8, 11);
Square b = new Square();
b.name = "Computer Screen";
b.SetDimension(16, 9);
Console.WriteLine("Object " + a.name + " has area = " + a.CalculateArea() + " in^2");
Console.WriteLine("Object " + b.name + " has area = " + b.CalculateArea() + " in^2");
}
}
class Square {
public string name;
private int width;
private int height;
public void SetDimension (int w, int h) {
width = w;
height = h;
}
public int CalculateArea () {
return width * height;
}
}
จากตัวอย่างด้านบนเป็นการนำคลาส Square มาสร้างออบเจ็ค โดยออบเจ็คแต่ละอันนั้นจะเป็นอิสระต่อกัน แต่มีรูปแบบและคุณสมบัติเดียวกัน จากตัวอย่างเราได้สร้างออบเจ็คขึ้นมาสองอัน โดยการกำหนดค่าความกว้างและความยาวของมันผ่านเมธอด SetDimension
เพราะว่าเราจะได้กำหนดการเข้าถึงของตัวแปรเป็นแบบ private
จึงไม่สามารถกำหนดโดยตรงเหมือนกับตัวแปร name
ที่เป็นแบบ public
ได้ และเราใช้เมธอด CalculateArea
เพื่อคำนวณหาพื้นที่ของรูปสี่เหลี่ยมดังกล่าว
จากตัวอย่างด้านบนจะได้ผลการทำงานของโปรแกรมดังนี้
Object Paper has area = 88 in^2
Object Computer Screen has area = 144 in^2
การใช้คำสั่ง static
คำสั่ง static เป็นคำสั่งที่ใช้กำหนดให้เมื่อมีการประกาศตัวแปรหรือฟังก็ชัน โดยจะสามารถเรียกใช้จากที่ใดก็ได้ ถ้าหากคลาสนั้นเป็น public คลาส สำหรับตัวแปรที่อยู่ในคลาสที่มีการสร้างออบเจ็คนั้น ทุกออบเจ็คจะใช้ค่านี้ร่วมกันหมด มาดูตัวอย่าง
public static string name;
จากตัวอย่างถ้าเราสร้างตีวแปร Name เป็นแบบ static เมื่อทำการกำหนดค่าให้กับตัวแปร Name จากออบเจ็คใดก็ตาม ค่าของทุกออบเจ็คจะเปลี่ยนเป็นค่าล่าสุดทันที
การใช้คำสั่ง this
คำสั่งที่สำคัญในการทำงานเกี่ยวกับออบเจ็ค ก็คือคำสั่ง this
คำสั่งนี้ใช้สำหรับการอ้างถึงค่าของคลาสปัจจุบันที่กำลังเรียกใช้อยู่ใน มาดูตัวอย่าง
class Square {
public string name;
private int width;
private int height;
public void SetDimension (int width, int height) {
this.width = width ;
this.height = height;
}
public int CalculateArea () {
return width * height;
}
}
จากตัวอย่างให้สังเกตุชื่อตัวแปรในฟังก์ชัน SetDimension ซึ่งใช้ชื่อที่เหมือนกันกับสมาชิกของคลาส ดังนั้นการใช้คำสั่ง this
เป็นการหมายถึงตัวแปรในคลาสปัจจุบันที่ถูกคำสั่งเรียกใช้อยู่ ประโยชน์ของมันคือใช้เมื่อคุณต้องการใช้ชื่อของตัวแปรที่เหมือนกัน เพื่อให้ง่ายต่อการจำ หรือในอีกกรณีหนึ่งจะใช้กับการทำงานของคลาสที่มีการสืบทอด
ในบทนี้ คุณได้เรียนรู้วิธีการนำคลาสมาสร้างออบเจ็คเบื้องต้น และรู้จักกับคำสั่งที่สำคัญเกี่ยวกับออบเจ็คในภาษา C#