Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 29 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
29
Dung lượng
2,09 MB
Nội dung
NGƠN NGỮ LẬP TRÌNH Cấu trúc Lớp fit.hnue.edu.vn/~dungntp/NNLT CẤU TRÚC (STRUCT) Nội dung • Khái niệm • Cách khai báo • Cách sử dụng Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Khái niệm • Là kiểu liệu gộp giống mảng • Tuy nhiên: Mảng tập giá trị có kiểu Cấu trúc tập giá trị có kiểu khác Cần phải định nghĩa trước sử dụng Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Cú pháp định nghĩa cấu trúc Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Cú pháp định nghĩa cấu trúc • VD: định nghĩa cấu trúc có tên date, có biến thành phần kiểu int ngay, thang, nam Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Cú pháp định nghĩa cấu trúc • VD: định nghĩa cấu trúc có tên Sinhvien, có biến thành phần kiểu char[] tensv, masv, lop, biến kiểu date ngaysinh có giá trị khởi tạo 2/3/2012 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Khởi tạo giá trị ban đầu cho cấu trúc • Khởi tạo định nghĩa cấu trúc Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Khởi tạo giá trị ban đầu cho cấu trúc • Khởi tạo khai báo biến Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN Sử dụng cấu trúc • Cấu trúc sau định nghĩa dùng biến sở • Để truy cập vào thành phần cấu trúc dùng dấu (.) • VD: Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 10 NỘI DUNG CHÍNH • • • • • • • Lớp thành phần lớp Cài đặt thành phần lớp Các thành phần tĩnh lớp Lớp lồng Đối tượng Hàm tạo hàm huỷ Sử dụng đối tượng Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 15 LỚP VÀ CÁC THÀNH PHẦN CỦA LỚP • • Lớp C++ tương tự Cấu trúc, cho phép người lập trình tự định nghĩa kiểu liệu phức tạp (userdefined types) sử dụng tương tự kiểu liệu có sẵn (built-in data types) Lớp thường sử dụng để định nghĩa vấn đề trừu tượng như: số phức, ngày tháng, vector, connguoi, … Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 16 LỚP VÀ CÁC THÀNH PHẦN CỦA LỚP • • Khác với Cấu trúc, Lớp cho phép định nghĩa liệu thành phần lẫn phương thức làm việc Lớp cho phép che dấu thông tin, phân quyền truy cập Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 17 ĐỊNH NGHĨA LỚP • Từ khóa class để định nghĩa lớp • Từ khóa private public để rõ phạm vi sử dụng liệu Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 18 ĐIỀU KHIỂN TRUY NHẬP • Phần khai báo với từ khóa private truy nhập hàm thành phần class • Phần khai báo với từ khóa public truy nhập nơi chương trình Class private: data1 data2 functiond() public: functiona() functionb() functionc() Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 19 Ví dụ định nghĩa lớp phân số • Chú ý: dấu :: phần định nghĩa hàm toán tử phân giải phạm vi biết tên hàm sau dấu :: thuộc lớp Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 20 Sử dụng lớp • Biến khai báo từ lớp gọi đối tượng: Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 21 ĐỐI TƯỢNG • • Đối tượng thể cụ thể lớp Sử dụng toán tử “.” để truy nhập vào thành phần đối tượng – Chú ý: phạm vi truy nhập (public/private) Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 22 CÀI ĐẶT CÁC THÀNH PHẦN CỦA LỚP • Dữ liệu thành phần – – Nên khai báo với từ khố private Khơng nên khởi tạo giá trị liệu thành phần định nghĩa lớp Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 25 HÀM TẠO (CONSTRUCTOR) • • • • Hàm tạo hàm thành phần tự động viện dẫn khởi tạo đối tượng lớp Hàm tạo phải có tên trùng với tên lớp khơng có giá trị trả Nếu khơng khai báo hàm tạo hàm tạo mặc định tự động tạo Nếu khai báo hàm tạo khơng tự động có hàm tạo mặc định Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 35 VÍ DỤ: HÀM TẠO MẶC ĐỊNH Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 36 CHỒNG HÀM TẠO • Một lớp có nhiều hàm tạo với tham số khác (chồng hàm tạo) Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 37 HÀM TẠO VỚI GIÁ TRỊ MẶC ĐỊNH class Date { public: // hàm tạo với giá trị mặc định day, month, year Date(int d=1, int m=1, int y=1900); }; Date::Date(int d, int m, int y) : day(d), month(m), year(y) {} void main() { Date d1; // 1.1.1900 Date d2(5); // 5.1.1900 Date d3(15,8); // 15.8.1900 Date d4(12,10,1998); // 12.10.1998 } Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 38 HÀM TẠO SAO CHÉP • • • Hàm tạo chép khởi tạo đối tượng dựa đối tượng khác thuộc lớp Mỗi lớp có hàm tạo chép mặc định – có tham số đối tượng lớp Ta định nghĩa lại hàm tạo chép Date(Date& d) • Ví dụ void main() { Date d1(12,4,1997); Date d2(d1); // hàm tạo chép mặc định Date d3=d1; // hàm tạo chép mặc định } Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 39 HÀM HỦY (DESTRUCTOR) • • • Hàm hủy tự động gọi đối tượng bị hủy Hàm hủy thường sử dụng để giải phóng nhớ Ví dụ: class Date { public: Date(); // hàm tạo ~Date(); // hàm hủy }; int main() { Date d1; } // kết thúc khối lệnh hàm hủy viện dẫn để hủy d1 Nguyễn Thị Phương Dung - Khoa CNTT - ĐHSPHN 40