หัวข้อ: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: King ที่ 26 กันยายน 2007, 11:05:57 คือเขาให้สร้าง Car เพื่อให้ได้ผลลัพธ์ดังนี้
โค๊ด: Car Constructor. นี่คือคลาส main.cpp ที่เขาเอามาให้ครับ โค๊ด: #include <iostream> เขาให้สร้าง class car.h อ่ะครับ ยังไงพี่ๆช่วยผมทีนะครับ :-* :-* :-* นั่งน้ำตาจะไหลแล้ววววววว T_T หัวข้อ: Re: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: เมพคุง ที่ 26 กันยายน 2007, 11:22:00 ดูก็รู้ว่าการบ้าน
ทำเองเหอะครับไม่ยากหรอก หัวข้อ: Re: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: King ที่ 26 กันยายน 2007, 11:24:47 ดูก็รู้ว่าการบ้าน ทำเองเหอะครับไม่ยากหรอก อืม ขอบคุณครับ คืออยากให้ช่วยสอนด้วยน่ะครับ ไม่ได้ขอให้ทำให้เฉยๆ ผมนั่งดูมันมาตั้งแต่8โมงแระ เค้าให้ส่งก่อน11.20 ผมไม่รู้จะปรึกษาใคร เลยมาปรึกษาที่นี่ เพิ่งรู้น่ะครับ ว่าไม่ค่อยมีน้ำใจกันเลย :-X หัวข้อ: Re: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: bubbleball ที่ 26 กันยายน 2007, 11:26:58 อ่าวเลยเวลาส่งแล้วสิ
จะเห็นว่า เขา include class car.h มาแล้ว #include "car.h" ก็ลองดูดิครับว่า 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); } เขาส่งอะไรให้ contstructor บ้าง ก็ สร้าง constructor ที่รับค่า พารามิเตอร์พวกนั้นไป assign เป็น properties ของ class นั้นๆ แล้วจะเห็นว่ามีการเรียกใช้ method showDetail ก็ไปดูตรงผลลัพธ์ว่าเมื่อเรียก showDetail ได้ผลลัพธ์มาเป็นยังไง ก็เขียน method ตามนั้น Car # 1 Color : red Max speed : 123.45 km/hour. Capacity : 4 person(s) Door : 4 เผอิญผมไม่เคยเขียน C++ ไม่รู้มันต้องระบุ package หรือ class ไรเปล่านะ แต่ถ้าflash จะประมาณนี้ โค๊ด: class Car { หัวข้อ: Re: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: King ที่ 26 กันยายน 2007, 11:44:51 อ่าวเลยเวลาส่งแล้วสิ จะเห็นว่า เขา include class car.h มาแล้ว #include "car.h" ก็ลองดูดิครับว่า 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); } เขาส่งอะไรให้ contstructor บ้าง ก็ สร้าง constructor ที่รับค่า พารามิเตอร์พวกนั้นไป assign เป็น properties ของ class นั้นๆ แล้วจะเห็นว่ามีการเรียกใช้ method showDetail ก็ไปดูตรงผลลัพธ์ว่าเมื่อเรียก showDetail ได้ผลลัพธ์มาเป็นยังไง ก็เขียน method ตามนั้น Car # 1 Color : red Max speed : 123.45 km/hour. Capacity : 4 person(s) Door : 4 เผอิญผมไม่เคยเขียน C++ ไม่รู้มันต้องระบุ package หรือ class ไรเปล่านะ แต่ถ้าflash จะประมาณนี้ โค๊ด: class Car { ขอบคุณครับ แต่...เลยเวลาส่งแล้ว ตกครับผม ตกเลย มันเป็นงานคะแนนช่วยอ่ะครับ.... สั่งตอนเช้า ส่งตอนหมดคาบ (8โมง-11.30) :-X :-X :-X :-X :-X :-X หัวข้อ: Re: ใครเก่ง C++ ช่วยผมหน่อยครับ ด่วนครับงานนี$ เริ่มหัวข้อโดย: alcoholik ที่ 26 กันยายน 2007, 14:48:30 พึ่งเห็นเมื่อตะกี้แต่เข้ามาสอนแล้วกัน
วิชานี้น่าจะเป็น 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 เนี่ย มีอะไรถามได้ครับ หวังว่าคงเป็นประโยชน์นะ |