Hiểu biết cơ bản về lập trình hướng đối tượng (OOP)
Đăng lúc: 09:50 AM - 13/12/2022 bởi Charles Chung - 1186Trong bài viết này tôi sẽ đưa ra những khái niệm và giải thích đơn giản dễ hiểu về lập trình hướng đối tượng giúp các bạn sinh viên mới tiếp cận với phương pháp lập trình này có thể nắm bắt một cách nhanh chóng và triển khai nó với một ngôn ngữ OOP cụ thể như C#, Java, PHP...
1. OOP là gì?
- Các ngôn ngữ lập trình dựa trên 2 yếu tố là dữ liệu và cách thao tác với dữ liệu. Đối với các ngôn ngữ lập trình như pascal, c tập trung nhiều vào việc thao tác với dữ liệu hơn là dữ liệu của nó, điều này sẽ gặp phải vấn đề liên quan đến tái sử dụng và bảo trì. Lập trình hướng đối tượng (OOP) ra đời tập trung vào dữ liệu hơn là cách thao tác với dữ liệu và nó giải quyết được một số vấn đề ở trên như:
- Khả năng tái sử dụng cao
- Dễ dàng bảo trì
- Dễ dàng mở rộng dự án
- Bảo mật cao
- Tiết kiệm tài nguyên đáng kể cho hệ thống.
- Vậy OOP là gì? OOP viết tắt của Object Oriented Programming – Là một phương pháp lập trình dựa trên khái niệm về Class và Object. OOP tập trung vào dữ liệu của đối tượng hơn là cách thao tác với dữ liệu đó, nó giúp cho việc quản lý code trở lên dễ dàng, dễ bảo trì và tái sử dụng.
2. Đối tượng (object) là gì?
Đối tượng là một thực thể xác định bao gồm 2 thành phần cơ bản:
- States: biểu diễn các dữ liệu của đối tượng, có thể gọi là các thuộc tính (properties)
- Behaviors: biểu diễn các hành vi của đối tượng, có thể gọi là các phương thức (methods)
3. Các khái niệm liên quan
- Property (thuộc tính): là đặc điểm mô tả đối tượng, ví dụ chúng ta có một đối tượng là Laptop thì Model, Ram, Chip là các Property.
- Attribute (đặc điểm): bổ sung thêm thông tin cho đối tượng, ví dụ chúng ta có một đối tượng Laptop có thuộc tính Model mang giá trị là "HP 8770W" thì giá trị đó chính là Attribute.
- Operation (hành động): là sự khái quát các thao tác xử lý logic có thể được thực hiện của đối tượng, nó được xác định trước khi quyết định đưa vào trong class để định nghĩa, ví dụ chúng ta đang phân tích các lớp Shape và xác định chúng có các hành động 'getArea()' and 'getPerimeter()'.
- Method (phương thức): là phương thức mà trong đó xác định hành động sẽ được xử lý và đưa ra như thế nào trong một lớp cụ thể, ví dụ trong lớp Circle thì phương thức getArea() sẽ sử dụng pi*radius^2, còn trong lớp Rectangle thì phương thức getArea() sẽ sử dụng width*height.
- Message (thông điệp): là một lời gọi phương thức trên một đối tượng cụ thể, ví dụ c1.getArea() trong đó c1 là đối tượng Circle còn getArea() là phương thức.
4. Lớp (class) là gì?
- Tập các đối tượng có cùng tính chất và hành vi được nhóm thành một lớp với một tên đại diện, như vậy có thể hiểu lớp (class) là khuôn mẫu để tạo ra các đối tượng. Mỗi lớp thường có các biến để mô tả các đặc điểm, các phương thức để mô tả hành vi của đối tượng. Lớp được sử dụng như một kiểu dữ liệu để tạo ra đối tượng thông qua các phương thức khởi tạo.
5. Sự khác nhau giữa Class và Object.
- Class bạn có thể hiểu là một bản thiết kế hay một khuân mẫu, Object là một thực thể thể hiện dựa trên bản thiết kế hoặc khuôn mẫu đó, ví dụ chúng ta có một bản thiết kế xe(Car) được gọi là lớp thì khi sản xuất ra chiếc xe Audi, CRV, Santafe với các thông số cụ thể thì các xe đó gọi là đối tượng, bạn hãy quan sát hình vẽ bên dưới
6. Các tính chất trong lập trình hướng đối tượng.
- Abstraction (trừu tượng hóa): là quá trình ẩn đi việc thực thi chi tiết không cần thiết, và chỉ hiển thị những thứ cần thiết tới người dùng. Abstraction giải quyết vấn đề ở mức Design. Trong ngôn ngữ OOP sử dụng abstract class và interface để biểu diễn Abstraction.
- Encapsulation (bao bọc): Hạn chế việc truy cập tới các thành viên bên trong của lớp, tức là ẩn đi những chi tiết hoặc những cơ chế làm thế nào để đối tượng có thể thực hiện được những thứ đó. Encapsulation giải quyết vấn đề ở mức thực thi. Trong ngôn ngữ OOP nó thể hiện ở “access modifier”.
- Inheritance (kế thừa): Là cơ chế cho phép một lớp chia sẻ những thuộc tính và hành động đã được định nghĩa cho một hoặc nhiều lớp khác, một số từ khóa liên quan đến kế thừa như:
- Subclass, Childclass là lớp được kế thừa từ lớp khác.
- Baseclass, Super class: lớp cho lớp khác kế thừa.
- Multiple Inheritance: Một lớp con có thể kế thừa từ một hoặc nhiều lớp khác.
- Polymorphism (đa hình): là sự biểu hiện đa dạng của cùng một hành động trên các đối tượng tạo ra từ cùng một lớp hoặc từ các lớp kế thừa. Trong ngôn ngữ OOP nó thể hiện ở 2 loại phương thức Overload và Override.
thay lời cảm ơn!
Các bài cũ hơn
- Sử dụng giải thuật MD5 trong các ngôn ngữ lập trình và các hệ quản trị cơ sở dữ liệu khác nhau. (11:23 AM - 08/12/2022)
- Gọi Web API sử dụng Ajax JQuery (09:41 AM - 08/12/2022)
- Tìm hiểu Bridge Design Pattern với ví dụ sử dụng ngôn ngữ C# (08:57 PM - 06/12/2022)
- Cách GET-POST dữ liệu Multipart lên Web API trong ASP.NET Core (10:22 AM - 02/12/2022)
- Upload ảnh kèm dữ liệu JSON trong ASP.NET Core Web API (09:25 AM - 01/12/2022)