Bài giảng Lập trình hướng đối tượng: Chương 4 - GV. Dương Khai Phong
lượt xem 5
download
Mục tiêu trình bày của chương 4 Đa năng hóa toán tử thuộc bài giảng lập trình hướng đối tượng nhằm trình bày về các nội dung chính: khái niệm đa năng hóa toán tử, đa năng toán tử một ngôi, đa năng toán tử hai ngôi, định nghĩa lại ghép gán, đa năng hóa toán tử nhập /xuất.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Lập trình hướng đối tượng: Chương 4 - GV. Dương Khai Phong
- ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong Số tiết lý thuyết: 45 tiết Số tiết thực hành: 30 tiết 1
- http://sites.google.com/site/khaiphong Nội dung môn học: Chương 1: Tổng quan về OOP Chương 2: Lớp & đối tượng Chương 3: Hàm và hàm đa năng trong OOP Chương 4: Đa năng hóa toán tử Chương 5: Sự kế thừa và tính đa hình 2
- http://sites.google.com/site/khaiphong Chương 4: Đa năng hoá toán tử Khái niệm đa năng hóa toán tử Đa năng hóa toán tử một ngôi (++,--) Đa năng hóa toán tử hai ngôi (+,-,*,/,…) Định nghĩa lại phép gán (=) Đa năng hóa toán tử nhập/xuất (>>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Khái niệm đa năng hóa toán tử Khái niệm Khái niệm: Ví dụ Là khả năng kết hợp một toán tử đã có (+,- Cú pháp ,*,/,>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Khái niệm đa năng hóa toán tử Khái niệm Cú pháp: Ví dụ operator@(DS_đối số) Cú pháp Trong đó: @ là toán tử cần đa năng Ví dụ: Đặc điểm Cách khai báo trước: Phanso cong(Phanso) Cách khai báo đa năng: Phanso operator+(Phanso) Đặc điểm: Không được phép thay đổi chức năng cơ bản,ý nghĩa nguyên thủy của toán tử hoặc thay đổi thứ tự ưu tiên của chúng. Các toán tử không thể đa năng hóa: . .* :: ?: sizeof 5
- http://sites.google.com/site/khaiphong Chương 4: Đa năng hoá toán tử Khái niệm đa năng hóa toán tử Đa năng hóa toán tử một ngôi (++,--) Đa năng hóa toán tử hai ngôi (+,-,*,/,…) Định nghĩa lại phép gán (=) Đa năng hóa toán tử nhập/xuất (>>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Đa năng hóa toán tử một ngôi (++,--) Khái niệm Khái niệm: Đặc điểm Toán tử một ngôi là gì? Cú pháp Đặc điểm: Các toán tử này được sử dụng theo 2 cách: toán Ví dụ tử đứng trước (prefix) (++a) hay toán tử đứng sau (postfix) (a++) Ví dụ: cho biết kết quả của CT sau void main(){ void main(){ int a,b; int a,b; a=5; a=5; a++; b=++a; cout
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Đa năng hóa toán tử một ngôi (++,--) Khái niệm Cú pháp khai báo trong lớp: Đặc điểm Toán tử đứng trước (prefix): operator++() Cú pháp Toán tử đứng sau (postfix): Ví dụ operator++(int) Tham số int được gọi là tham số giả (chỉ định toán tử đứng sau) Định nghĩa bên ngoài lớp: ::operator++() { …. } Ví dụ: 8
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong class Phanso{ void main(){ private: int tu,mau; Phanso a(1,2),b; public: Phanso(int t=0,int m=1); a++; // KQ: a=3/2 Phanso operator++(); a.xuat(); Phanso operator++(int); void xuat(); ++a; // KQ: a=5/2 }; a.xuat(); Phanso::Phanso(int t,int m){ b=++a; // KQ: a=7/2 và b=7/2 tu=t; mau=m; } a.xuat(); Phanso Phanso::operator++(){ tu=tu+mau; b.xuat(); return *this; } b=a++; // KQ: a=9/2 và b=7/2 Phanso Phanso::operator++(int){ a.xuat(); Phanso temp=*this; tu=tu+mau; b.xuat(); return temp; cout
- http://sites.google.com/site/khaiphong Chương 4: Đa năng hoá toán tử Khái niệm đa năng hóa toán tử Đa năng hóa toán tử một ngôi (++,--) Đa năng hóa toán tử hai ngôi (+,-,*,/,…) Định nghĩa lại phép gán (=) Đa năng hóa toán tử nhập/xuất (>>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Đa năng hóa toán tử hai ngôi Khái niệm Khái niệm: Cú pháp Toán tử hai ngôi là gì? Ví dụ Cú pháp: Cách 1: dùng 1 đối số operator(đối số thứ hai) Cách 2: dùng 2 đối số bằng cách dùng hàm bạn friend friend operator ( đối số thứ nhất,đối số thứ hai) Ví dụ: Xây dựng lớp phân số giải quyết các trường hợp sau: Phanso a(1,2),b(3,2),c; c=a+b; c=a+5; c=5+a; 11
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Cách 1: dùng 1 đối số Cách 2: dùng hàm bạn friend class PS{ class PS{ private: private: int tu,mau; int tu,mau; public: public: PS(int t=0,int m=1){tu=t;mau=m;} PS(int t=0,int m=1){tu=t;mau=m;} friend PS operator+(PS,PS); PS operator+(PS); }; PS operator+(PS a,PS b){ }; PS kq; PS PS:: operator+(PS p){ kq.tu=a.tu*b.mau+a.tu*b.mau; PS kq; kq.mau=a.mau*b.mau; kq.tu=tu*p.mau+p.tu*mau; return kq; kq.mau=mau*p.mau; } void main(){ return kq; PS a(1,2),b(1,2),c(3,4),d; } d=a+b+c; void main(){ } PS a(1,2),b(1,2),c(3,4),d; d=a+b+c; } 12
- http://sites.google.com/site/khaiphong Chương 4: Đa năng hoá toán tử Khái niệm đa năng hóa toán tử Đa năng hóa toán tử một ngôi (++,--) Đa năng hóa toán tử hai ngôi (+,-,*,/,…) Định nghĩa lại phép gán (=) Đa năng hóa toán tử nhập/xuất (>>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Định nghĩa lại phép gán (=) Khái niệm Khái niệm: Lý do? Phép gán “=” là gì? Cú pháp Lý do: Định nghĩa lại phép gán “=” để giải quyết các trường hợp sau: Ví dụ Vấn đề con trỏ Null trong cấp phát động(Buổi 2) Vấn đề chuyển đổi kiểu (Buổi 2) Cú pháp: operator=(DS_Đối số_nếu có) Ví dụ: 14
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Vấn đề con trỏ Null trong cấp phát động: class String{ Giải quyết: private: s1:p Hello char *p; public: s2:p Hello String(char *s=“”){p=strdup(s);} ~String(){delete p;} class String{ }; private: void main(){ char *p; String s1(“Hello”); public: String s2; String(char *s=“”){p=strdup(s);} s2=s1; s1:p Hello String& operator=(const String&); } ~String(){delete p;} s2:p }; String& String::operator=(const String &s){ Khi kết thúc chương trình s1 giải phóng p=strdup(s.p); vùng nhớ làm cho s2 trỏ vào vùng nhớ return (*this); NULL } 15
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Vấn đề chuyển đổi kiểu: class PS{ Giải quyết: private: class PS{ int tu,mau; private: public: int tu,mau; PS(int t=0,int m=1){ public: tu=t;mau=m; PS(int t=0,int m=1){ } tu=t;mau=m; }; } void main(){ PS operator=(int); PS a(1,2); }; PS b=3; // Error PS PS::operator=(int t){ } return PS(t,1); } Khi gặp câu lệnh gán như trên, CT lần void main(){ lượt thực hiện các thao tác sau: PS a(1,2); Có định nghĩa phép gán “=” tương PS b=3; ứng hay không? } Hàm khởi tạo chuyển đổi kiểu có hay không? 16
- http://sites.google.com/site/khaiphong Chương 4: Đa năng hoá toán tử Khái niệm đa năng hóa toán tử Đa năng hóa toán tử một ngôi (++,--) Đa năng hóa toán tử hai ngôi (+,-,*,/,…) Định nghĩa lại phép gán (=) Đa năng hóa toán tử nhập/xuất (>>,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Đa năng hóa toán tử nhập/xuất (>>,,
- Chương 4: Đa năng hoá toán tử http://sites.google.com/site/khaiphong Đa năng hoá toán tử nhập/xuất (>>,b; PS(int t=0,int m=1){tu=t;mau=m;} cout
- ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong 20
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - TS. Trần Công Án
57 p | 89 | 13
-
Bài giảng Lập trình hướng đối tượng: Chương 2 - Nguyễn Sơn Hoàng Quốc, ThS. Nguyễn Tấn Trần Minh Khang
14 p | 174 | 12
-
Bài giảng Lập trình hướng đối tượng - Chương 1: Phương pháp lập trình hướng đối tượng
9 p | 140 | 9
-
Bài giảng Lập trình hướng đối tượng C++ - Chương 2: Lập trình hướng đối tượng
53 p | 46 | 8
-
Bài giảng Lập trình hướng đối tượng (dùng Java): Chương 1 - Trần Minh Thái (2017)
55 p | 80 | 8
-
Bài giảng Lập trình hướng đối tượng - Bài 1: Tổng quan lập trình hướng đối tượng
53 p | 120 | 8
-
Bài giảng Lập trình hướng đối tượng (Dùng C#): Chương 2 - Trần Minh Thái
35 p | 103 | 8
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Thị Anh Thi
7 p | 197 | 7
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - ThS. Trịnh Thành Trung
53 p | 87 | 7
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Trần Minh Thái
40 p | 116 | 6
-
Bài giảng Lập trình hướng đối tượng 1: Chương 1 - ThS. Thái Kim Phụng
39 p | 100 | 6
-
Bài giảng Lập trình hướng đối tượng – Bài 01: Tổng quan về OOP
47 p | 63 | 5
-
Bài giảng Lập trình hướng đối tượng (dùng JAVA): Chương 1 - Trần Minh Thái
40 p | 99 | 5
-
Bài giảng Lập trình hướng đối tượng và C++: Chương 1
15 p | 104 | 4
-
Bài giảng Lập trình hướng đối tượng: Nhập môn - Trần Phước Tuấn
15 p | 139 | 4
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Tổng quan về lập trình hướng đối tượng
47 p | 11 | 4
-
Bài giảng Lập trình hướng đối tượng: Chương 1 - Các khái niệm cơ bản trong lập trình hướng đối tượng
36 p | 15 | 3
-
Bài giảng Lập trình hướng đối tượng: Bài 1 - Nguyễn Khanh Văn
0 p | 83 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn