Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 35 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
35
Dung lượng
1,26 MB
Nội dung
Bài Cơ lớp C++ I Lập trình hướng thủ tục hướng đối tượng • Cả hai cách tiếp cận thực theo phương pháp tinh chỉnh bước (stepwise refinement) • Tiếp cận hướng thủ tục (Function Oriented): – Tập thung vào hàm việc phân rã hàm – Các cấu trúc liệu (ở mức ngơn ngữ lập trình) định nghĩa sớm – Các cấu trúc liệu khó thay đổi • Tiếp cận hướng đối tượng (Object Oriented) – – – – Tập thung vào đối tượng trừu tượng Các cấu trúc liệu trừu tượng định nghĩa sớm Cấu trúc liệu chi tiết mức ngôn ngữ chưa định nghĩa Cấu trúc liệu dễ thay đổi Ví dụ • Bài tốn: Lập chương trình nhập vào tọa độ đỉnh tam giác mặt phẳng Tính diện tích chu vi tam giác In kết lên hình Tiếp cận hướng thủ tục • Xây dựng hàm – Định nghĩa cấu trúc liệu biểu diễn tam giác – Nhập liệu – Tính diện tích – Tính chu vi – Xây dựng hàm main() sử dụng hàm Định nghĩa cấu trúc liệu hàm struct Tamgiac{ float xA, yA, xB,yB, xC, yC; }; void Nhap(Tamgiac &t){ coutt.xA>>t.yA; coutt.xB>>t.yB; coutt.xC>>t.yC; } Tiếp cận hướng đối tượng • Xây dựng lớp tam giác class Tamgiac{ private: float xA, yA, xB,yB, xC, yC; public: void Nhap(); float Dientich(); float Chuvi(); }; II Khái niệm lớp - Khai báo lớp - Lớp khái niệm mở rộng cấu trúc liệu, chứa đựng liệu hàm - Đối tượng (object) thể lớp Trong lập trình lớp xem kiểu liệu, đối tượng biến class class_name { access_specifier_1: member1; access_specifier_2: member2; }; - class_name : Tên lớp cần tạo - access_specifier : đặc tả truy nhập (private, protected, public) - member : khai báo thành phần lớp (có thể thuộc tính hàm thành viên) Ví dụ: Khai báo lớp biểu diễn hình chữ nhật phương thức đặt giá trị cho thuộc tính phương thức tính diện tích class CRectangle{ int width, height; public: void set_values (int,int); int area (void); }; Ví dụ: Khai báo lớp biểu diễn ma trận với phương thức đặt số hàng, số cột, nhập phần tử in phần tử class CMatrix{ private: int rows, cols; float *element; public: void setColRow(int,int) void printMatrix(); void inputMatrix(); }; III Cài đặt phương thức ❖ Ta cài đặt phương thức bên lớp bên ngồi lớp ❖ Lưu ý: • Các phương thức khơng chứa vòng lặp phép cài đặt lớp • Thơng thường ta cài đặt phương thức bên lớp Cài đặt phương thức bên lớp DataType class_Name::Func_Name([Argument_list]){ Các câu lệnh; } Ví dụ class CRectangle { int width, height; public: void set_values (int a,int b); int area () { return (width*height); } }; void CRectangle:: set_values (int a, int b){ width = a; height = b; } Chương trình hồn thiện #include #include class CRectangle{ private: int width, height; public: void set_values (int,int); int area () {return width*height);} }; void CRectangle::set_values (int a, int b) {width = a; height = b; } int main () { CRectangle rect; rect.set_values (3, 4); cout >t.yA; coutt.xB>>t.yB; coutt.xC>>t.yC; } void Tamgiac::Nhap(){ coutxA>>yA; coutxB>>yB; coutxC>>yC; } void main(){ void main() { } Tamgiac t, t1; Tamgiac t, t1; Nhap(t); t.Nhap(); Nhap(t1); t1.Nhap(); } I Con trỏ this • Tất phương thức lớp có đối ẩn trỏ (this) có kiểu kiểu lớp chứa phương thức Ví dụ: class A { private: Chú ý: Con trỏ this đối … mặc định người lập public: trình khơng cần khai báo DataType method(); } Truy nhập đến thành phần lớp từ trỏ this cách 1: this->property, this->method([arg]); cách 2: property, method([arg]); Ví dụ void Tamgiac::Nhap(){ coutxA>>yA; coutxB>>yB; coutxC>>yC; } void Tamgiac::Nhap(){ coutthis->xA>>this->yA; cout this-> xB>> this-> yB; cout this-> xC>> this->yC; } void main(){ void main() { } Tamgiac t, t1; Tamgiac t, t1; t.Nhap(); t.Nhap(); t1.Nhap(); t1.Nhap(); } II Phương thức lớp toán tử • Các nhóm tốn tử: – Tốn tử ngơi: , ++, – Tốn tử hai ngơi: +, -, *, /, … – Toán tử so sánh: >, >=, , (istream &is, classname &obj){ coutobj.property; … return is; } • Tốn tử xuất ostream& operator , >, class CMatrix{ private: int rows, cols; T *element; public: void setColRow(int,int) void printMatrix(); void inputMatrix(); }; Cơ lớp C++ (tiếp theo) Con trỏ