Lập trình hướng đối tượng (Object-Oriented Programming - OOP)

Lập trình hướng đối tượng (Object-Oriented Programming - OOP) 



Lập trình hướng đối tượng (Object-Oriented Programming - OOP) có 4 tính chất cơ bản, đó là:
  1. Tính đóng gói
  2. Tính kế thừa
  3. Tính đa hình
  4. Tính trừu tượng.
đọc thì hơi khó hiểu và khó hình dung nhưng bài này mình sẽ giải thích cho các bạn 1 cách dễ hiểu nhất và dễ hình dung nhất về 4 tính chất này. giúp anh em vượt qua được các câu hỏi của các anh FR khi hỏi nhưng câu hỏi về hướng đối tượng nhé.

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

Tính đóng gói là việc gói gọn dữ liệu và các phương thức (hàm) thao tác trên dữ liệu đó vào bên trong một đối tượng. Điều này giúp bảo vệ dữ liệu bên trong đối tượng khỏi sự can thiệp và sử dụng sai mục đích từ bên ngoài, cũng như tăng cường bảo mật và tính toàn vẹn của dữ liệu.

ví dụ thực tế và dễ hiểu nhé: Hộp đựng thuốc

Giải thích: Hộp đựng thuốc bảo vệ viên thuốc bên trong khỏi các yếu tố bên ngoài như bụi bẩn, ánh sáng và độ ẩm. Bên ngoài, bạn chỉ cần biết rằng hộp thuốc có chứa viên thuốc, còn cách bảo quản chi tiết bên trong hộp không cần thiết phải biết.

cũng giống như cái tủ lạnh, cái tủ lạnh như là 1 class, nó chứa rất nhiều đồ ăn, đồ ăn, thức ăn là những đoạn code bên trong class, cái tủ lạnh bảo vệ đồ ăn khỏi bị tấn công bởi các vi khuẩn sâm hại bên ngoài. đây là cách mô tả dễ hiểu thực tế về tính đóng gói.

Đặc điểm:

  • Các thuộc tính và phương thức được định nghĩa bên trong một lớp (class).
  • Các thuộc tính thường được khai báo với mức truy cập private hoặc protected.
  • Các phương thức công khai (public) cung cấp cách thức để tương tác với dữ liệu, thường là getter và setter.

2. Tính kế thừa (Inheritance)

Tính kế thừa cho phép một lớp (class) có thể thừa hưởng các thuộc tính và phương thức từ một lớp khác. Lớp kế thừa được gọi là lớp con (subclass), và lớp mà nó kế thừa được gọi là lớp cha (superclass).

Ví dụ: Phương tiện giao thông

Giải thích: Phương tiện giao thông (vehicle) là một lớp chung, chúng bao gồm các thuộc tính và phương thức cơ bản như di chuyển (move), dừng (stop), bất kể chiếc xe nào cũng có 2 trạng thái là dừng và di chuyển. Các loại phương tiện cụ thể như ô tô, xe đạp sẽ kế thừa từ lớp này ( Phương tiện giao thông  ), tức là chúng ké thừa ở đây đó là chúng (xe ô tô và xe đạp ) cũng có thể di  chuyểndừng, ngoài dừng di chuyển được kế thừa từ lớp phương tiện giao thông mình còn gắn thêm cho thằng ô tô đó là thuộc tính bóp còi, ô tô có còi, còn xe đạp thì mình thêm thuộc tính là bóp chuông. xe đạp có chuông. cái này gọi là thêm thuộc tính cho lớp con thui.

thêm một ví dụ khác nhé. mình tạo có 1 lớp trái cây (đây là lớp chung ). trái cây thì nó sẽ có những thuộc tính và giá trị ví dụ như: vỏ hột. tạo một lớp con có tên là trái thanh long, kế thừa lớp cha thì trái thanh long lúc này cũng có vỏ hột, mình tạo thêm cho nó thuộc tính và giá trị đó là tai thanh long ( trái thanh long nó không có lá, thay vào đó người ta gọi nó là tai thanh long, dính trên cả quả). hoặt mình tạo thêm 1 lớp con có tên là quả trứng, quả trứng kế thừa lớp cha là trái cây, lúc này quả trứng có vỏ và hột, vỏ và vỏ quả trứng, còn hột là tượng trưng cho lòng đỏ trứng. Kế thừa là z đó :)))) Dễ hiểu mà

tạo ra lớp con người, con người có thuộc thuộc tính da, mắt, thịt, tim gang, phổi, ....., sau đó mình tạo ra 1 lớp con :))) có tên là khải, khải kế thừa cha của nó ( khải không thể kế thừa ông hàng xóm được), khải kế thừa cha thì khải sẽ có da, mắt, thịt, tim gang, phổi....., cha của khải gắn  thêm thuộc tính cho khải đó là chứng minh nhân dân, tên cho khải, ngày sinh để nhận biết khải và những thằng con khác của ỏng. cha của khải ấy với bà hàng xóm, tạo ra 1 lớp con khác có tên là huy, huy kế thừa thằng cha và huy sở hữu  các thuộc thuộc tính da, mắt, thịt, tim gang, phổi, ....., cha của huy gắn thêm các thuộc tính cho huy là tên chứng minh, ngày sinh để phân biệt huy và khải. 

những ví dụ này nó có dính tới tính đa hình 1 chút nhé. 

Áp dụng vào lập trình: Lớp con (ô tô) thừa hưởng các thuộc tính và phương thức từ lớp cha (phương tiện giao thông) và thêm các thuộc tính, phương thức riêng.

Đặc điểm:

  • Giúp tái sử dụng mã nguồn, giảm thiểu sự trùng lặp mã.
  • Cho phép mở rộng và chỉnh sửa lớp cha mà không làm thay đổi lớp con.

3. Tính đa hình (Polymorphism)

Tính đa hình cho phép các đối tượng khác nhau có thể được xử lý thông qua cùng một giao diện (interface), mỗi đối tượng có thể có cách triển khai khác nhau cho các phương thức.

Ví dụ: Động vật kêu

Giải thích: Mỗi loài động vật có cách kêu khác nhau, nhưng tất cả đều có hành động kêu (makeSound). Ví dụ, chó sủa (bark), mèo kêu meo (meow). Khi bạn gọi hành động kêu của bất kỳ động vật nào, chúng sẽ thể hiện cách kêu riêng của mình.

Áp dụng vào lập trình: Phương thức makeSound được định nghĩa trong lớp cha (Animal) và được ghi đè (overridden) trong các lớp con (Dog, Cat).

nôm na hiểu cơ bản thì giống như mỗi lớp con nó sẽ có những thuộc tính khác nhau của nó, đa dạng nhiều loại hình gọi là tính đa hình. ví dụ trong giới động vật thì có nhiều cách di chuyển khác nhau, chạy, nhảy, bơi, bay .... thì ta gọi đó là tính đa hình về di chuyển

Đặc điểm:

  • Có hai loại đa hình: Đa hình thời gian biên dịch (compile-time polymorphism) và đa hình thời gian chạy (runtime polymorphism).
  • Đa hình thời gian biên dịch thường được thực hiện thông qua nạp chồng phương thức (method overloading).
  • Đa hình thời gian chạy thường được thực hiện thông qua ghi đè phương thức (method overriding).

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

Tính trừu tượng là việc chỉ hiển thị những thông tin cần thiết và ẩn đi các chi tiết triển khai không cần thiết của đối tượng. Điều này giúp đơn giản hóa quá trình phát triển phần mềm bằng cách tập trung vào những gì đối tượng làm thay vì cách nó làm điều đó.

Ví dụ: Thiết bị điện tử

Giải thích: Thiết bị điện tử như điện thoại thông minh có nhiều tính năng phức tạp bên trong nhưng người dùng chỉ cần quan tâm đến các chức năng cơ bản như gọi điện, nhắn tin, chụp ảnh mà không cần biết cách chúng hoạt động chi tiết bên trong.

Áp dụng vào lập trình: Sử dụng lớp trừu tượng (abstract class) hoặc giao diện (interface) để định nghĩa các phương thức mà các lớp con phải triển khai.

hiểu cơ bản thì tính đa hình nó chỉ hiển thị các thứ ta cần và ẩn thứ không cần thiết đi. ví dụ như khi chuyển khoản ngân hàng bằng thẻ visa, bạn chỉ cần cho người ta biết số thẻ cc để chuyển tiền cho bạn thôi, không nhất thiết phải cho họ biết cả ngày tháng tạo thẻ và số cvv, vì khi họ biết họ có thể lấy cấp tiền của chúng ta. 

Đặc điểm:

  • Sử dụng các lớp trừu tượng (abstract class) và giao diện (interface).
  • Các lớp trừu tượng có thể chứa các phương thức trừu tượng (không có triển khai) và các phương thức thông thường.
  • Các giao diện chỉ chứa các phương thức trừu tượng.
Design by @KiMiDev

Đăng nhận xét

Cảm ơn bạn đã nhận xét, chúng tôi sẽ quay lại và trả lời cho bạn sớm nhất có thể !!!

Mới hơn Cũ hơn

Nhận xét Mới