intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình hướng đối tượng: Chương 4 - GV. Dương Khai Phong

Chia sẻ: Fczxxv Fczxxv | Ngày: | Loại File: PDF | Số trang:29

73
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

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

  1. Đ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
  2. 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
  3. 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 (>>,
  4.  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 ,*,/,>,
  5.  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
  6. 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 (>>,
  7.  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
  8.  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
  9.  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
  10. 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 (>>,
  11.  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
  12.  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
  13. 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 (>>,
  14.  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
  15.  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
  16.  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
  17. 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 (>>,
  18.  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 (>>,,
  19.  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
  20. ĐH CÔNG NGHỆ THÔNG TIN http://sites.google.com/site/khaiphong 20
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2