Bài giảng lập trình hướng đối tượng - Huỳnh Thị Thu Thủy

-Kiểu số nguyên: int -Kiểu số thực: float -Kiểu số nguyên dài: long -Kiểu kí tự: char -Kiểu chuỗi: char

pdf48 trang | Chia sẻ: lylyngoc | Lượt xem: 1611 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng lập trình hướng đối tượng - Huỳnh Thị Thu Thủy, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
5/10/2013 1 BÀI GiẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG Giảng viên: Huỳnh Thị Thu Thủy Số tiết lý thuyết: 45 Số tiết thực hành: 30 Tài liệu tham khảo 1. Lập trình hướng đối tượng C++,Trần Văn Lă hâ iệ Cô hệ thô ting, p n v n ng ng ng n TPHCM, NXB Thống kê, 1996 2. Giáo trình ngôn ngữ lập trình hướng đối tượng với C++, Nguyễn Chí Trung, NXB Hà Nội, 2005 5/10/2013 2ThS. Huỳnh Thị Thu Thuỷ Giới thiệu • Chương 1: Tổng quan về lập trình hướng đối tượng. • Chương 2: Lớp và thực thể. • Chương 3: Quá tải hàm. • Chương 4: Quá tải toán tử. • Chương 5: Tính thừa kế. • Chương 6: Hệ thống nhập xuất C++ . • Chương 7: Sự kết nối động. • Chương 8: Hàm và lớp chung 35/10/2013 ThS. Huỳnh Thị Thu Thuỷ Chương 1: Tổng quan về lập trình hướng đối tượng 1. Giới thiệu ngôn ngữ C++ 2. Lập trình hướng đối tượng là gì 3. Các ngôn ngữ và ứng dụng OOP 4. Sự đóng kín (Encapsulation) 5 Tính đa hình (Polymorphism). 6. Tính thừa kế (Inheritance) 7. Phương thức ảo (Virtual method) 45/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 2 1. Giới thiệu ngôn ngữ C++ a. Các kiểu dữ liệu cơ bản ể ố- Ki u s nguyên: int - Kiểu số thực: float - Kiểu số nguyên dài: long - Kiểu kí tự: char - Kiểu chuỗi: char * 55/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) b. Khai báo dữ liệu  Khai báo biến  Cú pháp: ;  Ví dụ: • Biến nguyên a: int a; • Biến thực x,y: float x,y; • Biến chuỗi st: char * st;//cấp phát bộ nhớ Hoặc char st[] ; // không cần gọi cấp (với n nguyên dương) phát bộ nhớ 65/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Các vị trí khai báo biến - Bắt đầu của một khối: - VD: void main() { int n; …. ; float b; } - Bên ngoài hàm: - VD: int n; void main() { … } - Đối số hàm: - VD: long giaithua( int n ) { … } 75/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Khai báo hằng • Cách 1: const = ; - Ví dụ: const float PI=3.1416; const max=100;//mac nhien int const char * st=“Tin hoc”; 85/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 3 1. Giới thiệu ngôn ngữ C++ (tt) • Cách 2: #d fi tê hằ iá t ị hằe ne - Ví dụ: #define PI 3.1416 #define max 100 #define st “Tin hoc” 95/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) c. Xuất nhập dữ liệu  Lệnh xuất: Sử dụng toán tử chèn(<<) kết hợp với luồng xuất cout. – Cần khai báo file tiêu đề iostream.h – Ví dụ: • In ra màn hình dòng chữ: “Tin hoc” cout<<“Tin hoc”; • In ra màn hình “BORLAND C++” “VERSION 4.5” cout<<“BORLAND C++\nVERSION 4.5” • In nội dung 2 biến a,b: cout<<a<<b; 105/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Lệnh nhập: Sử dụng toán tử chiết (>>)kết hợp với luồng nhập cin. ầ ề– C n khai báo file tiêu đ iostream.h – Ví dụ: • Nhập số nguyên a: cin>>a; • Nhập 2 số thực x,y: cin>>x>>y; • Nhập chuỗi st: cin>>st; //chuỗi nhập không có khoảng trắng gets(st); // chuỗi nhập có khoảng trắng file tiêu đề stdio.h 115/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) d. Cấu trúc điều khiển  Cấu trúc if if () { ; } else { ; }  Ý nghĩa: Nếu có giá trị khác 0 thì thực hiện ngược lại thực hiện . 125/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 4 1. Giới thiệu ngôn ngữ C++ (tt)  Ví dụ 1: Viết CT nhập vào 1 số nguyên dương. Cho biết số đó là chẵn hay lẻ . #include main() { int n; cout>n; if (n>0) if (n%2 ==0) cout<<“n chan”; else cout<<“n le”; else cout<<“khong xet”; return 0; } 135/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Ví dụ 2: Viết CT nhập vào 3 số nguyên a,b,c. Cho biết giá trị số lớn nhất. #include main() { int a,b,c; cout>a>>b>>c; if (a>b) if (a>c) cout<<“so lon nhat la”<<a; else cout<<“so lon nhat la”<<c; else if (b>c) cout<<“so lon nhat la”<<b; else cout<<“so lon nhat la”<<c; return 0; } 145/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Cấu trúc switch … case switch () { case : {; break;} case : ; break; . . . case : ; break; default: ; } 155/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt)  Ví dụ: Viết CT nhập một số nguyên từ 1 đến 7. Cho biết thứ tương ứng với số trong tuần. #i l d i t hnc u e main() { int so; cout>so; switch(so) { case 1: cout<<“Chu nhat”; break; … case 7: cout<<“Thu bay”; break; default: cout<<“Khong xet”; } return 0; } 165/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 5 1. Giới thiệu ngôn ngữ C++ (tt) Cấu trúc for for (; ; ) { ; } Trong đó: + : câu lệnh khởi tạo giá trị ban đầu cho biến chạy . + : điều kiện để thực hiện công việc của for. + : câu lệnh giúp làm thay đổi giá trị . 175/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) • Lưu đồ cấu trúc for Vào Sai (=0) Ra Đúng (0) 185/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 1: Viết CT in các số từ 1 đến n #i l d i hnc u e main() { int n; cout>n; if (n>0) for (int i=1; i<=n; i++) cout<<i<<“ ”; return 0; } 195/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 2: Viết CT nhập số nguyên dương n. In ra màn hình số chẵn <=n trên 1 dòng, số lẻ <=n trên dòng khác . #include void main() { int n; cout>n; if (n>0) { for (int i=2; i<=n; i++) if (i%2==0) cout<<i<<“ ”; cout<<“\n”; for (int i=1; i<=n; i++) if (i%2!=0) cout<<i<<“ ”; } else cout<<“Khong xet”; } 205/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 6 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 3: Viết CT nhập số nguyên dương n. In ra màn hình giá trị 2 luỹ thừa n. #include. void main() { int n; cout>n; float lthua=1; if (n>0) for (int i=1; i<=n; i++) lthua=lthua*2; else for (int i=1; i<=n; i++) lthua=lthua/2; cout<<“Kqua:”<<lthua; } 215/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Cấu trúc while ểwhile () { ; } Ví dụ 1: Đoạn CT in các số từ 1 đến n. i=1; while (i<=n) { cout<<i<“ ”; i++; } 225/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 2: Viết CT nhập số nguyên dương n. In ra màn hình n số nguyên dương lẻ đầu tiên . #include void main() { int i, n; cout>n; if (n>0) { i 1 = ; while (i<=2*n-1) { cout<<i<<“ ”; i=i+2; } } 235/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 3: Viết CT nhập số nguyên dương n. Cho biết n có là số nguyên tố không . #include void main() { int i, n; cout>n; if (n>1) { i=2; hile (n % i ! 0) i++w = ; if (i==n) cout<<n<<“ la nguyen to”; else cout<<n<<“ khong nguyen to”; } else cout<<n<<“khong nguyen to”; } 245/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 7 1. Giới thiệu ngôn ngữ C++ (tt) Cấu trúc do…while do { ; } while (); Ví dụ 1: Đoạn CT kiểm tra việc nhập DTB với thang điểm 10. do { cout>dtb; } while (dtb10); 255/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 2: Viết CT lặp lại nhiều lần việc nhập 1 số nguyên x. Việc nhập kết thúc khi x=0. Cho biết có bao nhiêu số âm và số dương đã nhập. #include void main() { int x, sd=0, sa=0; do { cout>x; if (x>0) sd++; else if (x<0) sa++; } while (x!=0); cout<<“\n So so duong:<<sd; cout<<\n So so am:<<sa; } 265/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 2: Viết CT lặp lại nhiều lần việc nhập 1 số nguyên x. Việc nhập kết thúc khi x=0. Cho biết có bao nhiêu số đã nhập. #include void main() } 275/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1. Giới thiệu ngôn ngữ C++ (tt) Ví dụ 3: Viết CT lặp lại nhiều lần việc nhập 1 số thực x. Việc nhập kết thúc khi không muốn nhập nữa Cho biết có bao nhiêu số thực đã nhập. . #include void main() { float x; int so=0; char Traloi; do { cout>x; so++; cout<<“Nhap so thuc tiep khong (T/K):”; cin>>Traloi; } while (Traloi==‘T’ ||Traloi==‘t’ ); cout<<“\n So so thuc da nhap:<<so; } 285/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 8 1. Giới thiệu ngôn ngữ C++ (tt) e. Xây dựng hàm () { [ return ;] }  Ví dụ: Khai báo và định nghĩa hàm sau: Hàm tính n giai thừa: long gthua(int n) { …. } Hàm nhập dãy n số thực void nhapday2 (float a[ ], int n) { ….. } 295/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Lập trình hướng đối tượng là gì • Lập trình hướng đối tượng (Object O i t d i OOP) là kh hr en e programm ng - uyn hướng lập trình lấy đối tượng làm nền tảng để xây dựng thuật giải xây dựng chương trình. • Thực chất đây không phải là 1 phương pháp lập trình mới mà là một cách nhìn mới trong lập trình. 305/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Lập trình hướng đối tượng là gì(tt) • Theo lập trình hướng cấu trúc (thủ tục): CTDL + Thuật giải = Chương trình • Theo lập trình hướng đối tượng Phương thức + Dữ liệu = Đối tượng 315/10/2013 ThS. Huỳnh Thị Thu Thuỷ 3- Các ngôn ngữ và ứng dụng OOP • Xuất phát từ tư tưởng của ngôn ngữ SIMULA67 (phát triển vào năm 1960). • Trung tâm nghiên cứu Palo Alto của hãng XEROX đã tập trung 10 năm nghiên cứu để hoàn thiện ngôn ngữ OOP đầu tiên với tên gọi SMALLTALK. • Các ngôn ngữ OOP lần lượt ra đời: EIFFEL, CLOS, LOOPS, FLAVORS, OBJECT PASCAL, OBJECT C, C++, DELPHI, JaVa, C#, Java#. 325/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 9 3- Các ngôn ngữ và ứng dụng OOP(tt) • Chính XEROX, trên cơ sở ngôn ngữ OOP của mình đã đề ra tư tưởng giao tiếp hình tượng ( f )trên màn hình icon base screen inter ace . • Apple Macintosh, Microsoft Windows phát triển giao tiếp đồ hoạ như hiện nay. • Microsoft Windows: ta luôn thực hiện cùng một công việc: “đưa trỏ chuột vào đối tượng rồi nhấn trái chuột”. Mỗi đối tượng có thể là: Control Menu, Control Menu Box, Title Bar,…sẽ đáp ứng công việc tuỳ theo đặc tính của mình. 335/10/2013 ThS. Huỳnh Thị Thu Thuỷ 4- Sự đóng kín (Encapsulation) • Sự đóng kín: Cơ chế liên kết mã và dữ liệu mà nó thao tác, giữ cho cả 2 được an toàn khỏi sự can thiệp từ bên ngoài hoặc do sử dụng sai. Mã + Dữ liệu • Trong 1 đối tượng: mã hoặc dữ liệu hoặc cả 2 có thể là của riêng đối tượng đó hoặc chung. 345/10/2013 ThS. Huỳnh Thị Thu Thuỷ 4- Sự đóng kín (tt) • Nếu mã hoặc dữ liệu là riêng thì nó chỉ có thể được truy cập bởi bộ phận của đối tượng , không được truy cập bởi thành phần khác của chương trình tồn tại ngoài đối tượng. • Khi mã hoặc dữ liệu là chung, các bộ phận khác của CT vẫn có thể truy cập được nó. ầ ố• Các thành ph n chung của đ i tượng: cung cấp 1 giao diện có điều khiển cho các thành phần riêng của đối tượng. 355/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5- Tính đa hình (Polymorphism) • Tính đa hình: Tính chất cho phép 1 tên được dùng cho 2 hay nhiều mục đích khác nhau. • Mục đích của tính đa hình trong OOP: cho phép 1 tên được dùng để chỉ rõ 1 lớp tác động tổng quát. • Trong lớp tác động tổng quát 1 tác động cụ , thể được xác định bởi loại dữ liệu. • Ví dụ: Hàm abs(n) trong C++. 365/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 10 5- Tính đa hình (tt) • Khái niệm tính đa hình chính là ý tưởng 1 giao diện nhiều phương pháp . • Ưu điểm của tính đa hình: giảm tính phức tạp. • Tính đa hình được áp dụng cho hàm và toán tử: Quá tải hàm; Quá tải toán tử. 375/10/2013 ThS. Huỳnh Thị Thu Thuỷ 6- Tính thừa kế (Inheritance) • Tính thừa kế: Quá trình 1 đối tượng có thể có được các tính chất của đối tượng khác. • Một đối tượng có thể kế thừa các tính chất tổng quát để bổ sung thêm các đặc điểm của nó. Thừa kế Đối tượng A có x,y  B có x,y,z,t Đối tượng B có z,t 385/10/2013 ThS. Huỳnh Thị Thu Thuỷ 6- Tính thừa kế(tt) • Nếu không thừa kế, mỗi đối tượng sẽ phải đị h hĩ i đặ t ó liê đến ng a mọ c rưng c n quan n nó. • Ví dụ: Đối tượng A có hàm nhap, xuat Đối tượng B giống đối tượng A có hàm nhap, xuat và hàm xu ly _ • Nếu B không thừa kế A: Khi xây dựng B ta phải xây dựng cả 3 hàm nhap, xuat và hàm xu_ly 395/10/2013 ThS. Huỳnh Thị Thu Thuỷ 7- Phương thức ảo (Virtual method) • Phương thức ảo: Phương thức sẽ mang nội dung cụ thể vào lúc thực hiện CT. • Khi biên dịch, đoạn CT của phương thức ảo sẽ được đưa vào bảng các phương thức ảo(Virtual method table – VMT). • Khi CT thực hiện, các phương thức ảo sẽ được gọi từ bảng phương thức ảo này. • Đây là kỹ thuật kết nối động(dynamic binding) – kết nối trễ(late binding). 405/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 11 Bài tập chương 1 1. Viết chương trình tính n! 2. Viết chương trình tính tổng n số nguyên dương chẵn đầu tiên. 3. Viết chương trình tính tổng n số nguyên dương lẻ đầu tiên. 4. Viết chương trình tìm ước số chung lớn nhất của 2 số nguyên dương m n , . 5. Viết chương trình nhập 1 số nguyên từ 1 đến 12. Cho biết tháng tương ứng với số có bao nhiêu ngày. 415/10/2013 ThS. Huỳnh Thị Thu Thuỷ Chương 2: Lớp và thực thể 1.Lớp và thực thể 2.Hàm tạo – Hàm huỷ 3.Con trỏ đối tượng 4.Các hàm nội tuyến 5.Gán – Truyền – Trả đối tượng về từ hàm 6.Giới thiệu các hàm friend 425/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1- Lớp và thực thể a. Lớp (class): Thực chất là 1 kiểu dữ liệu được định nghĩa trong CT. • Lớp gồm 2 thành phần: Dữ liệu và phương thức. • Các thành phần của lớp có thể có 1 trong 3 thuộc tính:  private  protected  public 435/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1- Lớp và thực thể(tt) b. Thực thể (Instance) – đối tượng: là biến kiểu lớp. Muốn sử dụng lớp phải khai báo đối tượng thuộc lớp. • Định nghĩa lớp: class { // dữ liệu //phương thức, hàm thành phần }; Đị h hĩ h thứ ài kh i bá lớ• n ng a p ương c ngo a o p ::(đối số) { //thân hàm [ return ;] } 445/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 12 1- Lớp và thực thể(tt) • Khai báo đối tượng thuộc lớp: ; • Ví dụ 1: Lớp sample có 1 vùng dữ liệu nguyên. Các phương thức: nhap, xuat. class sample { int a; public: void nhap() { cout>a; } void xuat() { cout<<“a=“<<a; } }; void main() { sample ob; ob.nhap(); ob.xuat();} 455/10/2013 ThS. Huỳnh Thị Thu Thuỷ 1- Lớp và thực thể(tt) • Ví dụ 2: Lớp sample có 2 vùng dữ liệu nguyên. Các phương thức: nhap, xuat. class sample { int a, b; public: void nhap(); void xuat(); }; void sample:: nhap() { cout>a>>b; } , void sample::xuat() { cout<<“a=”<<a<<“; b=” <<b; } void main() { sample ob; ob.nhap(); ob.xuat(); } • Ví dụ 3: Xây dựng lớp TOADO. 465/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Hàm tạo – Hàm huỷ a. Hàm tạo - Phương thức thiết lập(Constructor) ế• Phương thức thi t lập(PTTL) là phương thức đặc biệt của lớp nhằm thực hiện các công việc ban đầu như: cấp phát vùng nhớ, khởi tạo giá trị ban đầu, mở tập tin… • Ví dụ1: class sample { int a; public: sample(){a=0; cout<<“constructor”;} ….. }; 475/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Hàm tạo – Hàm huỷ(tt) • Ví dụ 2: class sample { i t b bli n a, ; pu c: sample(){a=b=0; cout<<“constructor”;} sample(int x){a=b=x; cout<<“constructor”;} sample(int x, int y) {a=x; b=y; cout<<“constructor”;} nhap() { cout>a>>b; } void xuat() { cout<<“a=”<<a<<“; b=” <<b; } }; 485/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 13 2- Hàm tạo – Hàm huỷ(tt) • Đặc điểm của PTTL: – PTTL có tên trùng tên lớp – Không có giá trị trả về – Có thể có 1 hoặc nhiều tham số hoặc không có tham số nào. – Một lớp có thể không có hoặc có 1 hoặc nhiều , PTTL – PTTL được tự động gọi khi khai báo đối tượng thuộc lớp. 495/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Hàm tạo – Hàm huỷ(tt) • Hàm huỷ - Phương thức huỷ bỏ (Destructor) • Phương thức huỷ bỏ (PTHB) là phương thức đặc biệt của lớp nhằm thực hiện các công việc như: thu hồi vùng nhớ, đóng tập tin đã mở. • Ví dụ: class sample { int a; public: sample() {cout<<“\n Constructor”;} //PTTL ~ sample() {cout<<“\n Destructor”;} //PTHB }; 505/10/2013 ThS. Huỳnh Thị Thu Thuỷ 2- Hàm tạo – Hàm huỷ(tt) • Đặc điểm của PTHB: ấ– PTHB có tên trùng tên lớp và có d u – Không có giá trị trả về – Không có tham số nào. Một lớp có thể không có hoặc có 1 PTHB– , – PTHB được tự động gọi khi kết thúc sự tồn tại của đối tượng thuộc lớp. 515/10/2013 ThS. Huỳnh Thị Thu Thuỷ 3- Con trỏ đối tượng • Truy các thành viên của đối tượng: dùng toán tử chấm điểm ( ) . . • Dùng toán tử -> để truy cập thành viên của đối tượng: cần khai báo con trỏ đối tượng. • Cú pháp: *; • VD: sample *ob1, ob2; ob1=&ob2; ob1->xuat(); 525/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 14 4- Các hàm nội tuyến a. Hàm nội tuyến - Khai báo hàm nội tuyến: Đặt trước định nghĩa hàm chỉ định inline. - Hàm nội tuyến thi hành nhanh hơn các hàm thông thường. - Hàm ngắn khai báo nội tuyến. 535/10/2013 ThS. Huỳnh Thị Thu Thuỷ 4- Các hàm nội tuyến(tt)  Ưu điểm của hàm nội tuyến: Không có các thủ tục bổ sung kết hợp với gọi hàm và cơ chế trả về.  Tuỳ vào trình biên dịch, có nhiều hạn chế áp dụng cho hàm nội tuyến.  Nếu 1 hạn chế nội tuyến bị vi phạm, trình biên dịch sẽ tạo ra 1 hàm bình thường. 545/10/2013 ThS. Huỳnh Thị Thu Thuỷ 4- Các hàm nội tuyến(tt)  Những qui định về nội tuyến:  Hàm không có cấu trúc lặp  Không có lệnh nhảy goto  Không có lệnh gọi đệ quy 555/10/2013 ThS. Huỳnh Thị Thu Thuỷ 4- Các hàm nội tuyến(tt)  Ví dụ: class sample { int a,b; public: sample(int x, int y); long square(); }; inline sample::sample(int x, int y) { a=x; b=y;} inline long sample::square() { return a*a+b*b; } 565/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 15 5- Gán – Truyền – Trả đối tượng về từ hàm • Các đối tượng có thể được sử dụng tương tự các biến kiểu bất kỳ. • Có thể thực hiện gán các đối tượng cùng kiểu mà vùng dữ liệu của nó thuộc kiểu có thể thực hiện được phép toán gán. • Đối tượng có thể: đối số hàm, kết quả trả về của 1 hàm 575/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5- Gán – Truyền – Trả đối tượng về từ hàm(tt) • Ví dụ: class Toado { int x, y; public: void nhap() { cin>>x>>y; } void xuat() {cout<<“(“<<x<<“,”<<y<<“)”;} Toado cong(Toado ob1, Toado ob2) { Toado tempt; tempt x=ob1 x+ob2 x; void main() . . . tempt.y=ob1.y+ob2.y; return tempt ; } }; {Toado b1,ob2,ob3; ob1.nhap();ob2.nhap(); ob3=ob3.cong(ob1,ob2); ob3.xuat(); } 585/10/2013 ThS. Huỳnh Thị Thu Thuỷ 6- Giới thiệu các hàm friend • Một hàm nếu không là hàm thành viên của lớp sẽ không truy cập được các thành phần riêng của lớp. • Một loại hàm trong C++ hỗ trợ truy cập được các thành phần riêng của lớp: hàm friend. • Hàm friend không là hàm thành phần của lớp. • Hàm friend được định nghĩa giống hàm bình thường nhưng phần khai báo bên trong lớp có từ khoá friend. 595/10/2013 ThS. Huỳnh Thị Thu Thuỷ 6- Giới thiệu các hàm friend(tt) • Ví dụ 1: Hàm friend của 1 lớp l l void main() c ass myc ass { int a; public: myclass() { a=0; } myclass(int x) { a=x; } id h () { t } { myclass ob(4), ob(6); cout<<sqr(ob1)<<endl; cout<<sqr(ob2)<<endl; ob1.show(); cout<<“\n”; ob2.show(); vo s ow cou <<a; friend long sqr(myclass ob); }; long sqr(myclass ob) { return ob.a*ob.a; } } 605/10/2013 ThS. Huỳnh Thị Thu Thuỷ 5/10/2013 16 6- Giới thiệu các hàm friend(tt) • Ví dụ 2: Hàm friend của nhiều hơn 1 lớp class struck; class car { int num, speed; public: void get(int a, int b) { num=a;speed=b; } void put() { cout<<“num:”<<num; cout<<“speed:”<<speed; } friend int greater(car ob1, struck ob2); }; 615/10/2013 ThS. Huỳnh Thị Thu Thuỷ 6- Giới thiệu các hàm friend(tt) • Ví dụ 2: Hàm friend của nhiều hơn 1 lớp(tt) class str ck u { int num, speed; public: void get(int a, int b) { num=a;speed=b; } void
Tài liệu liên quan