Lập Trình Hướng Đối Tượng căn bản, 4 tính chất của oop?

lập trình hướng đối tượng

Lập trình hướng đối tượng hiện nay là một khái niệm quen thuộc bạn nào học lập trình đều phải học. Lúc đi phỏng vấn cũng được hỏi nhiều về chủ đề này. oop là nền tảng cho hầu hết các design pattern hiện nay. Bài viết này đúc rút kinh nghiệm thực tế và độ hiểu của mình về OOP. Các bạn tham khảo bài viết bên dưới của mình rồi cho mình xin đóng góp ý kiến để bài viết được chất lượng hơn nhé.

1. Lập trình hướng đối tượng(OOP) là gì?

Lập trình hướng đối tượng(oriented programming – oop): là một kỹ thuật lập trình cho phép ta tạo ra các đối tượng trong code, trừu tượng hoá các đối tượng ở trong thực tế.

Lớp (class):

Nói đơn giản lớp nó giống như là một bản mẫu, khuôn mẫu. Ở đó ta khai báo các thuộc tính (attribute) và phương thức (method) nhằm mục đích miêu tả để từ đó ta tạo ra được những object (đối tượng).

Dưới đây là một ví dụ về class trong C# – lớp House:

"lớp

Đối tượng (object):

Một đối tượng bao gồm 2 thông tin: thuộc tính và phương thức.

  • Phương thức (Method): là những hành động mà đối tượng có thể thực hiện.

Ví dụ: một con chó có thể kêu, chạy, ăn, uống…

  • Thuộc tính(Attribute):  là những thông tin, đặc điểm của đối tượng.

Ví dụ: con chó có mắt, mũi, chân, đuôi…

Sự khác nhau giữa đối tượng và lớp:

Lớp: là tập hợp các đối tượng có cùng thuộc tính và hành động (trong lập trình gọi là phương thức), là tập hợp những đối tượng có cùng điểm chung nào đấy, được tập hợp lại với nhau.

Đối tượng: đối tượng trong thế giới thực chia sẻ 2 đặc điểm chính, trạng thái và hành vi. Con người có trạng thái (tên, tuổi) và hành vi (chạy, ngủ).

Các đối tượng phần mềm tương tự về mặt khái niệm với các đối tượng trong thế giới thực: chúng cũng bao gồm trạng thái và hành vi liên quan. Một đối tượng lưu trữ trạng thái của nó trong các trường và phơi bày hành vi của nó thông qua các phương thức.

Ưu điểm của OOP

  • Dễ dàng quản lý code khi có sự thay đổi chương trình.
  • Dễ mở rộng dự án.
  • Tiết kiệm được tài nguyên đáng kể cho hệ thống.
  • Nguyên lí đóng gói và che giấu thông tin bảo vệ lập trình an toàn ,nên oop Có tính bảo mật cao.
  • Có tính tái sử dụng cao. Những hệ thông đối tượng ngày càng được mở rộng và nâng cấp thành những hệ thống lớn.
  • Tránh bị lặp và mở rộng khả năng sử dụng các lớp mà không thực hiện lại thông qua tính kế thừa.

2. Một số khái niệm cơ bản trong lập trình hướng đối tượng

4 đặc tính của lập trình hướng đối tượng (Object oriented program):

Tính đóng gói (Encapsulation):

Tính chất này không cho phép người dùng trực tiếp tác động đến dữ liệu bên trong đối tượng mà phải thông qua các phương thức mà đối tượng cung cấp. Tính chất này đảm bảo tính toàn vẹn, bảo mật của đối tượng, dễ dàng quản lý và sử dụng.

Đóng gói để tiện lợi cho việc quản lý và sử dụng. Tức là mỗi “gói” được xây dựng để thực hiện một nhóm chức năng đặc trưng của riêng “gói” đó.

Ví dụ trong c#:

Nó được thể hiển qua các access modifier, trong c# có 5 kiểu access modifiers:

  1. public
  2. private
  3. protected
  4. protected internal
  5. internal
  • public: Không có bất kỳ giới hạn nào khi truy cập vào các thành viên công khai.
  • private: Truy cập bị hạn chế trong phạm vi của định nghĩa Class. Đây là loại phạm vi truy cập mặc định nếu không được chính thức chỉ định.
  • protected: Truy cập bị giới hạn trong phạm vi định nghĩa của Class và bất kỳ các class con thừa kế từ class này.
  • protected internal: Truy cập bị giới hạn trong phạm vi Assembly hiện tại và trong class định nghĩa hoặc các class con.
  • internal: Truy cập bị giới hạn trong phạm vi Assembly của dự án hiện tại, nếu trong cùng assembly của dự án thì nó giống hệt như public.

Tính kế thừa (Inheritance):

Tính kế thừa là sự liên quan giữa hai class với nhau, trong đó có class cha và class con. Khi kế thừa class con được hưởng tất cả các phương thức và thuộc tính của class cha. Nhưng nó chỉ được truy cập các thành viên public và protected của class cha. Không được phép truy cập đến thuộc tính private của class cha.

Ví dụ:

tính kế thừa hướng đối tượng
tính kế thừa hướng đối tượng

Tính đa hình (Polymorphism):

Tính đa hình là tính chất mà các đối tượng thuộc các lớp khác nhau có thể hiểu cùng 1 thông điệp theo các cách khác nhau.

Để thể hiện được tính đa hình trong oop:

  • Các lớp phải có quan hệ kế thừa với cùng một lớp cha nào đó.
  • Phương thức đa hình phải được ghi đè (override) ở các lớp con.

Tính trừu tượng (Abstraction):

Tính trừu tượng là khả năng ẩn chi tiết triển khai, chỉ cung cấp thông tin các tính năng tới người dùng.

Tính trừu tượng được thể hiện qua abstract class và interface.

Xem thêm: Interface trong c#, các đặc điểm của interface, mục đích sử dụng

Thực ra thì lớp trừu tượng vẫn là một lớp thôi. Nhưng nó trừu tượng ở chỗ, nó không thể được dùng để tạo ra các đối tượng như những lớp bình thường khác. Lớp trừu tượng khi này nó chỉ là một cái sườn, để mà bạn có thể tạo ra các lớp con của nó dựa vào sự ràng buộc từ cái sườn này.

3. Tính chất hướng đối tượng ở một số ngôn ngữ:

Phần lớn các ngôn ngữ lập trình giống như Java, C++, C#, Ruby… đều dùng theo mô hình lập trình hướng DT.

Lập trình hướng đối tượng Java

Bản chất Java là ngôn ngữ thuần hướng đối tượng, vì vậy đây là ngôn ngữ bậc cao nên việc học lập trình ngay từ đầu bạn sẽ thấy khó hiểu với những từ khóa class, new,… Đó là lý do không khuyến khích những bạn mới bắt đầu học lập trình lựa chọn Java.

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

Lập trình hướng đối tượng  python

Ngôn ngữ python là một ngôn ngữ lập trình hướng đối tượng mạnh. Vì vậy, việc tạo ra và sử dụng các đối tượng là hết sức dễ dàng.

Lập trình hướng đối tượng  C#

C# hiện nay là ngôn ngữ hướng đối tượng tiên tiến nhất, nó kế thừa những điểm mạnh của ngôn ngữ lập trình hướng đối tượng C++ và ngôn ngữ Java. Đồng thời nó cũng loại bỏ đi những sự phức tạp của lập trình hướng đối tượng của hai ngôn ngữ này.

Oop trong php

Ngôn ngữ lập trình PHP là một ngôn ngữ để lập trình web. Nó hỗ trợ cả lập trình theo hướng thủ tục và theo hướng đối tượng. Khi chúng ta mới bắt đầu làm quen với PHP phần lớn thường hay gặp các ví dụ được lập trình theo hướng thủ tục tuy nhiên trong ở thực tế và trong những framework PHP hiện nay phần lớn mã PHP đều được viết theo hướng đối tượng.

OoP trong Javascript

Lập trình hướng đối tượng c++

C++ là ngôn ngữ lập trình hướng đối tượng khá phổ biến. C++ thường được giới thiệu cho người mới bắt đầu tìm hiểu về lập trình hướng đối tượng. C++ là ngôn ngữ bậc thấp. Ưu điểm của C++ thường được sử dụng cho các ứng dụng cần tốc độ, ví dụ như các trò chơi, phần mềm nhúng.

4. Kết luận

Trên đây là một số điều mình tổng hợp được về Lập trình hướng đối tượng. Mong mọi người đóng góp những ý kiến để bài viết của mình ngày càng hoàn thiện hơn. Cảm ơn tất cả mọi người!

Xem thêm: Nguyên Tắc Solid lập trình

Có thể bạn quan tâm:

  1. Tìm hiểu mô hình lập trình MVVM chi tiết, so sánh với các mô hình khác.
Subscribe
Notify of
guest

0 bình luận
Inline Feedbacks
View all comments