คลาสและวัตถุ C++
ในบทช่วยสอนนี้ เราจะเรียนรู้เกี่ยวกับอ็อบเจ็กต์และคลาสและวิธีใช้งานใน C++ ด้วยความช่วยเหลือจากตัวอย่าง
ในบทช่วยสอนก่อนหน้านี้ เราเรียนรู้เกี่ยวกับฟังก์ชันและตัวแปร บางครั้ง ขอแนะนำให้ใส่ฟังก์ชันและข้อมูลที่เกี่ยวข้องไว้ในที่เดียว เพื่อให้ทำงานได้อย่างมีตรรกะและง่ายขึ้น
สมมุติว่าเราต้องเก็บความยาว ความกว้าง และความสูงของห้องสี่เหลี่ยมแล้วคำนวณพื้นที่และปริมาตรของห้องนั้น
ในการจัดการงานนี้ เราสามารถสร้างตัวแปร 3 ตัว คือ length, breadth และ height พร้อมกับฟังก์ชั่น calculateArea() และ calculateVolume().
อย่างไรก็ตาม ใน C++ แทนที่จะสร้างตัวแปรและฟังก์ชันแยกกัน เรายังสามารถรวมข้อมูลและฟังก์ชันที่เกี่ยวข้องเหล่านี้ไว้ในที่เดียว (โดยการสร้างobject ) กระบวนทัศน์การเขียนโปรแกรมนี้เรียกว่าการเขียนโปรแกรมเชิงวัตถุ
แต่ก่อนที่เราจะสามารถสร้างวัตถุและใช้งานใน C++ เราต้องเรียนรู้เกี่ยวกับคลาสก่อน
คลาส C++ (C++ Class)
คลาสเป็นพิมพ์เขียวสำหรับวัตถุ
เราสามารถคิด คลาส (class) เป็นภาพร่าง (ต้นแบบ) ของบ้านได้ ประกอบด้วยรายละเอียดทั้งหมดเกี่ยวกับพื้น ประตู หน้าต่าง ฯลฯ ตามคำอธิบายเหล่านี้ เราสร้างบ้าน และ บ้านเป็นวัตถุ
การสร้าง Class (Create a Class)
คลาสถูกกำหนดใน C ++ โดยใช้คีย์เวิร์ด class ตามด้วยชื่อของคลาส
เนื้อหาของคลาสถูกกำหนดไว้ในวงเล็บปีกกาและสิ้นสุดด้วยเครื่องหมาย ; ในตอนท้าย
class className {
// some data
// some functions
};
ตัวอย่างเช่น,
class Room {
public:
double length;
double breadth;
double height;
double calculateArea(){
return length * breadth;
}
double calculateVolume(){
return length * breadth * height;
}
};
เรากำหนดคลาสชื่อ Room.
ตัวแปร length , breadth , และ height ประกาศภายใน คลาส Room ที่รู้จักกัน เรียกว่า ข้อมูลสมาชิก (data members) และฟังก์ชัน calculateArea() และ calculateVolume() เรียกว่าฟังก์ชันสมาชิกของคลาส (member functions)
วัตถุ C++ (C++ Objects)
เมื่อมีการกำหนดคลาส จะกำหนดเฉพาะข้อกำหนดสำหรับอ็อบเจ็กต์เท่านั้น ไม่มีการจัดสรรหน่วยความจำหรือที่เก็บข้อมูล ในการใช้ข้อมูลและฟังก์ชันการเข้าถึงที่กำหนดไว้ใน คลาส เราจำเป็นต้องสร้างวัตถุ (objects)
ไวยากรณ์เพื่อกำหนดวัตถุใน C ++
(Syntax to Define Object in C++)
className objectVariableName;
เราสามารถสร้างวัตถุ (create objects) ของคลาส Room (กำหนดในตัวอย่างข้างต้น) ดังต่อไปนี้:
// sample function
void sampleFunction() {
// create objects
Room room1, room2;
}
int main(){
// create objects
Room room3, room4;
}
มี 2 วัตถุ room1 และ room2 ของคลาส Room ถูกสร้างขึ้นใน sampleFunction(). ในทำนองเดียวกัน วัตถุ room3 และ room4 ถูกสร้างขึ้นใน main().
ดังที่เราเห็น เราสามารถสร้างวัตถุของคลาสในฟังก์ชันใดก็ได้ของโปรแกรม นอกจากนี้เรายังสามารถสร้างวัตถุของคลาสภายในตัวคลาสเอง หรือในคลาสอื่น ๆ
นอกจากนี้ เราสามารถสร้างวัตถุได้มากเท่าที่ต้องการจากคลาสเดียว
การเข้าถึงสมาชิกข้อมูล C++ และฟังก์ชันสมาชิก
(C++ Access Data Members and Member Functions)
เราสามารถเข้าถึงข้อมูลสมาชิกและฟังก์ชันสมาชิกของคลาสโดยใช้ตัวดำเนินการ.(จุด) ตัวอย่างเช่น,
room2.calculateArea();
สิ่งนี้จะเรียกใช้ calculateArea() ฟังก์ชันภายในคลาส Room สำหรับ วัตถุ room1 และ room2
ในทำนองเดียวกัน สมาชิกข้อมูล (data members) สามารถเข้าถึงได้ดังนี้:
room1.length = 5.5;
ในกรณีนี้ มันจะกำหนด length ตัวแปรของ room1 มีค่าเป็น 5.5
ตัวอย่างที่ 1: อ็อบเจ็กต์และคลาสในการเขียนโปรแกรม C++
// Program to illustrate the working of
// objects and class in C++ Programming
#include <iostream>
using namespace std;
// create a class
class Room {
public:
double length;
double breadth;
double height;
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// assign values to data members
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
// calculate and display the area and volume of the room
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
เอาท์พุต

ในโปรแกรมนี้ เราได้ใช้คลาส Room และอ็อบเจกต์ของมันคือ room1 เพื่อคำนวณพื้นที่และปริมาตรของห้อง
ใน main() เรากำหนดค่าของ length, breadth, และ height ด้วยคำสั่ง:
room1.length = 42.5;
room1.breadth = 30.8;
room1.height = 19.2;
จากนั้นเราเรียกฟังก์ชัน calculateArea() และ calculateVolume() ทำการคำนวณที่จำเป็น
สังเกตการใช้คีย์เวิร์ด public ในโปรแกรม ซึ่งหมายความว่าสมาชิกเป็นแบบสาธารณะและสามารถเข้าถึงได้จากทุกที่จากโปรแกรม
ตามความต้องการของเรา เรายังสามารถสร้างสมาชิกส่วนตัวโดยใช้คีย์เวิร์ด private สมาชิกส่วนตัวของคลาส สามารถเข้าถึงได้จากภายในคลาส เท่านั้น ตัวอย่างเช่น,
class Test {
private:
int a;
void function1() { }
public:
int b;
void function2() { }
};
a และ function1() เป็นส่วนตัว จึงไม่สามารถเข้าถึงได้จากภายนอกคลาส
ในทางกลับกัน, b และ function2() สามารถเข้าถึงได้จากทุกที่ในโปรแกรม
ตัวอย่างที่ 2: การใช้สาธารณะและส่วนตัวใน C ++ Class
// Program to illustrate the working of
// public and private in C++ Class
#include <iostream>
using namespace std;
class Room {
private:
double length;
double breadth;
double height;
public:
// function to initialize private variables
void initData(double len, double brth, double hgt) {
length = len;
breadth = brth;
height = hgt;
}
double calculateArea() {
return length * breadth;
}
double calculateVolume() {
return length * breadth * height;
}
};
int main() {
// create object of Room class
Room room1;
// pass the values of private variables as arguments
room1.initData(42.5, 30.8, 19.2);
cout << "Area of Room = " << room1.calculateArea() << endl;
cout << "Volume of Room = " << room1.calculateVolume() << endl;
return 0;
}
เอาท์พุต

ตัวอย่างข้างต้นเกือบจะเหมือนกับตัวอย่างแรก ยกเว้นว่าตอนนี้ตัวแปรคลาสเป็นแบบส่วนตัว (private)
เนื่องจากตอนนี้ตัวแปรเป็นแบบส่วนตัว เราจึงไม่สามารถเข้าถึงได้โดยตรงจาก main(). ดังนั้น การใช้คำสั่งต่อไปนี้จะไม่ถูกต้อง:
// invalid code
obj.length = 42.5;
obj.breadth = 30.8;
obj.height = 19.2;
แต่เราต้องใช้คีย์เวิร์ด public ในโปรแกรม ซึ่งหมายความว่าสมาชิกเป็นแบบสาธารณะและสามารถเข้าถึงได้จากทุกที่จากโปรแกรม โดยฟังก์ชั่น initData() ในการเริ่มต้นตัวแปรส่วนตัวผ่านพารามิเตอร์ฟังก์ชั่น double len, double brth, และ double hgt
