top of page

14 Câu hỏi và trả lời về OOPs

  • Writer: PhongPX
    PhongPX
  • Oct 10, 2020
  • 4 min read

1, OOP là gì ?

OOP viết tắt cho Object Oriented Programing hay còn gọi là lập trình hướng đối tượng. Khi đó một chương trình sẽ được tổ chức thành nhiều đối tượng với nhau, mỗi đối tượng là một trường cụ thể của Class.


2, Các tính chất cơ bản của OOP là gì ?

OOP có 4 tính chất là :

  • Kế thừa (Inheritance)

  • Đa hình (Polymorphism)

  • Đóng gói (Encapsulation)

  • Trừu tượng (Abstraction)

3, Class là gì ?

Class có thể hiểu là một template (mẫu), nó miêu tả các đặc trưng, tính chất của một object.


4, Object là gì ?

Object chính là một hình thái cụ thể của Class. Object có các đặc điểm riêng như State, Behavior, Identity.


5, Tính đóng gói (Encapsulation) là gì ?

Tính đóng gói là một đặc trưng của Object, nó quy ước tính bảo mật và sự cho phép truy cập data của Object đối với các thành phần bên ngoài.

Có 3 từ khóa phổ biến để đảm bảo tính đóng gói của Object là:

  • Public

  • Protected

  • Private

6, Đa hình (Polymorphsim) là gì ?

Đa hình chính là các Class con thực thi hoặc viết lại các methods đã được định nghĩa trong lớp cha. Tính chất này rất quan trọng và là một tính chất được sử dụng nhiều trong lập trình hướng đối tượng. Có 2 trường hợp đa hình lớn là Overloading và Overriding.


7, Kế thừa (Inheritance) là gì ?

Kế thừa là một tính chất mà ở đó cho phép 1 Class có quyền được sử dụng, chia sẽ các phương thức mà đã được định nghĩa trong 1 Class khác. Việc sử dụng tài nguyên từ 1 Class được gọi là Đơn kế thừa (Single Inheritance), nếu sử dụng tài nguyên từ nhiều Class thì được gọi là Đa kế thừa (Multiple Inheritance).


8, Manipulators là gì ?

Hiều đơn giản nhất đây chính là những hàm viết sẵn của C++ mà chỉ cần gọi là chương trình có thể hiểu được mục đích của hàm đó là gì.

Ví dụ trong C++ chúng ta có: endl, setw, setfill


9, Constructor là gì ?

Construtor là một phương thức (methods) được sử dụng để khởi tạo trạng thái cho một Object, được định nghĩa trong Class của object đó. Constructor được khởi tạo vào thời điểm Object được khởi tạo.

Các quy tắc khi viết một Constructor là:

  • Tên của Constructor nên được trùng với tên của Class.

  • Constructor không trả về giá trị viết


10, Destructor là gì ?

Là phương thức được định nghĩa bằng cách đặt trùng tên với Class và thêm ký tự ~ vào phía trước.


#include <iostream>

class Node
{
public:
	// Constructor
	Node()
	{
		std::cout << "Constructor Called";
	}
	
	// Destructor
	~Node()
	{
		std::cout << "Destructor Called";
	}
}

int main()
{
	Node node;

	return 0;
}

So sánh Constructor và Destructor:


Giống nhau:

  • Cùng tên với tên lớp

  • Không có bất kỳ kiểu gì trả về kể cả kiểu void

  • Được gọi tự động

  • Khi không khai báo thì trình biên dịch sẽ tự tạo hàm xây dựng và hàm hủy mặc nhiên.

Khác nhau:

10, Abstract Class là gì ?

Abstract Class là Class mà không được dùng để khởi tạo Object, mà chỉ có thể được sử dụng để kế thừa nó. Trong Abstract Class thì nó thể chứa cả Abstract Method và Non-Abstract Method.


11, Exception Handling là gì ?

Exeption được hiểu như là một event (Sự kiện) xảy ra trong quá trình thực thi một chương trình. Exception có một số loại như là Runtime Exception, Error Exception. Việc xử lý các Exception đó thông qua 3 từ khóa là Try Catch và Throw.


12, Sự khác nhau giữa Overriding và Overloading

Hiểu đơn giản như sau: Overloading cho phép phương thức đó cùng tên với phương thức cha nhưng khác nhau về đối số truyền vào và có thể trả về kiểu giá trị khác so với phương thức cha.

Trong khi đó, Overriding lại bắt buộc phương thức con phải cùng đối số truyền vào và kiểu giá trị trả về phải giống nhau.


13, Sự khác nhau giữa Class và Object

Tham khảo tại đây.

Hiểu đơn giản là Class giống như mẫu thiết kế ngôi nhà của kiến trúc sư. Khi mẫu thiết kế đó được sử dụng để đi xây nhà, thì mỗi ngôi nhà được xây nên lại chính là Object.


14, Điểm yếu và điểm mạnh của lập trinh OOP

Điểm mạnh:

  • Tận dụng việc sử dụng lại code thông qua tính kế thừa và đa hình.

  • Dữ liệu được bảo mật và bảo vệ thông qua tính đóng gói.

  • Chia vấn đề phức tạp thành nhiều phần đơn giản để phân tích và giải quyết.

  • Dễ mở rộng code và bảo trì.

  • Phát triển nhanh hơn và tốn ít chi phí

Điểm yếu:

  • Khó hiểu hơn do có nhiều khái niệm, quy tắc, tính chất cho lập trình viên.

  • Đối với những chương trình lớn, đòi hỏi nhiều Class và nhiều tính chất, phương thức thì lập trình OOP khiến chương trình chạy chậm hơn so với lập trình hướng thủ tục do nó đòi hỏi nhiều thực thi.

  • Code nhiều hơn so với bình thường.

 
 
 

Comments


Liên lạc tôi bằng cách dưới đây nha !

Thanks for submitting!

bottom of page