CHƯƠNG 4: PHƯƠNG THỨC TỰ THỰC HIỆN pps

13 232 0
CHƯƠNG 4: PHƯƠNG THỨC TỰ THỰC HIỆN pps

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

4/14/2010 MỤC TIÊU CHƯƠNG PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Hiểu rõ phương thức thiết lập, huỷ bỏ thiết lập chép Xây dựng lớp có phương thức tự động thực Sử dụng lớp theo nghĩa hướng với đối tượng (tạo đối tượng, đối tượng tự giải vấn ố ố ế ấ đề đó) GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN NỘI DUNG CHI TIẾT Phương thức tự động thực KHÁI NiỆM PHƯƠNG THỨC THIẾT LẬP PHƯƠNG THỨC HỦY BỎ PHƯƠNG THỨC THIẾT LẬP TẠO BẢN SAO Ậ Ạ Trong C++ có phương thức thuộc loại này: Phương thức thiết lập (constructor) Phương thức hủy bỏ (destructor) Chương trình mang nghĩa hướng với đối tượng: t Khi tạo đối tượng, số hành vi thực thi vào thời điểm OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Phương thức thiết lập Khi đó, Đối tượng khơng đơn liệu có cấu trúc tạo Mà cịn, Mang tính hành động: hành vi đ c thi hành hành Và ngược lại, Khi đối tượng đi, có số hành động thực thi Được thực cách tự động sau đối tượng tạo Nhằm thực số công việc ban đầu như: Tạo vùng nhớ Sao chép, khởi tạo giá trị ban đầu cho liệu v.v Lớp C++ có khơng có phương thức thiết lập Khi khơng có, số hành động sau thực hiện: Dành nhớ cho liệu Khởi tạo giá trị không cho tất byte liệu GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Trong C++, phương thức thiết lập có tên trùng với tên lớp, khơng có kiểu trả Chẳng hạn, p phương thức thiết lập, g ập, tên giống tên lớp Tạo đối tượng p Tự động gọi phương thức thiết lập OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu Khi tạo đối tượng, khơng định thêm điều Chẳng hạn, STACK S; Thì phương thức thiết lập chuẩn gọi thực cách tự động Khơng có phương thức thiết lập Khơng báo lỗi có pthức thiết lập chuẩn gọi tự động OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Vậy, constructor chuẩn 10 Phương thức thiết lập chuẩn phương thức thiết lập khơng có tham số Hoặc phương thức thiết lập với tất tham số gán giá trị đầu Chẳng hạn, STACK( unsigned int = 1237 ); VECTOR( int = 2;double = 3.5 ); class Point { int xVal, yVal; public: Point () // Hàm thiết lập chuẩn { xVal = 0; yVal = 0; } Point (int x, int y) { xVal = x; yVal = y y y; } void OffsetPt (int , int ); … Một lớp có nhiều phương thức thiết lập Chúng khác qua danh sách tham số Đây khả định nghĩa chồng lên (overloading) hành vi lớp }; void main() { Point p1; Point p2(10,20); Phương thức thiết lập có thuộc tính truy cập public GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN } GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Gợi ý xây dựng constructor 11 12 Việc thường làm gán trị cho thành phần liệu đối tượng Số constructor có lớp thường dạng liệu đối tượng mà ta muốn có lúc ban đầu b đầ OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Phương thức hủy bỏ 13 14 Phương thức hủy bỏ (destructor) thực trước đối tượng bị (trước vùng nhớ dành cho đối tượng bị thu hồi) Sử dụng mang tính dọn dẹp, thơng báo kết thúc hoạt động Trong C++ phương thức hủy bỏ viết sau: C++, ~ClassName() Một lớp có phương thức hủy bỏ Trong thành phần lớp, thành phần khai báo trước, phương thức thiết lập thực trước Trong thành phần lớp, thành phần khai báo trước, phương thức hủy bỏ thực sau GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Tổng cộng có lần lầ hàm hủy gọi ? GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN BÀI TẬP LÀM TẠI LỚP 15 16 Xây dựng lớp PhanSo gồm thành phần tử số mẫu số Viết hàm thiết lập (có khơng có tham số) hàm hủy bỏ đáp ứng yêu cầu hàm main sau: void main() { PhanSo a; PhanSo b(1,2),c(3,4); getch(); } Cho biết hàm thiết lập, hủy bỏ gọi lần thứ tự thiết lập, hủy bỏ đối tượng Thời gian làm bài: phút OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu Xây dựng lớp NhietDo gồm thành phần giá trị (số thực) loại (ký tự, C F) Viết hàm cần thiết để hàm main sau chạy void main() { NhietDo a(20,’C’),b(135,’F’); NhietDo c,d; } Cho biết thứ tự thực hàm thiết lập hủy bỏ Thời gian làm bài: phút OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Phương thức thiết lập tạo Trường hợp tạo 17 18 Còn gọi Copy Constructor Mục tiêu Nhằm để tạo đối tượng, quản lý chặt chẽ làm, chép Quản lý đối tượng tạo Khi cần tạo sao, viết sau: EXAMPLE A; EXAMPLE B = A; Khi B đối tượng A, g g g chép quy định phương thức thiết lập tạo lớp EXAMPLE Đây phương thức có C++ GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Cách thức viết copy constructor 19 20 Với cách viết EXAMPLE B = A, chẳng qua để dễ sử dụng – đồng việc gán với việc chép Thực chất, câu lệnh là: EXAMPLE B(A) Cũng cần lưu ý thêm câu lệnh gán gán giá trị thêm, B = A; Hoàn toàn khác câu lệnh – tạo đối tượng EXAMPLE B = A; OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu Phương thức thiết lập tạo phương thức phương thức khác, nên chứa câu lệnh cần thực Tuy nhiên, đặc thù điều khiển cách tự động, nên tê gọi tham số đ độ ê tên i th ố quy ước: ClassName( ClassName& ) OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Ví dụ 21 22 Trong lớp này, bảo đối tượng (được truyền qua tham số) tạo ra, thành phần liệu n lớp có giá trị giống giá trị n gốc Nói cách khác, "bắt chước" thành phần liệu n GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN 23 24 Một lớp ln ln có phương thức thiết lập tạo Phương thức thực hay không thực Khi không thực, phương thức tạo chuẩn âm thầm tồn ẩ ầ Nguy hiểm lập trình thứ diễn cách âm thầm, người lập trình không hay biết OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu Khơng có hàm thiết lập chép, hàm thiết lập chép chuẩn gọi OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 25 26 Phương thức thiết lập tạo thi hành khi: Khởi tạo đối tượng đối tượng có Tham số thực truyền cho tham số giá trị phương thức Phương thức trả đối tượng lớp trở thông qua tên gọi (return Obj) Hàm thiết lập chép gọi tham số thực truyền cho tham số giá trị phương thức GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN 27 28 VẬY NẾU KHÔNG VIẾT COPY CONSTRUCTOR THÌ COPY CONSTRUCTOR CHUẨN SẼ ĐƯỢC GỌI => COPY CONSTRUCTOR CĨ CŨNG ĐƯỢC, KHƠNG CĨ CŨNG ĐƯỢC =>COPY CONSTRUCTOR KHƠNG CẦN THIẾT? Ô Ầ Ế Hàm thiết lập tạo gọi phương thức trả đối tượng lớp trở thông qua tên gọi (return Obj) OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu ? OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu 4/14/2010 Xét lớp VECTOR sau Lưu ý 29 30 Vấn đề nảy sinh phức tạp việc cấp phát thu hồi nhớ thực thi Bởi đó, vơ tình thu hồi vùng nhớ sử dụng GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN class VECTOR{ int size; double *data; public: VECTOR( int = ); VECTOR( VECTOR& );//copy constructor ~VECTOR(); void setData( double = 0.0 ); void outData(); } GV: Võ Hồng Bảo Châu OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN Chúng ta xem xét cụ thể 31 32 Nếu khơng có phương thức thiết lập tạo sao, viết không yêu cầu Một vùng nhớ bị thu hồi hai lần Bởi thực chất có đối tượng, trường hợp h i đối t ả hai tượng có chung vùng nhớ ó h ột ù hớ OOP-CHƯƠNG 4-PHƯƠNG THỨC TỰ THỰC HIỆN GV: Võ Hồng Bảo Châu VECTOR::VECTOR( int n ){ size = n; data = new double[size]; setData(); cout

Ngày đăng: 27/07/2014, 13:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan