Class and Object

Class

หน่วยการสร้างที่นำไปสู่การเขียนโปรแกรมเชิงวัตถุ เป็นการกำหนดชนิดข้อมูลที่ผู้ใช้กำหนดเอง ประกอบไปด้วยตัวแปร (Attributes or Variables) และกระบวนการดำเนินการ (Function or Method) สามารถเข้าถึงและใช้งานได้โดยการสร้างวัตถุของคลาสนั้น ซึ่ง class เปรียบเสมือนพิมพ์เขียวของวัตถุ (Object)

class ClassName {
    public:
    int variable;
    void myMethode() {
        //..
    }
};

ฟังก์ชันที่อยู่ใน class จะมีอีกชื่อเรียกว่า เมดธอด(Method)

Access specifier

ตัวระบุการเข้าถึงสมาชิก (Attributes และ Methods) ภายใน class

  • public -> สามารถเข้าถึงข้อมูลได้จากภายนอก class

  • private -> ไม่สามารถเข้าถึงข้อมูลได้จากภายนอก class แต่สามารถเข้าถึงได้จากหลักการของ Encapsulation

  • protected -> ไม่สามารถเข้าถึงข้อมูลจากภายนอก class แต่สามารถเข้าถึงได้จาก Inherited class

คำถาม Access specifier มีความสำคัญอย่างไร?

คำตอบ เนื่องจากภายใน class มีการตั้งค่าพื้นฐานการเข้าถึงเป็น private ทำให้ไม่สามารถเข้าถึงข้อมูลได้ หากต้องการเข้าถึงข้อมูลภายใน class นั้นต้องทำการระบุการเข้าถึงเป็น public

Object

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

// oop_p1_1.cpp
#include <iostream>
using namespace std;

class Book{
    public:
          string title;
          string author;
          int numPages;
};

int main(){

    Book book1;
    book1.title = "Harry Potter";
    book1.author = "JK Rowling";
    book1.numPages = 1500;

    cout << book1.title << endl;

    Book book2;
    book2.title = "Lord of the Rings";
    book2.author = "JRR Tolkien";
    book2.numPages = 1300;

    cout << book2.title << endl;

    return 0;
}
Harry Potter
Lord of the Rings

จากตัวอย่างจะเห็นว่า ผู้ใช้กำหนดว่าวัตถุที่เป็นหนังสือนั้นจะประกอบไปด้วย ชื่อเรื่อง ผู้เขียนและจำนวนหน้า ในกรณีนี้ object ที่ชื่อว่า book1 และ book2 เป็นหนังสือที่มีการกำหนดชื่อหนังสือ ผู้แต่งและจำนวนหน้าเรียบร้อยแล้ว

1 class สามารถนำไปใช้ได้กับหลาย object แต่ 1 object สามารถมีได้เพียง 1 class เท่านั้น

คำถาม ใน 1 ไฟล์ สามารถมีหลาย class ได้หรือไม่?

คำตอบ ได้

// oop_p1_3.cpp
#include <iostream>
using namespace std;

class Book{
    public:
    string title;
    string author;
    int numPages;
};

class people{
   public:
   string name;
   int age;
};


int main(){

    Book book1;
    book1.title = "Harry Potter";
    book1.author = "JK Rowling";
    book1.numPages = 1500;

    cout << book1.title << endl;

    Book book2;
    book2.title = "Lord of the Rings";
    book2.author = "JRR Tolkien";
    book2.numPages = 1300;

    cout << book2.title << endl;

    people obj1;
    obj1.name = "AA" ;
    obj1.age = 20;

    cout << "My name is " << obj1.name << endl;
    cout << "I am " << obj1.age << " years old" << endl;

    return 0;
}
Harry Potter
Lord of the Rings
My name is AA
I am 20 years old

แหล่งอ้างอิงเพิ่มเติม

Last updated

Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University