Tổng hợp lý thuyết OOP | Lập trình hướng đối tượng
Trừu tượng - Cách nhìn khái quát hóa về một tập các đối tượng có chung các đặc điểm được quan tâm (và bỏ qua những chi tiết không cần thiết). Bài tập giúp bạn tham khảo, củng cố kiến thức và ôn tập đạt kết quả cao
Môn: Lập trình hướng đối tượng (OOP)
Trường: Trường Đại học Công nghệ Thông tin, Đại học Quốc gia Thành phố Hồ Chí Minh
Thông tin:
Tác giả:
Preview text:
CÂU 1. KẾ THỪA – ƯU / NHƯỢC – VÍ DỤ VI PHẠM // khái niệm
Thừa kế - Cho phép một lớp D (dẫn xuất) có thừa hưởng lại những thuộc tính, phương thức từlớp C (cơ sở), như thể các
thuộc tính và thao tác đó đã được định nghĩa tại lớp D. Cho phép cài đặt nhiều quan hệ giữa các đối tượng: Đặc biệt hóa – Tổng quát hóa. // ưu - nhược
• Cho phép xây dựng một lớp từ lớp đã có.
• Cho phép chia sẻ các thông tin chung, đồng thời nâng cấp và bảo trì một cách dễ dàng.
• Định nghĩa sự tương thích giữ các lớp nhờ đó ta có thể chuyển kiểu tự động.
• Các chức năng kế thừa sẽ hoạt động chậm hơn bình thường. // trường hợp vi phạm
• Lớp con định nghĩa lại (override) các phương thức của lớp cha một cách không đúng đắn.
• Lớp con không sử dụng các thuộc tính và phương thức của lớp cha một cách chính xác.
• Lớp con có thêm thuộc tính và phương thức không cần thiết, làm mất đi tính kế thừa của lớp cha.
• Lớp cha thay đổi các thuộc tính và phương thức của mình mà không thông báo -> lớp con không sử dụng các
thuộc tính và phương thức của lớp cha một cách chính xác. // ví dụ
CÂU 2. TRỪU TƯỢNG HÓA – ƯU / NHƯỢC – VÍ DỤ // khái niệm
Trừu tượng - Cách nhìn khái quát hóa về một tập các đối tượng có chung các đặc điểm được quan tâm (và bỏ qua
những chi tiết không cần thiết). // ưu - nhược
• Dễ quản lí mã nguồn
• Dễ thay đổi cài đặt
• Đơn giản hóa mã nguồn
• Khó khăn trong việc hiểu mã
• Đòi hỏi kỹ thuật thiết kế tốt // ví dụ Nguoi Name: string Date_Of_Birth: string ID/CMND: string Sleep: void Eat: void Drink: void
CÂU 3. ĐA HÌNH – ƯU / NHƯỢC – VÍ DỤ // khái niệm
Đa hình - Là cơ chế cho phép một tên thao tác hoặc thuộc tính có thể được định nghĩa tại nhiều lớp và có thể có nhiều
cài đặt khác nhau tại mỗi lớp trong các lớp đó. // ưu - nhược
• Mã nguồn linh hoạt – Dễ mở rộng
• Tăng tính tái sử dụng của mã
• Khó khăn trong việc hiểu và bảo trì mã.
• Hiệu suất chậm hơn.
• Khó khan trong việc thiết kế. // ví dụ
CÂU 4. ĐÓNG GÓI – ƯU / NHƯỢC – VÍ DỤ // khái niệm
Đóng gói - Nhóm những gì có liên quan với nhau vào làm một, để sau này có thể dùng một cái tên để gọi đến. // ưu - nhược
• Bảo mật dữ liệu, ngăn chặn các đối tượng khác truy cập trực tiếp đến dữ liệu và thay đổi nó một cách không đúng đắn.
• Đảm bảo tính nhất quán, đảm bảo rằng dữ liệu của đối tượng chỉ được truy cập và thay đổi thông qua các phương thức công khai • Dễ dàng bảo trì mã
• Khó khăn trong việc mở rộng (khi một đối tượng được đóng gói quá chặt chẽ) • Hiệu suất chậm hơn // ví dụ CÂU 5
a. Phân biệt các phạm vi truy cập private, protected và public. Trong class Class con Ngoài class Private Y N N Protected Y Y N Public Y Y Y
b. Cho biết ý nghĩa và mục đích của các hàm get/set trong một lớp.
• Hàm get: truy vấn dữ liệu private từ các đối tượng. Đặc điểm quan trọng của phương thức truy vấn là nó không
nên thay đổi trạng thái hiện tại của đối tượng.
• Hàm set: cập nhật dữ liệu private từ các đối tượng. Phương thức cập nhật thường để thay đổi trạng thái của đối
tượng bằng cách sửa đổi một hoặc nhiều thành viên dữ liệu của đối tượng đó. CÂU 6.
a. Phân biệt khái niệm lớp và đĀi tượng trong lập trình hướng đĀi tượng.
• Lớp là một mô tả trừu tượng của nhóm các đối tượng cùng bản chất, là kết quả của việc khái quát hóa các thực
thể, bao gồm thành phần dữ liệu (thuộc tính) và thành phần xử lý dữ liệu (phương thức/hàm thành phần).
• Đối tượng là thực thể được xác định trong thời gian hệ thống hướng đối tượng hoạt động, gồm có dữ liệu và các
hàm xử lý trên dữ liệu đó.
CÂU 7. KẾ THỪA PRIVATE, PROTECTED, PUBLIC
// viết hay không cũng được
Thành phần private ở lớp cha thì không truy xuất được ở lớp con
Kế thừa public: Lớp con kế thừa public từ lớp cha thì các thành phần protected của lớp cha trở thành protected của lớp
con, các thành phần public của lớp cha trở thành public của lớp con.
Kế thừa private: Lớp con kế thừa private từ lớp cha thì các thành phần protected và public của lớp cha trở thành private của lớp con.
Kế thừa protected: Lớp con kế thừa protected từ lớp cha thì các thành phần protected và public của lớp cha trở thành protected của lớp con.
CÂU 8. Trình bày các đặc điểm quan trọng của lập trình hướng đĀi tượng (CÓ RỒI – TỔNG HỢP THÔI)
• Trừu tượng - Cách nhìn khái quát hóa về một tập các đối tượng có chung các đặc điểm được quan tâm (và bỏ
qua những chi tiết không cần thiết).
• Đóng gói - Nhóm những gì có liên quan với nhau vào làm một, để sau này có thể dùng một cái tên để gọi đến.
• Thừa kế - Cho phép một lớp D (dẫn xuất) có thừa hưởng lại những thuộc tính, phương thức từlớp C (cơ sở), như
thể các thuộc tính và thao tác đó đã được định nghĩa tại lớp D. Cho phép cài đặt nhiều quan hệ giữa các đối
tượng: Đặc biệt hóa – Tổng quát hóa.
• Đa hình - Là cơ chế cho phép một tên thao tác hoặc thuộc tính có thể được định nghĩa tại nhiều lớp và có thể có
nhiều cài đặt khác nhau tại mỗi lớp trong các lớp đó. CÂU 9 // khái niệm
• Lớp cơ sở trừu tượng (abstract class) bao gồm ít nhất một hoặc nhiều phương thức thuần ảo (pure virtual
method) và/hoặc thuộc tính thuần ảo, và các lớp con kế thừa từ lớp này phải cài đặt lại các phương thức và
thuộc tính này. Hàm thuần ảo được xác định là một hàm virtual có kết thúc khai báo hàm là “= 0”.
• Trong trường hợp lớp cơ sở trừu tượng có tất cả các phương thức là thuần ảo thì được gọi là interface (giao diện). // ví dụ CÂU 10. HÀM THUẦN ẢO / khái niệm
• Hàm thuần ảo (pure virtual function) là một phương thức mà không có định nghĩa, chỉ có khai báo, có kết thúc khai báo hàm là “= 0”.
• Không cần dùng ở lớp cơ sở, dùng ở lớp dẫn xuất. Lớp dẫn xuất bắt buộc phải định nghĩa lại hàm thuần ảo. // ví dụ
CÂU 11. OVERLOAD (t愃ऀi chng) và OVERRIDE (ghi đ攃) Overload Override Khái niệm
Phương thức trùng tên lớp nhưng khác
Lớp con có một hoặc nhiều phương thức giống lớp nhau về đối số cha của nó Hành vi
Thêm / mở rộng cho hành vi
Thay đổi hành vi hiện tại phương thức của phương thức Đa hình
Thể hiện tính đa hình tại compile
Thể hiện tính đa hình tại run time. DS tham số
Danh sách tham số khác nhau (số lượng,
Danh sách tham số phải giống nhau.
thứ tự, kiểu dữ liệu) Giá trị trả về
Kiểu trả về có thể khác nhau.
Kiểu trả về bắt buộc phải giống nhau Phạm vi
Xảy ra trong phạm vi cùng 1 class.
Xảy ra giữa 2 class có quan hệ kế thừa Quyền truy cập
Có thể có quyền truy cập khác nhau
Con phải có quyền truy cập bằng hoặc lớn hớn cha
CÂU 12. HÀM FRIEND – LỚP FRIEND – ƯU/ NHƯỢC – VÍ DỤ // khái niệm
Hàm bạn (friend function): là một hàm nằm ngoài lớp nhưng được khai báo là bạn của lớp đó, có quyền truy cập vào các
thành viên private hoặc protected của lớp mà nó là bạn của nó.
Lớp bạn (friend class): là một lớp được khai báo là bạn của lớp khác, có quyền truy cập vào các thành viên private hoặc protected của lớp đó. // ưu điểm
• Cho phép các hàm và lớp bên ngoài truy cập vào các thành viên private và protected của lớp, giúp mở rộng tính
đa dạng và linh hoạt của mã nguồn.
• Giảm độ phức tạp của mã nguồn bằng cách tránh việc phải viết nhiều phương thức getter và setter để truy cập
và thay đổi các thuộc tính private. // nhược điểm
• Làm giảm tính đóng gói của lớp
• Làm giảm tính bảo mật của lớp
• Làm cho mã nguồn trở nên khó hiểu và khó bảo trì hơn // ví dụ
CÂU 13. CONSTRUCTOR – DESTRUCTOR // constructor Khái niệm
Hàm tạo - Là một phương thức của lớp dùng để tạo dựng một đối tượng mới, dùng để khởi gán giá trị cho các thuộc tính
của đối tượng. Hàm tạo có thể có tham số hoặc không có tham số và có thể được định nghĩa một hoặc nhiều lần để hỗ
trợ việc khởi tạo đối tượng với các tham số khác nhau. Đặc điểm
• Tên phương thức trùng tên lớp.
• Không giá trị trả về.
• Được thực hiện sau khi vừa khai báo đối tượng.
• Có nhiều phương thức trong một lớp
• Hàm phương thức truy vấn ở Public Có 3 dạng:
• Phương thức thiết lập mặc định: thiết lập thông tin cho đối tượng bằng giá trị mặc định.
• Phương thức sao chép: Xây dựng đối tượng mới giống hoàn toàn đối tượng có sẳn.
• Phương thức thiết lập nhận tham số đầu vào.
Ý nghĩa (không ghi cũng được)
• Cho phép thiết lập thông tin ban đầu
• Ép kiểu dữ liệu của đối tượng này bằng kiểu dữ liệu của đối tượng khác // destructor Khái niệm
Hàm hủy - Là một phương thức của lớp dùng để thực hiện một số công việc có tính “dọn dẹp” trước khi đối tượng được
hủy bỏ. Được sử dụng để giải phóng tài nguyên đã được cấp phát cho đối tượng, như bộ nhớ động, file. Hàm hủy không
có tham số và được định nghĩa duy nhất một lần Đặc điểm
• Tên phương thức trùng tên lớp nhưng có dấu “~”
• Không có giá trị trả về
• Không tham số đầu vào
• Được tự động hóa thự hiện khi đối tượng hết phạm vi hoạt động
• Thuộc nhóm đối tượng xử lý
• Chỉ có một phương thức phá hủy trong một lớp
• Chỉ có một lần phá hủy và thực hiện // ví dụ
CÂU 14. PHÉP GÁN – TẠI SAO PHẢI BUILD PHÉP GÁN – VÍ DỤ // khái niệm
Phép gán - Là một toán tử đặc biệt được sử dụng để gán giá trị của một đối tượng cho một đối tượng khác của cùng một lớp.
Phép gán được sử dụng để thực hiện sao chép giá trị của một đối tượng sang một đối tượng khác, hoặc để gán giá trị
mặc định cho một đối tượng khi nó được khởi tạo. // tại sao cần thiết?
• Phép gán mặc định của C++ không đủ để sao chép đối tượng của một lớp.
• Phép gán được định nghĩa cho lớp giúp đảm bảo tính đóng gói và bảo mật dữ liệu.
• Phép gán cũng giúp tăng tính linh hoạt và tiện lợi cho việc sử dụng các đối tượng trong chương trình. // ví dụ CÂU 15 // khái niệm
1. Trong lập trình không hướng đối tượng, chúng ta có thể định nghĩa nhiều hàm có cùng tên nhưng có các tham số khác
nhau để thực hiện các tác vụ khác nhau.
2. Trong lập trình hướng đối tượng, chúng ta có thể định nghĩa nhiều phương thức có cùng tên trong một lớp nhưng có
các tham số khác nhau để thực hiện các tác vụ khác nhau.
3. Nạp chồng hàm bạn (friend function): trong lập trình hướng đối tượng, chúng ta có thể định nghĩa nhiều hàm bạn có
cùng tên nhưng có các tham số khác nhau để hỗ trợ phương thức trong một lớp. // ví dụ 1. 2. 3.
CÂU 16. SO SÁNH HÀM TẠO SAO CHÉP VÀ PHÉP GÁN Hàm tạo sao chép Phép gán
Được gọi khi một đối tượng mới được tạo bằng cách sao Được sử dụng khi đối tượng đã được khởi tạo trước đó
chép một đối tượng đã có
Tạo một bản sao của đối tượng đã có
Gán giá trị của một đối tượng cho một đối tượng khác
Nếu không được định nghĩa, trình biên dịch sẽ tự động
Cần được định nghĩa rõ ràng.
tạo một hàm tạo sao chép mặc định Không trả về giá trị
Trả về một tham chiếu đến đối tượng được gán.