ออบเจ็ค

16 June 2016

ในก่อนหน้านี้ คุณได้เรียนรู้วิธีการสร้างคลาสในภาษา 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#

บทความนี้เป็นประโยชน์หรือไม่?Yes·No