ÔN TP
1. Lp trình hướng đối tượng là gì? Lập trình hướng đối tượng (OOP -
Object-Oriented Programming) mt pơng pháp lp trình trong
đó chương trình đưc t chc thànhc đối ợng tương tác vi nhau.
OOP tp trung vào vic mô hình hóac đối tượng trong thế gii thc
và x lý chúng dưi dạngc đối tượng trong chương trình. Li ích:
Kh năng tái s dng li ngun
OOP hình hóa nhng th phc tp i dng cu trúc đơn gin.
Code OOP th s dng li, giúp tiết kim tài nguyên.
Giúp sa li d dàng hơn. So vi vic tìm li nhiu v trí trong code thì
tìm li trong các lp ược cu trúc t trưc) đơn gin ít mt thi
gian hơn.
tính bo mt cao, bo v thông tin thông qua đóng gói.
D m rng d án.
2. Các đặc đim quan trng ca lp trình ng đối ng? Các đặc đim
quan trng ca lập trình hướng đối tượng bao gm:
Tính trừu tưng (Abstraction): Cho phép to ra các lp tru tưng
t tính cht chung ca mt nhóm đối tượng, và t đó tạo ra các lp c
th.
Tính đóng gói (Encapsulation): Cho phép n thông tin bên trong đối
ng ch tiết lc phương thc công cng đ tương tác vi đối
ng.
Tính kế tha (Inheritance): Cho phép tái s dng li ngun y
dng các lp dn xut tc lp hin .
Tính đa hình (Polymorphism): Cho phép mt phương thc th
nhiu hình thc thc hin khác nhau tùy thuộc vào đối tượng gi.
3. Lp đối ng gì? Đối ng ?
Lp đối ng là mt cu trúc d liu trong lp trình hướng đối tưng,
mô t c thuc tính (biến thành viên) và hành vi (phương thc) ca
một đối tưng.
Đối tượng là mt thc th c th đưc to ra t lớp đối tượng, có th
trng thái riêng và thc hiện c hành đng.
4. Phân bit các phm vi truy xut private, protected, public? Phm vi
truy xut trong lập trình hướng đối tượng:
Private: Các thành viên private ch th đưc truy cp t bên trong
cùng mt lp.
Protected: Các thành viên protected th đưc truy cp t bên trong
cùng mt lpc lp dn xut t lớp đó.
Public: Các thành viên public th đưc truy cp t bt k nơi nào.
5. Constructor gì? Constructor mc định?
Constructor mt phương thc đặc bit trong mt lp đưc gi để
khi to đối tưng. cùng tên vi lp không kiu tr v.
Constructor đưc gi t động khi mt đối tưng mi được to.
Constructor mc định constructor không tham s.
6. Destructor gì?
Destructor một phương thc đặc bit trong mt lớp được gi khi đối
ng b hy. Nó cùng tên vi lớp, đưc đặt trưc bi ký t ~
không có tham s.
Destructor đưc s dng để gii phóng tài nguyên đối ng đã s
dng.
7. Kế tha gì?
Kế tha có th được định nghĩa là quá trình mà mt lớp (class) có được
các thuc tính ca mt lp khác
Kế tha trong lp trình ng đối ng quá trình to ra các lp dn
xut (lp con) t mt lớp đã tồn ti (lớp cơ sở hoc lp cha).
Lp con kế tha các thuc tính phương thc ca lp cha, cho phép
tái s dng ngunm rng chc ng của lp cha.
Mi quan h 1-1 or nhiu-nhiu or đặc bit hoá-đa dng hoá
8. Phân bit các kiu kế tha private, protected, public? Các kiu kế tha
trong lập trình hướng đối tưng:
Kế tha private: c thành viên private ca lp cha không đưc kế
tha cho lp con.
Kế tha protected: c thành viên protected public ca lp cha
đưc kế tha cho lp con vi quyn truy cp là protected.
Kế tha public: Các thành viên protected public ca lp cha đưc kế
tha cho lp con vi quyn truy cp là protected và public tương ng.
9.
Đa nh ?
Đa hình trong lp trình ng đối ng cho phép mt phương thc có
th có nhiu hình thc thc hin khác nhau tùy thuc vào đối tượng
gi.
Điu này cho phép gi phương thc da trên kiu đối ng thc tế
thay vì kiểu đối tượng được khai báo.
10.
Lp tru ng gì? Phương thc thun o ?
Lp trừu tưng (abstract class) là mt lp mà không th to ra c đối
ng trc tiếp t nó, ch đưc s dng để làm lp s cho các lp
dn xut. Lp tru tượng cha ít nht một phương thc thun o (pure
virtual method). có chung bn cht vi nhiu lp con khác.
Hàm o ca lp tru ng -> các lp con phi viết li hàm đó ->
ghi đè phương thc.
Phương thc thun o mt phương thc không định nghĩa trong
lớp cơ sở, mà ch định nghĩa trong c lớp dn xut.
11. Đa năng hóa toán tử gì? Đa năng hóa toán t (operator
overloading) là quá trình định nghĩa li c toán t để hot động vi
các kiu d liu tùy chnh. Khi ta đa năng hóa toán t, ta th định
12. Đa hình thi gian chy/biên dch
Đa hình thi gian chy (Runtime Polymorphism):
Đa hình thời gian chy là kh ng của mt đối tượng đ x lý các
phương thc theo hình thc của đi tượng thc tế đưc liên kết ti thi
đim chy.
Đa hình thời gian chy thường được đạt được thông qua vic s dng
k thut ghi đè phương thc (method overriding) con tr ớng đối
ng (polymorphic pointers) hoc tham chiếu (polymorphic
references).
Đa hình thi gian chy cho phép chúng ta thc hin các phương thc
cùng n trong các lp khác nhau, nhưng hành vi ca phương thc s
đưc xác đnh ti thi đim chy da trên đi ng đang tham chiếu
đến.
Đa hình thời gian chy thường được s dng trong kch bản đa hình
động, khi ta mun thay đổi hành vi của đối tượng trong quá trình chy
chương trình.
Đa hình thi gian biên dch (Compile-time Polymorphism):
Đa hình thi gian biên dch kh năng ca mt phương thc để th
x các đối s khác nhau da trên kiu d liu ca chúng ti thi
đim biên dch.
Đa hình thời gian biên dch thường đưc đạt được thông qua vic s
dng các k thut như quy tc quy định (function overloading) c
mu hàm (function templates).
Đa hình thời gian biên dch cho phép chúng ta s dụngc phương
thc cùng tên nhưng cách hot động kc nhau da trên loi s
ợng các đi s đưc truyn vào.
Đa hình thời gian biên dch thường đưc s dng trong kch bn đa
hình tĩnh, khi ta đã biết trước các kiu d liu tham s ca phương
thc ti thời điểm biên dch.
16.
Giao din:
Tp hp các phương thc ca 1 đối ng.
mt chc năng mà người lp trìnhth thêm vào bt k lp nào
=> cung cấp phương tiện cho người lp trình tương tác với đối tượng
đó.
Mt chc năng bao gm 01 hoc nhiu phương thc
Quan h vi lp: “A can do b”.
A lp hin thc (implement) b.
b mt chc năng ca A.
d: Xe ti th ch hàng, Xe Buýt th ch khách...
Trong C++, vic khai báo mt interface nghĩa chúng ta khai báo
mt lp vi hàm thun o một phương thức hy o (virtual
destructor).
th hiu Interface mt bn t hành vi hoc kh năng ca mt
class không đưa ra cách thc hin c th ca class đó như thế nào.
=> Bt buc các lp khác phi cài đặc li phương thc y để hoàn
thin lp.

Preview text:

ÔN TẬP
1. Lập trình hướng đối tượng là gì? Lập trình hướng đối tượng (OOP -
Object-Oriented Programming) là một phương pháp lập trình mà trong
đó chương trình được tổ chức thành các đối tượng tương tác với nhau.
OOP tập trung vào việc mô hình hóa các đối tượng trong thế giới thực
và xử lý chúng dưới dạng các đối tượng trong chương trình. Lợi ích:
• Khả năng tái sử dụng lại mã nguồn
• OOP mô hình hóa những thứ phức tạp dưới dạng cấu trúc đơn giản.
• Code OOP có thể sử dụng lại, giúp tiết kiệm tài nguyên.
• Giúp sửa lỗi dễ dàng hơn. So với việc tìm lỗi ở nhiều vị trí trong code thì
tìm lỗi trong các lớp (được cấu trúc từ trước) đơn giản và ít mất thời gian hơn.
• Có tính bảo mật cao, bảo vệ thông tin thông qua đóng gói.
• Dễ mở rộng dự án.
2. Các đặc điểm quan trọng của lập trình hướng đối tượng? Các đặc điểm
quan trọng của lập trình hướng đối tượng bao gồm:
• Tính trừu tượng (Abstraction): Cho phép tạo ra các lớp trừu tượng mô
tả tính chất chung của một nhóm đối tượng, và từ đó tạo ra các lớp cụ thể.
• Tính đóng gói (Encapsulation): Cho phép ẩn thông tin bên trong đối
tượng và chỉ tiết lộ các phương thức công cộng để tương tác với đối tượng.
• Tính kế thừa (Inheritance): Cho phép tái sử dụng lại mã nguồn và xây
dựng các lớp dẫn xuất từ các lớp hiện có.
• Tính đa hình (Polymorphism): Cho phép một phương thức có thể có
nhiều hình thức thực hiện khác nhau tùy thuộc vào đối tượng gọi.
3. Lớp đối tượng là gì? Đối tượng là gì?
• Lớp đối tượng là một cấu trúc dữ liệu trong lập trình hướng đối tượng,
mô tả các thuộc tính (biến thành viên) và hành vi (phương thức) của một đối tượng.
• Đối tượng là một thực thể cụ thể được tạo ra từ lớp đối tượng, có thể có
trạng thái riêng và thực hiện các hành động.
4. Phân biệt các phạm vi truy xuất private, protected, public? Phạm vi
truy xuất trong lập trình hướng đối tượng:
• Private: Các thành viên private chỉ có thể được truy cập từ bên trong cùng một lớp.
• Protected: Các thành viên protected có thể được truy cập từ bên trong
cùng một lớp và các lớp dẫn xuất từ lớp đó.
• Public: Các thành viên public có thể được truy cập từ bất kỳ nơi nào.
5. Constructor là gì? Constructor mặc định?
• Constructor là một phương thức đặc biệt trong một lớp được gọi để
khởi tạo đối tượng. Nó có cùng tên với lớp và không có kiểu trả về.
Constructor được gọi tự động khi một đối tượng mới được tạo.
• Constructor mặc định là constructor không có tham số. 6. Destructor là gì?
• Destructor là một phương thức đặc biệt trong một lớp được gọi khi đối
tượng bị hủy. Nó có cùng tên với lớp, được đặt trước bởi ký tự ~ và không có tham số.
• Destructor được sử dụng để giải phóng tài nguyên mà đối tượng đã sử dụng. 7. Kế thừa là gì?
• Kế thừa có thể được định nghĩa là quá trình mà một lớp (class) có được
các thuộc tính của một lớp khác
• Kế thừa trong lập trình hướng đối tượng là quá trình tạo ra các lớp dẫn
xuất (lớp con) từ một lớp đã tồn tại (lớp cơ sở hoặc lớp cha).
• Lớp con kế thừa các thuộc tính và phương thức của lớp cha, cho phép
tái sử dụng mã nguồn và mở rộng chức năng của lớp cha.
• Mối quan hệ 1-1 or nhiều-nhiều or đặc biệt hoá-đa dạng hoá
8. Phân biệt các kiểu kế thừa private, protected, public? Các kiểu kế thừa
trong lập trình hướng đối tượng:
• Kế thừa private: Các thành viên private của lớp cha không được kế thừa cho lớp con.
• Kế thừa protected: Các thành viên protected và public của lớp cha
được kế thừa cho lớp con với quyền truy cập là protected.
• Kế thừa public: Các thành viên protected và public của lớp cha được kế
thừa cho lớp con với quyền truy cập là protected và public tương ứng. 9. Đa hình là gì?
• Đa hình trong lập trình hướng đối tượng cho phép một phương thức có
thể có nhiều hình thức thực hiện khác nhau tùy thuộc vào đối tượng gọi.
• Điều này cho phép gọi phương thức dựa trên kiểu đối tượng thực tế
thay vì kiểu đối tượng được khai báo. 10.
Lớp trừu tượng là gì? Phương thức thuần ảo là gì?
• Lớp trừu tượng (abstract class) là một lớp mà không thể tạo ra các đối
tượng trực tiếp từ nó, mà chỉ được sử dụng để làm lớp cơ sở cho các lớp
dẫn xuất. Lớp trừu tượng chứa ít nhất một phương thức thuần ảo (pure
virtual method). Nó có chung bản chất với nhiều lớp con khác.
• Hàm ảo của lớp trừu tượng -> các lớp con phải viết lại hàm đó -> ghi đè phương thức.
• Phương thức thuần ảo là một phương thức không có định nghĩa trong
lớp cơ sở, mà chỉ có định nghĩa trong các lớp dẫn xuất. 11.
Đa năng hóa toán tử là gì? Đa năng hóa toán tử (operator
overloading) là quá trình định nghĩa lại các toán tử để hoạt động với
các kiểu dữ liệu tùy chỉnh. Khi ta đa năng hóa toán tử, ta có thể định 12.
Đa hình thời gian chạy/biên dịch
• Đa hình thời gian chạy (Runtime Polymorphism):
• Đa hình thời gian chạy là khả năng của một đối tượng để xử lý các
phương thức theo hình thức của đối tượng thực tế được liên kết tại thời điểm chạy.
• Đa hình thời gian chạy thường được đạt được thông qua việc sử dụng
kỹ thuật ghi đè phương thức (method overriding) và con trỏ hướng đối
tượng (polymorphic pointers) hoặc tham chiếu (polymorphic references).
• Đa hình thời gian chạy cho phép chúng ta thực hiện các phương thức
cùng tên trong các lớp khác nhau, nhưng hành vi của phương thức sẽ
được xác định tại thời điểm chạy dựa trên đối tượng đang tham chiếu đến.
• Đa hình thời gian chạy thường được sử dụng trong kịch bản đa hình
động, khi ta muốn thay đổi hành vi của đối tượng trong quá trình chạy chương trình.
• Đa hình thời gian biên dịch (Compile-time Polymorphism):
• Đa hình thời gian biên dịch là khả năng của một phương thức để có thể
xử lý các đối số khác nhau dựa trên kiểu dữ liệu của chúng tại thời điểm biên dịch.
• Đa hình thời gian biên dịch thường được đạt được thông qua việc sử
dụng các kỹ thuật như quy tắc quy định (function overloading) và các
mẫu hàm (function templates).
• Đa hình thời gian biên dịch cho phép chúng ta sử dụng các phương
thức cùng tên nhưng có cách hoạt động khác nhau dựa trên loại và số
lượng các đối số được truyền vào.
• Đa hình thời gian biên dịch thường được sử dụng trong kịch bản đa
hình tĩnh, khi ta đã biết trước các kiểu dữ liệu và tham số của phương
thức tại thời điểm biên dịch. 16. Giao diện:
• Tập hợp các phương thức của 1 đối tượng.
• Là một chức năng mà người lập trình có thể thêm vào bất kỳ lớp nào
=> cung cấp phương tiện cho người lập trình tương tác với đối tượng đó.
• Một chức năng bao gồm 01 hoặc nhiều phương thức
• Quan hệ với lớp: “A can do b”.
• A là lớp hiện thực (implement) b.
• b là một chức năng của A.
• Ví dụ: Xe tải có thể chở hàng, Xe Buýt có thể chở khách...
• Trong C++, việc khai báo một interface có nghĩa là chúng ta khai báo
một lớp với hàm thuần ảo và một phương thức hủy ảo (virtual destructor).
• Có thể hiểu Interface là một bản mô tả hành vi hoặc khả năng của một
class mà không đưa ra cách thực hiện cụ thể của class đó như thế nào.
=> Bắt buộc các lớp khác phải cài đặc lại phương thức này để hoàn thiện lớp.