OOP, SOLID trong lập trình hướng đối tượng

Author: - Posted: 11/06/22 - Update: 17/06/23

a. OOP (Object Oriented Programming) bao gồm các đặc tính sau
- Tính đóng gói (Encapsulation): che giấu thông tin bên trong đối tượng
- Tính kế thừa (Inheritance)
- Tính đa hình (Polymorphism): các Instance của Class sẽ thực thi chức năng giống nhau theo cách khác nhau
- Tính trừu tượng (Abstraction)

b. SOLID bao gồm 5 nguyên tắc đó là:
- Single responsibility principle (SRP)
- Open/Closed principle (OCP)
- Liskov substitution principe (LSP)
- Interface segregation principle (ISP)
- Dependency inversion principle (DIP)

1. Single responsibility priciple (SRP)

- Mỗi lớp chỉ nên chịu trách nhiệm về một nhiệm vụ cụ thể nào đó mà thôi.
- Đặt vấn đề

- Giải pháp

2. Open/Closed principle (OCP)

- Không được sửa đổi một Class có sẵn, nhưng có thể mở rộng bằng kế thừa.

3. Liskov substitution principe (LSP)

- Trong một chương trình, các object của class con có thể thay thế class cha mà không làm thay đổi tính đúng đắn của chương trình
- Đặt vấn đề

- Giải pháp: tách chim cánh cụt ra interface riêng

4. Interface segregation principle

- Một client không bao giờ bị buộc phải thực hiện một interface mà nó không sử dụng hoặc client không nên bị buộc phải phụ thuộc vào các phương thức mà chúng không sử dụng.
- Thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể.
- Đặt vấn đề

- Giải pháp

5. Dependency inversion principle (DIP)

- Các module cấp cao không nên phụ thuộc vào các modules cấp thấp. Cả 2 nên phụ thuộc vào abstraction.
- Interface (abstraction) không nên phụ thuộc vào chi tiết, mà ngược lại (Các class giao tiếp với nhau thông qua interface)
- Đặt vấn đề:

- Giải pháp: