พึ่งเห็นเมื่อตะกี้แต่เข้ามาสอนแล้วกัน
วิชานี้น่าจะเป็น object oriented programming อ่ะเปล่า ไม่ก็ C++
จุดสำคัญคือรู้จัก class ครับ
int main(int argc, char *argv[]) {
Car c1 ("red", 123.45, 4, 4)
Car c2 ("white", 80.00, 4, 2)
Car c3 ("Black", 200.00, 2, 3)
cout<<"###################################"<<endl;
c1.showDetail();
c2.showDetail();
c3.showDetail();
cout<<"###################################"<<endl;
return (0);
}
Car c1 ("red", 123.45, 4, 4)
อันนี้ไม่รู้เขียนผิดปล่าวนะ แต่น่าจะเขียนอย่างนี้มากกว่า
Car c1 = new Car("red", 123.45, 4, 4);
หมายความว่าสร้าง object c1 ที่เป็นคลาส Car โดยใช้ constructor ของคลาสที่ต้องใส่ attribute ดังนี้
"red" น่าจะเป็นสี
123.45 เป็น max speed
4 เป็น capacity
4 เป็น door
เราก็มาเขียนคลาส ในไฟล์ car.h น่ะแหละ
#include ... //อะไรก็ว่าไป
using namespace std;
class Car{
// ก่อนอื่นสร้างตัวแปรเก็บค่าต่าง ส่วน type เปลี่ยนแปลงได้ตามเหมาะสม
// ทำเป็น private เพื่อป้องกันการเข้าใช้งานจากอันอื่น
private:
String color;
double maxSpeed;
int capacity;
int door;
public:
// อย่างที่บอกตามโจทย์ ต้องสร้าง constructor
// constructor คือ method หรือ function ที่สร้างขึ้นใน class และมีชื่อเดียวกับ class เด่ะ ๆ
Car(String c, double speed, int capac, int d)
{
// ทำเป็น set Accessor เพื่อสะดวกในการใช้งาน
setColor(c);
setSpeed(speed);
setCapacity(capac);
setDoor(d);
}
// ต่อไปทำ destructor
~Car()
{
//จริง ๆ ตรงนี้ไม่ต้องเขียนก็ได้แต่โจทย์กำหนดให้ print ออกมาทางหน้าจอก็ใส่ตามนั้น
cout << "Car Destructure" << endl;
}
// ทำให้ดู method นึง ที่เหลือทำคล้าย ๆ กัน หรือจะไป implement นอก class ก็ได้ (นิยมกว่า)
void setColor(String c)
{ color = c; }
void setSpeed(double speed);
void setCapacity(int capac);
void setDoor(int d);
// ถ้าจะให้ดี ทำ get accessor ไว้ด้วยทำให้เรียกใช้งานได้ง่าย เหมือนเดิมที่เหลือทำเองนะ
String getColor()
{ return color; }
double getSpeed();
int getCapacity();
int getDoor();
// จากนั้น implement method ที่โจทย์กำหนด มีอะไรก็ว่าไปเช่น อันนี้ cout ธรรมดาไม่ยาก
// แต่เวลาจะเรียกใช้ตัวแปรให้ใช้ get accessor แทน เพื่อความปลอดภัย เช่น color ใช้ getColor(); เอา
void showDetail();
}; // รู้สึกในภาษา C จะต้องใส่ตรงนี้ด้วยนะถ้าจำไม่ผิด
อาจจะมีข้อสงสัยว่าทำไมต้องทำ set accessor หรือ get accessor ให้มันยุ่งยาก
เพราะเราจะทำตัวแปรข้างใน class ให้เป็น private เพื่อป้องกันการเปลี่ยนแปลงจากภายนอก
สาเหตุน่าอ.น่าจะสอนนะ ที่จำได้ตอนเรียนก็เรื่องความปลอดภัย อะไรสักอย่างนี่แหละ
คร่าว ๆ น่าจะพอ get idea เป็น class มาตรฐานเลยนะ ผมเรียน ปี 4 ก็ยังต้องเรียนเลยวิชา OO เนี่ย
มีอะไรถามได้ครับ หวังว่าคงเป็นประโยชน์นะ