Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 53 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
53
Dung lượng
1,95 MB
Nội dung
PHẦN II LẬPTRÌNHHƯỚNGĐỐITƯỢNG I Lậptrình cấu trúc lậptrìnhhướngđốitượng Chương 10 Khái niệm lậptrìnhhướngđốitượng Chương 11 Lớp đốitượng lớp Chương 12 Chồng hàm (function overloading) Chương 13 Hàm tạo hàm hủy Chương 14 Chồng toán tử (operator overloading) Chương 15 Sự kế thừa Chương 16 Sự kết nối động - Hàm ảo hàm bạn Chương 17 Các dòng vào (stream) Chương 18 Tạo khuôn mẫu quản lý lỗi Lậptrình cấu trúc Lậptrìnhhướngđốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Chương 10 Khái niệm lậptrìnhhướngđốitượng I Lậptrình cấu trúc lậptrìnhhướngđốitượng II Các khái niệm lậptrìnhhướngđốitượng III Các ngôn ngữ lậptrìnhhướngđốitượng IV Phân tích thiết kế theo hướngđốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lậptrình cấu trúc ² Tư tưởnglậptrình cấu trúc chia chương trình thành chương trình (trong C++ gọi hàm) module Mỗi hàm thực nhiệm vụ xác định đó, module bao gồm số hàm ² Khi chương trình ngày lớn phức tạp lậptrình cấu trúc bắt đầu bộc lộ điểm yếu Và cho dù chương trình lớn có cài đặt tốt đến phức tạp Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lậptrình cấu trúc (tiếp) Lậptrình cấu trúc (tiếp) ² Lý làm cho phương pháp lậptrình cấu trúc tự bộc lộ điểm yếu liệu chương trình không coi trọng Các liệu quan trọng chương trình lưu trữ biến toàn cục, cho phép hàm truy nhập Mà hàm lại viết nhiều người lậptrình khác nên nguy hỏng, liệu lớn ² Hơn nữa, nhiều hàm truy nhập liệu nên liệu thay đổi hàm phải thay đổi theo Việc tìm hàm cần thay đổi khó việc thay đổi hàm cho khó Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lậptrình cấu trúc (tiếp) Hàm Dữ liệu Hàm Bài giảng LTHDT-Phần 2, Chương 10 Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng ² Ý tưởnglậptrìnhhướngđốitượng kết hợp liệu hàm thao tác liệu vào thực thể chương trình gọi đốitượng ² Cách để truy nhập liệu đốitượng thông qua hàm đốitượng (trong C++, hàm đốitượng gọi hàm thành viên) Nếu ta muốn đọc liệu đốitượng ta phải gọi hàm thành viên đốitượng Hàm thành viên đọc liệu trả giá trị cho ta Ta truy nhập trực tiếp liệu đốitượng Dữ liệu Hàm chương trình thành phần chương trình cấu trúc (là hàm cấu trúc liệu) không mô giới thực Ví dụ: giả sử ta cần viết mã để tạo giao diện đồ họa với người sử dụng menu, cửa sổ, nút bấm,… Nếu lậptrình cấu trúc câu hỏi đặt dùng cấu trúc liệu nào? Các hàm cần làm gì? Lậptrìnhhướngđốitượng ² Mô hình lậptrình cấu trúc sau: Dữ liệu ² Lậptrình cấu trúc thường khó thiết kế Hàm GV Ngô Công Thắng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lậptrìnhhướngđốitượng (tiếp) Lậptrìnhhướngđốitượng (tiếp) ² Trong lậptrìnhhướngđốitượng liệu ẩn để tránh thay đổi vô tình làm hỏng liệu Dữ liệu hàm tác động lên đóng gói thực thể chương trình ² Nếu muốn thay đổi liệu đốitượng phải biết xác hàm tương tác với nó; tức hàm thành viên đốitượng Không có hàm truy nhập liệu Điều giúp đơn giản hoá việc viết, gỡ rối, bảo trì chương trình Dữ liệu phòng kinh doanh Phòng kinh doanh Trưởng phòng kinh doanh Phòng nhân Nhân viên phòng kinh doanh Phòng tài vụ Dữ liệu phòng nhân Dữ liệu phòng tài vụ Trưởng phòng nhân Trưởng phòng tài vụ Nhân viên phòng nhân Nhân viên phòng tài vụ Mô hình công ty kinh doanh Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lậptrìnhhướngđốitượng (tiếp) Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 11 Lậptrìnhhướngđốitượng (tiếp) Đốitượng ² Tóm lại, lậptrìnhhướngđốitượng Dữ liệu cách tổ chức chương trình (OOP) Hướngđốitượng phải xem thiết kế chương trình không vào chi tiết lệnh Cụ thể chương trìnhhướngđốitượng phải tổ chức xung quanh đốitượng Hàm thành viên Hàm thành viên ĐốitượngĐốitượng Dữ liệu Dữ liệu Hàm thành viên Hàm thành viên Hàm thành viên Hàm thành viên Mô hình lậptrìnhhướngđốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 10 Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 12 Lậptrìnhhướngđốitượng (tiếp) Đốitượng (object) Người ta tổng hợp đặc tính LTHDT: Tất đốitượng Chương trìnhhướngđốitượng coi tập hợp đốitượngtương tác với Mỗi đốitượng chương trình có liệu độc lập chiếm nhớ riêng Mỗi đốitượng có dạng đặc trưng lớp đốitượng Tất đốitượng thuộc lớp có hành vi giống Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng ² Như ta biết, đốitượng thành phần chương trình chứa liệu hàm thao tác liệu ² Trong lậptrìnhhướngđốitượng không tìm cách chia chương trình thành hàm mà tìm cách chia chương trình thành đốitượng Việc chia chương trình thành đốitượng làm cho việc thiết kế chương trình trở nên dễ dàng đốitượng chương trình gần gũi với đốitượng thực tế 13 Bài giảng LTHDT-Phần 2, Chương 10 Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 14 15 Đốitượng (tiếp) II Các khái niệm lậptrìnhhướngđốitượngĐốitượng (object) Lớp (class) Sự kế thừa (inheritance) Sự sử dụng lại (Reusability) Sự đa hình chồng hàm (polymorphism and overloading) Che giấu liệu Truyền thông báo GV Ngô Công Thắng Ví dụ số đốitượng thực tế trở thành đốitượng chương trình ² Các đốitượng vật lý: n n n Các thang máy chương trình điều khiển tháng máy Các máy bay chương trình điều hành bay Các xe ô tô chương trình mô luồng giao thông ² Các phần tử môi trường người sử dụng máy tính: n Các cửa sổ n Các menu n Các đốitượng đồ họa (như hình chữ nhật, hình tròn, hình tam giác,…) n Chuột, bàn phím, ổ đĩa, máy in Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 16 Đốitượng (tiếp) Đốitượng (tiếp) Ví dụ số đốitượng thực tế trở thành đốitượng chương trình ² Các cấu trúc liệu: n n n n Ngăn xếp Hàng đợi Danh sách liên kết Cây nhị phân Ví dụ số đốitượng thực tế trở thành đốitượng chương trình ² Các thành phần trò chơi: n n n Các viên bi trò chơi Line Các quân cờ trò chơi cờ tướng, cờ vua … ² Nhân sự: n n n Nhân viên Sinh viên Khách hàng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 17 Bài giảng LTHDT-Phần 2, Chương 10 Đốitượng (tiếp) n Một file nhân Một từ điển ² Một câu hỏi đặt đốitượng thực tế trở thành đốitượng chương trình liệu, hàm thành viên đối tượng? n ² Các kiểu liệu người sử dụng: n n n Thời gian Các số phức Các điểm mặt phẳng Bài giảng LTHDT-Phần 2, Chương 10 n GV Ngô Công Thắng 19 Đốitượng (tiếp) Ví dụ số đốitượng thực tế trở thành đốitượng chương trình ² Các tệp liệu: n GV Ngô Công Thắng 18 Các đốitượng thực tế thường có trạng thái khả Trạng thái tính chất đốitượng mà thay đổi Khả mà đốitượng làm Khi trở thành đốitượng chương trình liệu lưu trạng thái hàm thành viên đáp ứng với khả đốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 20 Đốitượng (tiếp) Lớp (tiếp) ² Ví dụ đốitượng thang máy liệu là: n n n Tầng Số lượng hành khách Các nút ấn (instance) lớp đốitượng trường hợp cụ thể mô tả lớp Vì liệu đốitượng lớp khác nên liệu lớp gọi liệu thực thể (instance data) Các hàm thành viên là: n n n n n n DiXuong() DiLen() MoCua() DongCua() LayTTin() TinhTangSeToi() Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 21 ² Một lớp đốitượng (gọi tắt lớp) mô tả số đốitượngtương tự Nó xác định liệu hàm có đốitượng lớp ² Khái niệm lớp lậptrìnhhướngđốitượng giống khái niệm lớp sinh học Ví dụ: cá chép, cá trôi, cá mè thuộc lớp cá ² Nếu so sánh với kiểu liệu lớp giống kiểu liệu, đốitượng giống biến kiểu GV Ngô Công Thắng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 23 Sự kế thừa (inheritance) Lớp (class) Bài giảng LTHDT-Phần 2, Chương 10 ² Một đốitượng gọi thể 22 ² Trong sống ta thấy lớp lại chia thành lớp Chẳng hạn lớp động vật chia thành cá, chim, động vật có vú ; lớp xe cộ chia thành xe con, xe buýt, xe tải, xe máy, ² Nguyên tắc phân chia thành lớp lớp có đặc điểm giống với lớp mà tách Ví dụ: xe con, xe tải, xe buýt xe máy, tất có tay lái, động cơ, dùng để vận chuyển người hàng hoá Đây đặc điểm xe cộ Ngoài đặc điểm này, lớp có đặc điểm riêng nó: Các xe buýt có chỗ ngồi cho nhiều người, xe tải có thùng xe để chở hàng hoá Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 24 Sự sử dụng lại (Reusability) Sự kế thừa (tiếp) ² Khi lớp viết hoàn hảo bán ² Trong lậptrìnhhướngđốitượng lớp làm sở cho nhiều lớp khác Một lớp gọi lớp sở Các lớp mà định nghĩa có đặc điểm lớp sở thêm vào đặc điểm riêng gọi lớp dẫn xuất Như vậy, lớp dẫn xuất kế thừa đặc điểm lớp sở Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 25 Kế thừa (tiếp) Đặc điểm B Lớp dẫn xuất Đặc điểm B Đặc điểm B Đặc điểm E Đặc điểm C Đặc điểm D Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 27 ² Ví dụ: giả sử ta viết (hoặc mua) lớp tạo Đặc điểm A Đặc điểm A Bài giảng LTHDT-Phần 2, Chương 10 Sự sử dụng lại (Tiếp) Lớp sở Đặc điểm A cho người lậptrình khác để sử dụng chương trình riêng họ Việc gọi sử dụng lại ² Việc sử dụng lại tương tự việc sử dụng thư viện hàm lậptrình cấu trúc Tuy nhiên, lậptrìnhhướngđối tượng, nhờ có kế thừa mà ý tưởng sử dụng lại mở rộng nhiều Người lậptrình lấy lớp có, thêm đặc điểm khả cho mà không cần thay đổi Để làm điều người lậptrình đơn giản tạo lớp dẫn xuất kế thừa toàn đặc điểm lớp có thêm vào đặc điểm Đặc điểm A Đặc điểm B Đặc điểm F GV Ngô Công Thắng 26 hệ thống menu Lớp menu tốt ta không muốn thay đổi nó, ta lại muốn làm cho số mục menu nhấp nháy Để làm điều ta đơn giản tạo lớp dẫn xuất kế thừa tất khả lớp có có thêm mục menu nhấp nháy ² Việc sử dụng lại phần mềm có lợi ích lậptrìnhhướngđốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 28 Sự đa hình chồng hàm (polymorphism and overloading) Che giấu liệu ² Trong lậptrìnhhướngđốitượng ta sử dụng hàm toán tử theo nhiều cách khác tùy thuộc vào mà chúng tác động Đây gọi đa hình ² Sự đa hình thực theo hai cách: n n Đa hình thời điểm biên dịch thông qua việc chồng hàm chồng toán tử Đa hình thời điểm chạy chương trình thông qua việc sử dụng hàm ảo Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 29 Sự đa hình chồng hàm (tiếp) có đối số khác Chồng toán tử cho phép sử dụng toán tử có (chẳng hạn +, -) tác động kiểu liệu người lậptrình định nghĩa Khi hàm hay toán tử gọi trình biên dịch biết cách chọn hàm, toán tử để thực ² Trường hợp lớp dẫn xuất lớp sở có hàm thành viên giống hệt gọi hàm thành viên trình biên dịch không xác định gọi hàm nào, hàm lớp sở hay lớp dẫn xuất Chỉ đến chạy chương trình biết hàm gọi dựa vào kiểu đốitượng gọi hàm GV Ngô Công Thắng việc: thứ công việc tạo lớp đốitượng (class creators), thứ hai công việc sử dụng lớp đốitượng ² Khi tạo lớp, người tạo lớp xác định cho phép người sử dụng lớp truy nhập, phần lại che giấu không cho người sử dụng lớp quyền truy nhập Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 31 Che giấu liệu (tiếp) ² Chồng hàm cho phép có nhiều hàm trùng tên Bài giảng LTHDT-Phần 2, Chương 10 ² Trong LTHDT người ta phân biệt hai công 30 ² Khả che giấu liệu cho phép người tạo lớp thay đổi hay định nghĩa lại lớp mà chắn không ảnh hưởng tới chương trình người sử dụng lớp ² C++ sử dụng từ khóa sau để xác định khả truy nhập thông tin liệu từ bên lớp: public, private, protected Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 32 III Các ngôn ngữ lậptrìnhhướngđốitượng Truyền thông điệp ² Chương trìnhhướngđốitượng bao gồm tập đốitượng mối quan hệ đốitượng với ² Các đốitượng gửi nhận thông tin với giống người trao đổi với Chính nguyên lý trao đổi thông tin cách truyền thông điệp giúp dễ dàng xây dựng hệ thống mô tả đẩy đủ, trung thực hệ thống thực tế Truyền thông điệp cho đốitượng tức báo cho phải thực việc Cách đáp ứng đốitượng mô tả qua hàm thành viên đốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng ² Tư tưởnglậptrìnhhướngđốitượng cài đặt nhiều ngôn ngữ lậptrình khác C, Pascal Tuy nhiên, sử dụng ngôn ngữ ngôn ngữ hướngđốitượng gặp nhiều khó khăn, với chương trình lớn phức tạp Những ngôn ngữ thiết kế để hỗ trợ cho việc mô tả, cài đặt khái niệm phương pháp lậptrìnhhướngđốitượng gọi chung ngôn ngữ hướngđốitượng 33 Bài giảng LTHDT-Phần 2, Chương 10 35 III Các ngôn ngữ lậptrìnhhướngđốitượng (tiếp) Truyền thông điệp (tiếp) ² Thông điệp truyền phải tên đốitượng nhận thông điệp, tên hàm cần thực thông tin truyền Cấu trúc thông điệp sau: Tên_đối_tượng.Tên_hàm(Đối_số) ² Các ngôn ngữ lậptrình gọi ngôn ngữ hướngđốitượng phải có đặc điểm sau: n n n n Đốitượng GV Ngô Công Thắng Thông báo Thông tin n Bao gói thông tin: đưa liệu hàm thao tác liệu vào cấu trúc (gọi lớp) Cơ chế che giấu liệu Tự động tạo lập xóa bỏ đốitượng Sự kế thừa Sự đa hình (chồng hàm, chồng toán tử liên kết động) ² C++, Smalltalk, Object Pascal,… ngôn ngữ lậptrìnhhướngđốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 34 Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 36 IV Phân tích thiết kế theo hướngđốitượng Các bước phân tích hướngđối tượng: Bước 1: Tìm hiểu toán Bước 2: Xác định rõ đặc tả yêu cầu người sử dụng, hệ thống phần mềm Bước 3: Xác định đốitượng thuộc tính chúng Bước 4: Xác định hàm mà đốitượng phải thực (hành vi đối tượng) Bước 5: Xác định mối quan hệ tương tác đối tượng, thông báo truyền thông báo đốitượng Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 37 Quá trình phân tích hướngđốitượng thể qua sơ đồ sau: Xây dựng đặc tả yêu cầu Phát biểu toán Xác định lớp đốitượng Xác định hàm Mối quan hệ đốitượng Thiết kế Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 38 I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất Chương 15 Sự kế thừa I Giới thiệu kế thừa I.1 Tầm quan trọng kế thừa OOP I.2 Sự sử dụng lại I.3 Sự kế thừa thiết kế hướngđốitượng I.4 Cú pháp kế thừa I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất I.6 Các hàm không kế thừa I.7 Sự kế thừa mối quan hệ loại Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng l Nếu hàm thành viên lớp sở dẫn xuất có tên khác gọi hàm ta dùng tên hàm l Nếu hàm thành viên lớp sở dẫn xuất có tên giống gọi hàm ta gắn thêm tên lớp sở trước tên hàm toán tử :: Tên_lớp_cơ_sở::Tên_hàm() Ví dụ: l l Những kế thừa? Tất liệu hàm thành viên lớp sở, tức đốitượng lớp dẫn xuất kế thừa tất liệu hàm thành viên lớp sở Truy nhập liệu lớp sở từ lớp dẫn xuất: Mặc dù đốitượng lớp dẫn xuất chứa thành viên liệu định nghĩa lớp sở lớp dẫn xuất ta truy nhập thành viên liệu private lớp sở (trừ thành viên public protected) Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng vdp2c61.cpp 13 I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất l Gọi hàm thành viên lớp sở từ lớp dẫn xuất: 14 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 15 I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất Trong OOP, hàm thành viên lớp sở lớp dẫn xuất làm công việc tương tự chồng hàm (trùng) rõ ràng dễ nhớ l Nếu sử dụng chồng hàm gọi hàm thành viên lớp sở phải gắn với tên lớp, không trình biên dịch hiểu gọi hàm thành viên lớp dẫn xuất l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 16 Bài tập nhà l I.7 Các hàm không kế thừa Viết chương trình quản lý nhân trường đại học Nhân chia làm loại: Giáo viên, Cán quản lý nhân viên phục vụ Thông tin lưu trữ giáo viên gồm có: tên, mã số, học hàm, học vị Thông tin lưu trữ Cán quản lý gồm có tên, mã số chức vụ Thông tin lưu trữ Nhân viên phục vụ gồm có tên mã số Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng l l 17 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Chương 15 Sự kế thừa 19 I.7 Các hàm không kế thừa l I Giới thiệu kế thừa I.1 Tầm quan trọng kế thừa OOP I.2 Sự sử dụng lại I.3 Sự kế thừa thiết kế hướngđốitượng I.4 Cú pháp kế thừa I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất I.6 Các hàm “không kế thừa” I.7 Sự kế thừa mối quan hệ loại Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Có vài hàm đặc biệt không tự động kế thừa Đó hàm làm công việc cho riêng lớp sở lớp dẫn xuất Có hàm vậy: hàm chồng toán tử gán =, hàm tạo (constructor) hàm hủy (destructor) Hàm tạo lớp sở phải tạo liệu lớp sở, hàm tạo lớp dẫn xuất phải tạo liệu lớp dẫn xuất Bởi hàm tạo lớp sở lớp dẫn xuất tạo liệu khác nên chúng thay Do hàm tạo không tự động kế thừa l 18 Toán tử gán = lớp dẫn xuất phải gán giá trị cho liệu lớp dẫn xuất, toán tử = lớp sở phải gán giá trị cho liệu lớp sở Đây công việc khác nhau, toán tử không tự động kế thừa Hàm hủy lớp dẫn xuất hủy liệu lớp dẫn xuất Nó không huỷ đốitượng lớp sở; phải gọi hàm hủy lớp sở để làm việc Hơn nữa, hàm hủy làm công việc khác nên chúng không tự động kế thừa Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 20 Chương 15 Sự kế thừa I.8 Sự kế thừa mối quan hệ loại class alpha //lớp sở { public: void memfunc() //hàm thành viên public {} }; class beta:public alpha //lớp dẫn xuất { }; void main() { void anyfunc(alpha); //khai báo, hàm có đối số alpha aa; //đối tượng kiểu alpha beta bb; //đối tượng kiểu beta aa=bb; //đối tượng beta gán cho biến alpha anyfunc(bb); //đối tượng beta truyền đối số alpha } I Giới thiệu kế thừa I.1 Tầm quan trọng kế thừa OOP I.2 Sự sử dụng lại I.3 Sự kế thừa thiết kế hướngđốitượng I.4 Cú pháp kế thừa I.5 Truy nhập thành viên lớp sở từ lớp dẫn xuất I.6 Các hàm không kế thừa I.7 Sự kế thừa mối quan hệ loại Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 21 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng I.8 Sự kế thừa mối quan hệ loại Chương 15 Sự kế thừa Sự kế thừa LTHĐT thể mối quan hệ “loại” giới thực Các đốitượng lớp dẫn xuất loại đốitượng lớp sở Trong C++, ta gán đốitượng lớp dẫn xuất cho đốitượng lớp sở truyền đốitượng lớp dẫn xuất cho hàm có đối số lớp sở Tuy nhiên ta không nên làm điều đốitượng lớp dẫn xuất thường có kích thước lớn đốitượng lớp sở I Giới thiệu kế thừa II Hàm tạo, hàm huỷ kế thừa III Điều khiển việc truy nhập lớp sở IV Kế thừa nhiều mức V Hợp thành kế thừa VI Kế thừa bội l l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 22 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 23 24 II.1 Hàm tạo, hàm hủy với đốitượng lớp dẫn xuất II Hàm tạo, hàm huỷ kế thừa Hàm tạo, hàm hủy với đốitượng lớp dẫn xuất Khi phải viết hàm tạo cho lớp dẫn xuất l l l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 25 II.1 Hàm tạo, hàm hủy với đốitượng lớp dẫn xuất l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 27 II Hàm tạo, hàm huỷ kế thừa Khi định nghĩa đốitượng lớp dẫn xuất, không hàm tạo thực mà hàm tạo lớp sở thực Trên thực tế, hàm tạo lớp sở thực trước Bởi đốitượng lớp sở đốitượng - phần - đốitượng lớp dẫn xuất, cần tạo phận trước tạo toàn thể Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Như vậy, tạo đốitượng lớp dẫn xuất, hàm tạo lớp sở gọi trước sau hàm tạo lớp dẫn xuất gọi Khi đốitượng bị hủy, hàm hủy gọi theo thứ tự ngược lại: đốitượng lớp dẫn xuất hủy trước sau đến đốitượng lớp sở Trong danh sách khởi tạo hàm tạo lớp dẫn xuất gọi hàm tạo lớp sở Ví dụ: danxuat(int n):coso(n) { } Hàm tạo, hàm hủy với đốitượng lớp dẫn xuất Khi phải viết hàm tạo cho lớp dẫn xuất 26 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 28 II.2 Khi phải viết hàm tạo cho lớp dẫn xuất III Điều khiển việc truy nhập lớp sở Chúng ta tạo đốitượng hàm tạo mà lớp đốitượng Bởi vậy, có hàm tạo n đối số lớp sở phải định nghĩa hàm tạo >=n >=n đối số lớp dẫn xuất l Bất kỳ cần hàm tạo có đối số để tạo đốitượng lớp dẫn xuất ta phải viết hàm tạo lớp dẫn xuất l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Các định danh truy nhập Che giấu liệu lớp sở 29 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Chương 15 Sự kế thừa III.1 Các định danh truy nhập I Giới thiệu kế thừa II Hàm tạo, hàm huỷ kế thừa III Điều khiển việc truy nhập lớp sở IV Kế thừa nhiều mức V Hợp thành kế thừa VI Kế thừa bội Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 31 l l 30 Khi chưa có kế thừa, hàm thành viên lớp truy nhập tới tất có lớp dù public hay private, bên lớp truy nhập tới thành viên public Khi kế thừa xuất hiện, khả truy nhập mở rộng cho lớp dẫn xuất Các hàm thành viên lớp dẫn xuất truy nhập thành viên public protected lớp sở truy nhập thành viên private Bên lớp dẫn xuất truy nhập thành viên public lớp dẫn xuất Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 32 III.1 Các định danh truy nhập III.2 Che giấu liệu lớp sở Sự kế thừa khả truy nhập l l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 33 Một giao diện lớp bao gồm hàm dùng để truy nhập Thiết kế lớp cho hai giao diện: giao diện public để bên lớp sử dụng giao diện protected để để lớp dẫn xuất sử dụng Không nên để giao diện truy nhập trực tiếp liệu Một thuận lợi việc để liệu lớp sở private thay đổi mà không làm ảnh hưởng tới lớp dẫn xuất Để có truy nhập liệu lớp sở, viết thêm hàm thành viên cho lớp sở Các hàm nên để protected protected,, chúng phần giao diện protected dùng lớp dẫn xuất lớp lớp dẫn xuất truy nhập Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng III.2 Che giấu liệu lớp sở Chương 15 Sự kế thừa Dữ liệu lớp sở nên để private hay protected? Để liệu protected có thuận lợi không cần viết thêm hàm lớp sở để truy nhập liệu từ lớp dẫn xuất Tuy nhiên, cách tốt Nói chung, liệu lớp nên để private (trừ số trường hợp đặc biệt) Dữ liệu public bị thay đổi hàm đâu chương trình, điều nên tránh Dữ liệu protected bị thay đổi hàm lớp dẫn xuất Bất kỳ người rút lớp từ lớp khác có quyền truy nhập tới liệu protected lớp Sẽ an toàn tin cậy lớp dẫn xuất truy nhập trực tiếp liệu lớp sở I Giới thiệu kế thừa II Hàm tạo, hàm huỷ kế thừa III Điều khiển việc truy nhập lớp sở IV Kế thừa nhiều mức V Hợp thành kế thừa VI Kế thừa bội l l l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 34 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 35 36 IV Kế thừa nhiều mức l Chương 15 Sự kế thừa Sự kế thừa nhiều mức có nghĩa không lớp beta rút từ lớp alpha alpha,, lớp gama rút từ beta beta,, lớp delta rút từ gama v.v class alpha { }; class beta:public alpha { }; class gama:public beta { }; class delta:public gama { }; Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng I Giới thiệu kế thừa II Hàm tạo, hàm huỷ kế thừa III Điều khiển việc truy nhập lớp sở IV Kế thừa nhiều mức V Hợp thành kế thừa VI Kế thừa bội 37 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng IV Kế thừa nhiều mức l V Hợp thành kế thừa Một lớp truy nhập tới tất lớp tổ tiên nó, cụ thể hàm thành viên delta truy nhập tới liệu public protected gama, beta, alpha Tất nhiên chúng truy nhập tới thành viên private lớp trừ Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 39 l Sự hợp thành đặt đốitượng bên đốitượng khác hay, đứng phía lập trình, định nghĩa đốitượng lớp bên mô tả lớp khác class alpha { }; class beta { private: alpha obj; }; 38 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 40 V Hợp thành kế thừa l VI Kế thừa bội Khi sử dụng kế thừa tốt hợp thành? l Khi cần mối quan hệ “loại” lớp l Khi cần mảng đốitượng lớp sở để chứa đốitượng lớp dẫn xuất l Khi cần mảng trỏ lớp sở để chứa địa đốitượng lớp dẫn xuất l Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng class Base1 { }; class Base2 { }; class Derv:public Base1,public Base2 { }; 41 Chương 15 Sự kế thừa I Giới thiệu kế thừa II Hàm tạo, hàm huỷ kế thừa III Điều khiển việc truy nhập lớp sở IV Kế thừa nhiều mức V Hợp thành kế thừa VI Kế thừa bội Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng Kế thừa bội có nghĩa lớp dẫn xuất kế thừa từ hai hay nhiều lớp sở khác 42 Bài giảng LTHDTLTHDT-Phần 2, Chương 15 GV Ngô Công Thắng 43 Chương 16 Sự kết nối động Hàm ảo hàm bạn I.1 I Giới thiệu hàm ảo đa hình I Hàm ảo đa hình II Ứng dụng đa hình III Lớp trừu tượng, hàm tạo hàm hủy ảo IV Hàm bạn l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng I.2 I Gọi hàm thành viên qua trỏ lớp sở I Hàm ảo đa hình Giới thiệu hàm ảo đa hình Gọi hàm thành viên qua trỏ lớp sở Sự liên kết động l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Dạng đa hình thứ hai LTHĐT liên quan ttớ ới kế th thừ ừa, hàm ảo trỏ trỏ Ở đa hình hì nh thá tháii thể chỗ: Lời gọ gọii tớ tới mộ hà hàm m thành nh viên làm làm cho các hà hàm m thành viên khác c đượ c thự thực hiệ tuỳ thu thuộ ộc vào o kiể kiểu đố đ ối tượ ượng ng gọ gọii hà hàm m đó Sự đa hình gọi liên kết động Hàm ảo hàm thành viên lớp, giống hàm thành viên thông thường, khác khai báo với từ khóa virtual đặt trước virtual void nhap(); Con trỏ lớp sở chứa địa đốitượng lớp dẫn xuất Bở Bởi đốitượng lớp dẫn xuất loại đốitượng lớp sở nên cácc trỏ trỏ tới đố cá đối tượ tượng ng củ a mộ lớ lớp dẫ d ẫn xuấ xu ất có ki kiể ểu phù hợp vớ với cá c trỏ trỏ tới đố đối tượ ượng ng củ a lớ lớp sở sở Khi mộ lớ lớp sở sở các llớ ớp dẫ dẫn xuấ xuất có cácc hà cá hàm m thành viên trù trùng ng nhau,, cá c hà hàm m nàyy đượ nà c gọi qua trỏ lớp sở hàm thực hàm thành viên lớp sở Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng I.2 Gọi hàm thành viên qua trỏ lớp sở l I.2 I Gọi hàm thành viên qua trỏ lớp sở l Ví dụ: vdp2c71.cpp l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng I.2 I Gọi hàm thành viên qua trỏ lớp sở l Sở dĩ hàm thành viên lớp sở thực trì rình nh biên dị dịch ch bỏ qua nội dung củ a trỏ chọn chọn hà hàm m thành nh viên phù hợp vớ với ki kiể ểu trỏ lớp sở Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng I.3 I Sự liên kết động l l Để gọi hàm thành viên lớp dẫn xuất qua trỏ lớp sở ta cho hàm thành viên lớp sở hàm ảo Khi dùng hàm ảo, trì rình nh biên dị dịch ch lự lựa chọn chọn hà hàm m để th thự ực hiệ dự dựa nộ nội dung của trỏ, trỏ, ch ứ không phả phảii tên kiể kiểu của trỏ trỏ Đây đa hình hình tháii, lời gọi hàm thá mà thực cá c hàm hà m khác c nhau, nhau, tuỳ thu thuộ ộc vào o nộ nội dung của trỏ Nếu lớp sở có hàm ảo trùng tên với hàm thành viên lớp dẫn xuất gọi hàm thành viên lớp dẫn xuất qua trỏ lớp sở trình biên dịch gọi hàm Bởi trình biên dịch phải xếp để lựa chọn hàm thực thời điểm chạy chương trình Việc lự lựa chọ chọn n mộ hà hàm m tạ tạii thờ thời điể điểm chạ chạy y chương trì trình nh đượ c gọ gọii liên kkế ết độ động (dynamic binding) binding) Còn việc lựa chọn hàm thực theo cách thông thường, thời điểm biên dịch, gọi liên kết tĩnh (static binding)) binding Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng II.1 Mảng trỏ trỏ tới đối II.1 tượng lớp khác I.3 I Sự liên kết động l l Sự liên kết động cần nhiều thời gian nhớ liên kết tĩnh: Lời gọi hàm lâu hơn, đốitượng lớp dẫn xuất lớn Tóm lại, để cài đặt liên kết động cần có kế thừa, hàm ảo, trỏ trùng hàm thành viên Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng II Ứng dụng đa hình vdp2c72.cpp 11 II.2 II Phân lập phần chương trình Mảng trỏ trỏ tới đốitượng lớp khác Phân lập phần chương trình l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Một ứng dụng đa hình sử dụng mảng trỏ lớp sở để chứa địa đốitượng lớp dẫn xuất khác Ví dụ: Viết chương trình quản lý giảng viên sinh viên Thông tin giảng viên có tên số báo đăng, thông tin sinh viên có tên điểm TBC Nhập vào số giảng viên sinh viên Đưa hình thông tin giảng viên sinh viên nhập, có kèm theo đánh giá: giáo viên giỏi có số báo >=20 >=20,, sinh viên giỏi có điểm TBC>=9 TBC>=9.0 10 Sự đa hì hình nh thá tháii cũ ng có th thể ể đượ ượcc sử sử dụng dụng để giúp giúp cho việ việc phân lậ lập, hay g gỡ ỡ bỏ phụ thuộc phầ phần chương trì trình nh vào phần chương trì trình nh khácc Các chương trì trình nh OOP đượ đượcc chia thành nh hai phầ phần đượ ượcc viế viết bở nhữ ngườ ngườii lậ lậptrình trì nh khácc tạ tạii cá cácc thờ thời điể điểm khácc Đó phần tạo lớp phần sử dụng lớp Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 12 III Lớp trừu tượng, hàm tạo hàm hủy ảo II.2 II Phân lập phần chương trình l l Việc lậ Việ lập trì trình nh đơn giản giả n chương trìnhtrình của ngườ ngườii sử sử dụng dụng lớp phải làm việc với lớp thay vi nhiề nhiều lớ lớp khác c Điều thực đa hình, dùng các tham chiế chiếu hoặ ho ặc các trỏ trỏ tới cá c đố đối tượ tượng ng để truyề truy ền trả từ hà hàm m Ví dụ 1: Sử dụng đối số tham chiếu Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng vdp2c73.cpp Lớp trừu tượng (abstract class) Hàm tạo ảo hàm hủy ảo 13 Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng III.1 III Lớp trừu tượng II.2 II Phân lập phần chương trình l l Ví dụ 2: Sử dụng đối số trỏ vdp2c74.cpp l Ví dụ 3: Viết lại chương trình quản lý giảng viên sinh viên có sử dụng hàm để truyền trả đốitượng khác l vdp2c75.cpp Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 15 14 Lớp trừu tượng lớp mà đối tượ tượng ng nà o đượ c tạ tạo o từ từ nó,, đóng vai trò lớp sở sở cho cá c lớ lớp dẫ dẫn xuấ xuất Cá Các c lớ lớp trừ trừu tượ tượng ng đượ ượcc cài đặt C C++ ++ cá c hà hàm m ảo tinh khiết (pure virtual function) function) Hàm ảo tinh khiế khiết hà hàm m ảo mà khai báo hàm có thêm ký hiệ hiệu =0 =0 vào sau khai báo hàm Thân củ hàm a hà hàm m ảo có Ví dụ: virtual void show()= show()=0 0; virtual void show()=0 show()=0 { //Các lệnh hàm } Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 16 III.1 III Lớp trừu tượng l l III.2 III Hàm tạo hàm hủy ảo Dấu bằ phải toán toán tử tử gán gá n, giá trị không đượ c gá gán n cho cái gì Cú pháp pháp =0 đơn giản giản cách cách cho trình trì nh biên dịch dịch biế biết rằ mộ hà hàm m tinh khiế ết Để trì trình nh liên kết ngăn chặn việc tạ tạo o mộ đối tượ tượng ng từ lớp trừu tượng, chúng ng ta phải phả i định nghĩ nghĩa a nhấ mộ hà hàm m ảo tinh khiế khiết lớ lớp trừu tượng Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng vdp2c76.cpp l l vdp2c77.cpp 17 Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng III.2 III Hàm tạo hàm hủy ảo l l l 19 III.2 III Hàm tạo hàm hủy ảo Câu hỏi đặt “c “các hà hàm m tạ tạo o có ảo ảo không?” không?” Không Không,, không Cá Các c hàm hà m ảo thể tồn tạ i cho đế đến n hà hàm m tạo tạ o đã hoàn hoàn thành thành nhiệ nhiệm vụ của nó,, cá c hà hàm m tạ tạo o thể ảo ảo Ngoàii ra, Ngoà ra, tạo tạo mộ đố đối tượ tượng ng trình biên dịch cần bi biế ết loại loại đố đối tượ tượng ng tạo tạo ra Do đó cá c hà hàm m tạ tạo o ảo Tráii lại Trá lại, cá c hàm hàm huỷ có th thể ể th thườ ường ng nên ảo ảo Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Khi lớp sở có hàm ảo hàm hủy nên để ảo Nếu không để ảo hàm hủy lớp dẫn xuất không thực hủy đốitượng lớp dẫn xuất thông qua trỏ lớp sở Ví dụ: 18 l Khi lớp sở cần hàm hủy ảo? Khi thỏa mãn điều kiện sau: Cần tạo lớp dẫn xuất từ lớp sở l Các đốitượng lớp dẫn xuất hủy qua trỏ lớp sở l Các hàm hủy lớp sở dẫn xuất thực công việc quan trọng chẳng hạn giải phóng nhớ l l Tóm lại, lớp sở có hàm ảo nên để hàm hủy ảo Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 20 IV Hàm bạn IV.1 IV Giới thiệu hàm bạn l Giới thiệu hàm bạn Những thuận lợi dùng hàm bạn Hàm bạn phá vỡ nguyên tắc bao gói thông tin l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 21 IV.1 IV Giới thiệu hàm bạn l l l Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 23 IV.2 IV Những thuận lợi dùng hàm bạn Hàm bạ bạn n (friend (friend function function)) hà hàm m thông thường, không phả phảii thành nh viên của mộ lớ lớp truy nhậ nhập đượ đượcc tớ tới cá cácc thành nh viên private protected củ a lớ lớp đó Để cho hàm thông thường hàm bạn lớp, mô tả lớp ta viết khai báo hàm với từ khóa friend đứng trước Ví dụ: friend void show(); Chú ý: Trong mô tả lớp chứa khai báo hàm bạn, không chứa định nghĩa hàm bạn Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng Khai báo hàm bạn phần mô tả lớp Tuy nhiên nên để phần public phần giao diện lớp, nghĩ ghĩa a ng ngườ ườii sử dụng dụng lớ lớp nà o cũ ng thể gọi gọi hà hàm m bạ bạn n Theo nguyên tắc bao bọ bọc c cất giấ giấu dữ liliệ ệu LTHĐT, cá c hà hàm m không phả phảii thành nh viên lớp không thể truy nhậ nhập tớ tới dữ liliệ ệu private protected của mộ đố đối tượ tượng ng Tuy nhiên, nhiên, số trường hợp nguyên tắc bất tiệ ti ện Cá Các c hà hàm m bạ bạn n cách cách giả giảii toả bất tiệ ti ện nà y Một hàm khai báo bạn nhiều lớp 22 l Cho phép gọi hàm chồng toán tử bên trái toán tử đốitượng Ví dụ: vdp2c78.cpp Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 24 IV.3 IV Hàm bạn phá vỡ nguyên tắc bao gói thông tin IV.2 IV Những thuận lợi dùng hàm bạn l Hàm bạn cho phép dùng ký hiệu hàm: Đôi mộ hà hàm m bạ bạn n cho mộ cú pháp pháp gọi gọi hà hàm m rõ ràng ràng hà hàm m thành nh viên viên Ví dụ, dụ, giả sử chúng ng ta muố muốn mộ hà hàm m tính bình bình phương đố đối tượ tượng ng obj, cách viết sqr(obj) rõ ràng cách viết obj.sqr() Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng l l 25 Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng l 27 IV.3 IV Hàm bạn phá vỡ nguyên tắc bao gói thông tin VI.2 VI Những thuận lợi dùng hàm bạn l Khi đưa vào hàm bạn, mộ mặ mặt thêm vào o sự linh hoạ hoạtt cho ngôn ngữ ngữ, mặt khác c không cò n giữ gi ữ nguyên ttắ ắc có các thành nh viên m mớ ới th ể truy nh nhậ ập dữ liliệ ệu private củ a lớ lớp Một hà hàm m thông thường muốn bạ bạn n lớp phảii đượ phả c khai bá báo o bên mô tả lớp đó Thường ng ngườ ườii lậ lập trì trình nh không truy nh nhậ ập mã nguồn cá c lớ lớp nên không th thể ể chuyể chuy ển mộ hà hàm m thành nh m mộ ột hà hàm m bạ bạn n lớp lớp Ở khí khía a cạ cạnh nh nà nàyy tí tính nh toàn n vẹ vẹn n củ a lớ lớp vẫ cò n đượ ượcc giữ giữ Hàm bạn cầu nối lớp: Giả sử ta có hà hàm m tí tính nh toá toán n cá cácc đố đối tượ tượng ng củ a hai lớ lớp khácc nhau Có th thể ể hàm hàm nà y có đối số số cácc đố cá đối tượ tượng ng củ a hai lớ lớp đó tính tính toá toán n liliệ ệu private củ a chúng ng Làm để dùng trực tiếp liệu private hai lớp chúng liên quan với nhau? Hàm bạn hai lớp làm điều Ví dụ: l l Mặc dù vậy, hạm bạn gây lộn xộn tư tưởng LTHĐT Tóm lại, sử dụng hàm thành viên tr trừ có lý bắ bắt buộ buộc phả phảii sử sử dụng dụng hàm hà m bạ bạn n vdp2c79.cpp Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 26 Bài giảng LTHDTLTHDT-Phần 2, Chương 16 GV Ngô Công Thắng 28 ... 12 Lập trình hướng đối tượng (tiếp) Đối tượng (object) Người ta tổng hợp đặc tính LTHDT: Tất đối tượng Chương trình hướng đối tượng coi tập hợp đối tượng tương tác với Mỗi đối tượng chương trình. .. Ngô Công Thắng Lập trình hướng đối tượng (tiếp) Bài giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng 11 Lập trình hướng đối tượng (tiếp) Đối tượng ² Tóm lại, lập trình hướng đối tượng Dữ liệu cách... giảng LTHDT-Phần 2, Chương 10 GV Ngô Công Thắng Lập trình hướng đối tượng (tiếp) Lập trình hướng đối tượng (tiếp) ² Trong lập trình hướng đối tượng liệu ẩn để tránh thay đổi vô tình làm hỏng