Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
1,11 MB
Nội dung
CH ƯƠ NG CH ƯƠ NG 5 CÁC CÁCH T Ạ O Đ Ố I T ƯỢ NG CÁC CÁCH T Ạ O Đ Ố I T ƯỢ NG 1 OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu MỤC TIÊU y N ắ m rõ h ơ n v ề các trư ờ n g h ợ p t ạ o đ ố i tư ợ n g . 2 g ợ p ạ ợ g y Hiểu được khái niệm static, viết một vài chương trình s ử d ụ ng bi ế n và ph ươ ng th ứ c static trình s ử d ụ ng bi ế n và ph ươ ng th ứ c static . y Nắm vững khái niệm và cách sử dụng hàm friend OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu NỘI DUNG CHI TIẾT y CÁCH KHAI BÁO BI Ế N 3 y CÁCH CẤP PHÁT BỘ NHỚ y Đ Ố I TƯ Ợ NG LÀ THÀNH PH Ầ N C Ủ A LỚP Ợ y LỚP CÓ DỮ LIỆU STATIC y HÀM FRIEND y CON TRỎ THIS OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu TẠO 1 ĐỐI TƯỢNG BẰNG CÁCH KHAI BÁO BIẾN y Dùn g p hư ơ n g th ứ c thi ế t l ậ p chu ẩ n 4 gp g ậ p Ví dụ: V ECTOR a; y Sử dụng phương thức thiết lập có tham số V í d ụ : ụ VECTOR a(10), b(10,3.5); y Tạo đ ố i tư ợ n g t ừ đ ố i tư ợ n g đã có – Tạo bản sao g g Ví dụ: V ECTOR a; V ECTOR a; V ECTER b(a) V ECTOR b = a; OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu TẠO NHIỀU ĐỐI TƯỢNG BẰNG CÁCH KHAI BÁO BIẾN y S ử d ụ n g p hư ơ n g th ứ c thi ế t l ậ p chu ẩ n 5 ụ gp g ậ p Ví dụ: V ECTOR a[5]; y Sử dụng phương thức thiết lập có một tham số V í d ụ : ụ VECTOR a[2]={10,20}; y S ử d ụ n g p hư ơ n g th ứ c thi ế t l ậ p nhi ề u tham s ố ụ gp g ậ p Ví dụ: V ECTOR a[2]={VECTOR(10,3.5),VECTOR(20,1.6}; OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu Đối tượng là thành phần của lớp y Đ ố i tư ợ n g có th ể là thành p h ầ n của đ ố i tư ợ n g khác , khi 6 ợ g p ợ g, một đối tượng thuộc lớp “lớn” được tạo ra, các thành phần của nó cũng được tạo ra. Phương thức thiết lập (nếu có) sẽ đ t độ ih áđốit thà h hầ đ ược t ự độ n g g ọ i c h o c á c đối t ượn g thà n h p hầ n. y Nếu đối tượng thành phần phải được cung cấp tham số khi thiếtlậpthìđốitượng kếthợp(đốitượng lớn) phảicó thiết lập thì đối tượng kết hợp (đối tượng lớn) phải có phương thức thiết lập để cung cấp tham số thiết lập cho các đ ố i tư ợ n g thành p h ầ n. ợ gp OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu VÍ DỤ class Diem{ 7 double x,y; public: Diem(double xx, double yy) {x = xx; y = yy;} // }; class TamGiac{ Diem A,B,C; public: // }; void main(){ TamGiac t; // Bao sai Diem D; } OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu Đối tượng là thành phần của lớp y Cú p há p đ ể khởi t ạ o đ ố i tư ợ n g thành p h ầ n là dùn g d ấ u hai 8 pp ạ ợ gp g chấm (:) theo sau bởi tên thành phần và tham số khởi tạo. y Khi đối tượng kết hợp bị huỷ đi thì các đối tượng thành ầ p h ầ n của nó cũn g bị hu ỷ đi, n g hĩa là phươn g thức hu ỷ bỏ sẽ được gọi cho các đối tượng thành phần, sau khi phương thứchuỷ bỏ của đốitượng kếthợp đượcgọi thức huỷ bỏ của đối tượng kết hợp được gọi . OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu class Diem { double x ,y; VÍ DỤ 9 ,y; public: Diem(double xx, double yy {x = xx; y = yy;} // }; KH Ở I T Ạ O Đ Ố I ố }; class TamGiac { Ở Ạ O Ố TƯỢNG THÀNH PHẦN, DÙNG DẤU HAI CH Ấ M Đ ố i tượng thành phần { Diem A,B,C; public: TamGiac(double xA, double yA, double xB, double yB, double xC, double yC) : A(xA yA) B(xB yB) C(xC yC) {} HAI CH Ấ M yC) : A(xA , yA) , B(xB , yB) , C(xC , yC) {} void Ve() const; // }; void main(){ TamGiac t(100,100,200, 400,300,300); OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG } GV: Võ Hồng Bảo Châu Đối tượng là thành phần của lớp 10 y Khi đó trình t ự th ự c hi ệ n của các p hư ơ n g th ứ c thi ế t ự ự ệ p g lập và phương thức hủy bỏ theo quy tắc sau: { Phương thức thiết lập của các lớp thành phần được thực hiện tr ướ c ph ươ ng th ứ c thi ế t l ậ p c ủ a l ớ p tr ướ c ph ươ ng th ứ c thi ế t l ậ p c ủ a l ớ p { Phương thức hủy bỏ của lớp thành phần thực hiện sau phương thức hủy bỏ của lớp, { Trong các thành phần của lớp, thành phần nào được khai báo trước, phương thức thiết lập sẽ thực hiện trước. { Trong các thành ph ầ n c ủ a l ớ p thành ph ầ n nào đ ượ c khai báo { Trong các thành ph ầ n c ủ a l ớ p , thành ph ầ n nào đ ượ c khai báo trước, phương thức hủy bỏ sẽ thực hiện sau. OOP-CHƯƠNG 5-TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu [...]... Giống như 2 người (2 đối tượng) hùn tiền mua 1 món đồ nên 2 người có thể xài chung món đồ đó OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu 24 Thay a bằng bất kỳ đối tượng nào, ỳ g kết quả cũng như nhau Biến count được khai báo static để liên hệ các đối ế ể ố tượng với nhau Mỗi lần tạo 1 đối tượng thì biến count tăng 1 hủy 1 đối tượng thì biến count giảm 1 1, 1 OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng... tượng trong vùng heap (hay vùng free store) và gọi phương thức thiết lập cho đối tượng ế ố được cấp Dùng Dù new có thể cấp một đối tượng và dùng delete để h ỷ ó hể ấ ộ à dù d l huỷ một đối tượng Dùng new và delete cũng có thể cấp nhiều đối tượng và huỷ nhiều đối tượng OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu CẤP VÀ HỦY 1 ĐỐI TƯỢNG 20 class Diem { double x,y; public: Diem(double xx, double yy):x(xx),y(yy){};... phan tu deu la chuoi rong Diem ad [5] ; // ca 5 diem deu la (0 0) (0,0) SinhVien asv[7];// Ca 7 sinh vien deu co cung hoten,maso, namsinh OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu ĐỐI TƯỢNG ĐƯỢC CẤP PHÁT ĐỘNG 19 Đối tượng được cấp phát động là các đối tượng được tạo ợ g ợ pp ộ g ợ g ợ ạ ra bằng phép toán new và bị huỷ đi bằng phép toán delete Phép toán new cấp đối tượng trong vùng heap (hay vùng... static 25 Phương thức static là phương thức có thể gọi thực g p g gọ ự hiện ngay cả khi chưa tạo đối tượng thuộc lớp Phương thức static là phương thức để cho các đối tượng của lớp cùng chia sẻ Chẳng hạn, như trong ví dụ trên, phương thức numberPerson() b P () OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu 26 Phương thức static, static các đối tượng của lớp cùng chia sẻ Không ầ hỉ Khô cần chỉ định đối tượng. .. ); }; OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu Từ đó 13 class MAIN{ SEQUENCE *u; u; public: MAIN( int = 2 ); ~MAIN(); }; MAIN::MAIN( int size ){ u = new SEQUENCE[size]; SEQUENCE a(u,size); a.reorder( u, size ); a.out( u, size ); } MAIN::~MAIN(){ MAIN:: MAIN(){ delete []u; } OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu 14 void main() { MAIN object (5) ; j ; } OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ...ĐỐI TƯỢNG LÀ THÀNH PHẦN CỦA MẢNG 11 Sử dụng mảng các đối tượng là một cách tiếp cận ụ g g ợ g ộ p ậ truyền thống Tuy nhiên, Có thể sử dụng mảng các đối tượng của lớp ngay chính trong lớp OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu Ví dụ 12 class SEQUENCE{ double data; public: SEQUENCE(); SEQUENCE( SEQUENCE*,... g g cấp tham số cho từng phần tử được cấp: int *pai = new int[10]; Diem *pad = new Diem [5] ; // Bao sai String *pas = new String [5] ; // Bao sai Lỗi trên được khắc phục bằng cách cung cấp phương thức thiết lập để đối tượng có khả năng tự khởi tạo OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu CẤP VÀ HỦY NHIỀU ĐỐI TƯỢNG 22 class String { char *p; public: String(char *s = "Alibaba") {p = strdup(s);} String(const... yy):x(xx),y(yy){}; Diem():x(0),y(0){}; // } OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG Khi đó mọi phần tử được cấp đều được khởi động với cùng giá t ị độ ới ù iá trị int *pai = new int[10]; Diem *pad = new Diem [5] ; // ca 5 d e co cu g toa do (0,0) diem cung String *pas = new String [5] ; // Ca 5 chuoi cung duoc khoi dong bang “Alibaba” • Việc huỷ nhiều đối tượng được thực hiện bằng cách dùng delete và có thêm dấu [] ở trước... static ợ OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu BÀI TẬP TẠI LỚP 27 Xem chương trình sau, cho biết những gì sẽ xuất ra màn hình khi chạy chương trình: int a=1, b=2; class test{ int count; public: test(){ count++;} static int GetCount(){ return a+b; } }; void main(){ cout . []u; } OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu 14 void main() { MAIN ob j ect (5) ; j; } OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu TẠO MẢNG TẠO PTỬ 1 TẠO PTỬ 2 …TẠO PTỬ 3 15 Gọi Gọi. CH ƯƠ NG CH ƯƠ NG 5 CÁC CÁCH T Ạ O Đ Ố I T ƯỢ NG CÁC CÁCH T Ạ O Đ Ố I T ƯỢ NG 1 OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu MỤC TIÊU y N ắ m rõ h ơ n v ề các trư ờ n g h ợ p t ạ o. ad [5] ; // ca 5 diem deu la (0 0) Diem ad [5] ; // ca 5 diem deu la (0 , 0) SinhVien asv[7];// Ca 7 sinh vien deu co cung hoten,maso, namsinh OOP-CHƯƠNG 5- TẠO ĐỐI TƯỢNG GV: Võ Hồng Bảo Châu ĐỐI TƯỢNG