CT4 Thanh Bình, Võ Cường, TP.Bắc Ninh +84 986 687 612 info@telsky.vn

OOP là gì? Giải thích dễ hiểu về lập trình đối tượng

Trang Chủ OOP là gì? Giải thích dễ hiểu về lập trình đối tượng
Seo web giá rẻ

OOP là gì? Giải thích dễ hiểu về lập trình đối tượng

Đây là một chủ đề được nhắc đến thường xuyên. Trong bài viết ngày hôm nay hãy cùng TELSKY tìm hiểu về khái niệm, các đặc điểm và tính chất của lập trình đối tượng (OOP) nhé!

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

lập trình đối tượng (OOP) là gì?

Lập trình hướng đối tượng (Object Oriented Programmingviết tắt: OOP) là một kỹ thuật lập trình cho phép lập trình viên tạo ra các đối tượng trong code trừu tượng hóa các đối tượng thực tế trong cuộc sống. Nói đến đây có thể các bạn chưa hiểu để mình giải thích rõ hơn:

Đối tượng (Object) có thể là con người, điện thoại, máy tính, yasuo, leesin … và điểm chung là đều gồm 2 thành phần chính là:

  • Thuộc tính (Attribute): là những thông tin, đặc điểm của đối tượng.
  • Phương thức (Method): là những hành động mà đối tượng có thể thực hiện.

Mình lấy một ví dụ là máy vi tính cho các bạn dễ hiểu nha: 

  • Máy tính sẽ có các thuộc tính như: màu sắc, kích thước, bộ nhớ, …
  • Và các phương thức như: quét virus, tắt máy, khởi động máy, mở LoL …

Khi một đối tượng có những đặc tính như nhau sẽ được gom lại thành một lớp đối tượng (class) và cũng sẽ có 2 thành phần là thuộc tính và phương thức. Lớp (class) cũng có thể được dùng để định nghĩa một kiểu dữ liệu mới.

Với ví dụ máy vi tính trên ta hiểu lớp (class) máy vi tính có:

  • Các thuộc tính như: màu sắc, kích thước, bộ nhớ, …
  • Và các phương thức như: quét virus, tắt máy, khởi động máy, mở LoL …

Và đối tượng (object) có thể là các dòng máy như Asus, Acer, Lenovo, Thinkpad, … đều mang đặc tính của lớp máy vi tính.

Tại sao cần phải lập trình đối tượng?

Nếu như trước đây chúng ta lập trình với hướng thủ tục thì sẽ chia thành các hàm để xử lý, thì giờ đây khi sử dụng hướng đối tượng thì chúng ta sẽ chia thành các đối tượng để xử lý.

tại sao cần phải lập trình đối tượng?

Vì lập trình hướng đối tượng ra đời sau nên nó khắc phục được tất cả các điểm yếu của các phương pháp lập trình trước đó. Cụ thể nó có các ưu điểm sau:

  • Dễ dàng quản lý code khi có sự thay đổi chương trình.
  • Dễ mở rộng dự án.
  • Có tính bảo mật cao.
  • Có thể sử dụng mã nguồn, tiết kiệm tài nguyên.

Các đặc tính cơ bản của lập trình đối tượng (OOP)

Có 4 đặc tính cơ bản sau:

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

Đây là kỹ thuật giúp bạn che giấu đi những thông tin bên trong đối tượng bằng cách sử dụng phạm vi truy cập private cho các thuộc tính, muốn giao tiếp hay lấy ra các thông tin của đối tượng thì phải thông qua các phương thức public, từ đó sẽ hạn chế được các lỗi khi phát triển chương trình. Tính chất này cũng giống với trong thực tế, bạn không thể thấy được các thuộc tính thực của một người (tính cách, sở thích, các thông tin riêng tư khác, …), những thứ mà bạn biết đều là thông qua các hành động của người đó. Ví dụ người đó nói cho bạn biết về sở thích, tuổi, … nhưng các thông tin này chưa chắc đã thực sự là thuộc tính thật của người đó (giống với việc các getter không trả về giá trị thực của thuộc tính mà trả về một giá trị khác).

Các dữ liệu và phương thức có liên quan với nhau được đóng gói thành các lớp để tiện cho việc quản lý và sử dụng. Tức là mỗi lớp được xây dựng để thực hiện một nhóm chức năng đặc trưng của riêng lớp đó.

tính đóng gói

Ngoài ra, đóng gói còn để che giấu một số thông tin và chi tiết cài đặt nội bộ để bên ngoài không thể nhìn thấy.

Nói chung trạng thái đối tượng không hợp lệ thường do: chưa được kiểm tra tính hợp lệ, các bước thực hiện không đúng trình tự hoặc bị bỏ qua nên trong OOP có một quy tắc quan trọng cần nhớ đó là phải luôn khai báo các trạng thái bên trong của đối tượng là private và chỉ cho truy cập qua các public/protected method/property.

Ví dụ ta thấy một viên thuốc chữa cảm. Chúng ta chỉ biết nó chữa cảm sổ mũi nhức đầu và một số thành phần chính, còn cụ thể bên trong nó có những hoạt chất gì thì hoàn toàn không biết.

Tính kế thừa (Inheritance)

Nó cho phép xây dựng một lớp mới dựa trên các định nghĩa của lớp đã có. Có nghĩa là lớp cha có thể chia sẽ dữ liệu và phương thức cho các lớp con. Các lớp con khỏi phải định nghĩa lại, ngoài ra có thể mở rộng các thành phần kế thừa và bổ sung thêm các thành phần mới. Tái sử dụng mã nguồn 1 cách tối ưu, tận dụng được mã nguồn. Một số loại kế loại kế thừa thường gặp: đơn kế thừa, đa kế thừa, kế thừa đa cấp, kế thừa thứ bậc.

tính kế thừa

Khi bắt đầu xây dựng ứng dụng chúng ta sẽ bắt đầu thiết kế định nghĩa các lớp trước. Thông thường một số lớp có quan hệ với những lớp khác, chúng có những đặc tính giống nhau.

VD: 2 lớp Android, iPhone

Mỗi lớp đều đại diện cho một loại smartphone khác nhau nhưng lại có những thuộc tính giống nhau như gọi điện, nhắn tin, chụp hình. Thay vì sao chép những thuộc tính này, ta nên đặt chúng vào một lớp chung gọi là lớp cha. Chúng ta có thể định nghĩa lớp cha – trong trường hợp này là Smartphone và có những lớp con kế thừa từ nó, tạo ra một mối quan hệ cha/con.

Tính đa hình (Polymorphism)

Như bạn đã biết, lập trình hướng đối tượng là phương pháp tư duy và giải quyết bài toán lập trình theo hướng thực tế. Do đó, các tính chất của nó cũng sẽ gắn liền với thực tế nên trước hết bạn cần hiểu về tính đa hình trong thực tế. Đa hình được hiểu là trong từng hoàn cảnh, từng trường hợp khác nhau thì các đối tượng sẽ đóng các vai trò khác nhau. Ví dụ, cùng là một người nhưng khi ở công ty thì có vai trò là nhân viên, khi đi siêu thị thì có vai trò là khách hàng, hay khi ở trường thì lại có vai trò là học sinh, … => cùng là một người nhưng có nhiều vai trò khác nhau nên đây chính là đa hình trong thực tế.

Tính đa hình là một hành động có thể được thực hiện bằng nhiều cách khác nhau. Đây lại là một tính chất có thể nói là chứa đựng hầu hết sức mạnh của lập trình hướng đối tượng.

Hiểu một cách đơn giản hơn: Đa hình là khái niệm mà hai hoặc nhiều lớp có những phương thức giống nhau nhưng có thể thực thi theo những cách thức khác nhau.

Ví dụ như ở phần trên, mỗi một smartphone kế thừa từ lớp cha Smartphone nhưng có thể lưu trữ dữ liệu trên cloud theo những cách khác nhau. Android lưu trữ bằng Google Drive iPhone lưu trên iCloud.

tính đa hình

Một ví dụ về đa hình trong thực tế. Ta có 2 con vật: chó, mèo. Cả 2 con vật này đều là lớp động vật. Nhưng khi ta bảo cả 2 động vật kêu thì con chó sẽ kêu gâu gâu, con mèo sẽ kêu meo meo.

Vậy trong ví dụ chó, mèo xem như là các đối tượng. 2 con vật có thể hiểu cùng kêu nhưng theo các cách khác nhau.

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

Trừu tượng là tính chất mà đơn giản hóa đi những thông tin bên trong đối tượng, nó cho phép ta giao tiếp với các thành phần của đối tượng mà không cần phải biết về cách mà các thành phần này được xây dựng (chính xác hơn là không cần biết các thành phần này được code như thế nào mà chỉ cần biết các thành phần này được dùng để làm gì).

Trừu tượng có nghĩ là tổng quát hóa một cái gì đó lên, không cần chú ý chi tiết bên trong. Nó không màng đến chi tiết bên trong là gì và người ta vẫn hiểu nó mỗi khi nghe về nó.

tính trừu tượng

Ví dụ: Bạn chạy xe tay ga thì có hành động là tăng ga để tăng tốc, thì chức năng tăng ga là đại diện cho trừu tượng (abstraction). Người dùng chỉ cần biết là tăng ga thì xe tăng tốc, không cần biết bên trong nó làm thế nào.

Ở đây trong lập trình OOP, tính trừu tượng nghĩa là chọn ra các thuộc tính, phương thức của đối tượng cần cho việc giải quyết bài toán đang lập trình. Vì một đối tượng có rất nhiều thuộc tính phương thức, nhưng với bài toán cụ thể không nhất thiết phải chọn tất cả.

Ví dụ: Bài toán quản lý sinh viên chúng ta chỉ cần quản lý các thông tin như

  • Họ tên
  • Ngày sinh
  • Giới tính
  • Điểm thi

mà lại không cần quản lý thêm các thông tin:

  • Màu tóc
  • Sở thích
  • Chiều cao

Tại vì chúng thực sự không cần thiết.

Các ưu điểm của lập trình đối tượng

Dựa trên nguyên lý kế thừa, trong quá trình mô tả các lớp có thể loại bỏ những chương trình bị lặp, dư. Và có thể mở rộng khả năng sử dụng các lớp mà không cần thực hiện lại. Tối ưu và tái sử dụng code hiệu quả.

Đảm bảo rút ngắn thời gian xây dựng hệ thống và tăng năng suất thực hiện.

Sự xuất hiện của 2 khái niệm mới là lớp và đối tượng chính là đặc trưng của phương pháp lập trình hướng đối tượng. Nó đã giải quyết được các khuyết điểm của phương pháp lập trình hướng cấu trúc để lại. Ngoài ra 2 khái niệm này đã giúp biểu diễn tốt hơn thế giới thực trên máy tính.

Xem thêm: 9 cách xây dựng chiến lược SEO Website hiệu quả

Kết luận

Qua bài viết TELSKY mong rằng bạn đọc cũng hiểu được phần nào về lập trình đối tượng (OOP). Hy vọng đây sẽ là những thông tin bổ ích với bạn.

Liên hệ

CT4 Thanh Bình, Võ Cường, TP.Bắc Ninh

+84 986 687 612

343 Nguyễn Trãi, Thanh Xuân, Hà Nội

+84 989 58 66 26

Số 6, Đường D5, Phường 25, quận Bình Thạnh, TP Hồ Chí Minh

+84 988 71 27 77

info@telsky.vn