Chủ Nhật, 19 tháng 5, 2024

35. Lập trình hướng đối tượng trong Python phần 2

Chúng tôi muốn sau những lý thuyết căn bản, chúng ta sẽ cùng nhau tạo một ứng dụng tương đối thực tế. Vì vậy chúng ta cần thiết nắm vững về lập trình hướng đối tượng, làm đi làm lại những cái mà chúng tôi gọi là tào lao. Trong phần trước, ta gom tất cả các loại sách thành một tập hợp gọi là lớp (class).

Lớp là một bản thiết kế trừu tượng tạo ra các đối tượng cụ thể, cụ thể hơn. Các lớp thường đại diện cho các danh mục rộng, giống Sách, Xe hoặc Chó chia sẻ các Thuộc tính (Attribute) chung như tên sách, màu xe, màu lông... Các lớp này xác định những thuộc tính nào mà một thể hiện thuộc loại này sẽ có, chung cho toàn bộ lớp, nhưng không xác định giá trị của các thuộc tính đó cho một đối tượng cụ thể.

Các lớp cũng có thể chứa các hàm được gọi là các Phương thức (Method) chỉ có sẵn cho các đối tượng thuộc loại đó. Các hàm này được định nghĩa trong lớp và thực hiện một số hành động hữu ích cho loại đối tượng cụ thể đó.

Ví dụ: Lớp Xe có thể có một Phương thức (Method) là Sơn thay đổi Thuộc tính (Attribute) màu của một chiếc xe. Hàm này chỉ hữu ích cho các đối tượng thuộc loại Xe.

Các Đối tượng (Object) được sử dụng như một bản thiết kế để tạo các đối tượng riêng lẻ của lớp. Chúng đại diện cho các ví dụ cụ thể của lớp trừu tượng, như Xe Của Tôi hoặc Chó Phú Quốc. Mỗi đối tượng có thể có các giá trị duy nhất cho các Thuộc tính (Attribute) được xác định trong lớp, ví dụ Xe Của Tôi có Thuộc tính (Attribute) là màu Đen.

Vòng vo một hồi, chúng ta tạm hiểu là lập trình hướng đối tượng OOP là lập trình dựa trên các tập hợp có chung các Thuộc tính (Attribute). Điều đó sẽ giúp chúng ta  "gọn gàng" hơn khi viết code, "tiêu chuân hóa" hơn trong các chương trình, dễ dàng "tái sử dụng" các đối tượng và mở rộng dự án, và vì mọi thứ đã tiêu chuẩn nên sẽ dễ dàng hơn trong việc sửa lỗi.

 

4 đặc tính cơ bản của OOP


Tính đóng gói (Encapsulation)
Tính đóng gói là một kỹ thuật lập trình nền tảng được sử dụng để gom nhóm các attributes và methods cần thiết vào một Object, cho phép che giấu thông tin và những tính chất xử lý bên trong của đối tượng. Data Hiding trong lập trình hướng đối tượng OOP thường dùng để bảo vệ các thành phần bên trong của Object (thường gọi là private). Các thành phần bên ngoài sẽ không được can thiệp và sử dụng các thành phần này trực tiếp mà phải thông qua các phương thức công khai (public).

Tính chất này giúp tăng tính bảo mật cho đối tượng và tránh tình trạng dữ liệu bị hư hỏng ngoài ý muốn.


Tính kế thừa (Inheritance)
Đây là tính chất được sử dụng khá nhiều. Tính kế thừa cho phép xây dựng một lớp mới (lớp Con), kế thừa và tái sử dụng các thuộc tính, phương thức dựa trên lớp cũ (lớp Cha) đã có trước đó.

Các lớp Con kế thừa toàn bộ thành phần của lớp Cha và không cần phải định nghĩa lại. Lớp Con có thể mở rộng các thành phần kế thừa hoặc bổ sung những thành phần mới.

Ví dụ:

Lớp Cha là xe, có các thuộc tính: màu sắc, bánh xe…
Các lớp Con là Toyota, Honda, Nissan cũng có các thuộc tính: màu sắc, bánh xe...


Tính đa hình (Polymorphism)
Tính đa hình trong lập trình OOP cho phép các đối tượng khác nhau thực thi chức năng giống nhau theo những cách khác nhau.

Ví dụ:

Ở lớp xe, mỗi một thương hiệu đều kế thừa các thành phần của lớp cha nhưng Toyota chạy xăng, còn Tesla lại chạy điện.
Chó và mèo cùng nghe mệnh lệnh "kêu đi" từ người chủ. Chó sẽ "gâu gâu" còn mèo lại kêu "meo meo".


Tính trừu tượng (Abstraction)
Tính trừu tượng giúp loại bỏ những thứ phức tạp, không cần thiết của đối tượng và chỉ tập trung vào những gì cốt lõi, quan trọng.

Ví dụ: Quản lý nhân viên thì chỉ cần quan tâm đến những thông tin như:

Họ tên
Ngày sinh
Giới tính

Chứ không cần phải quản lý thêm thông tin về:

Chiều cao
Cân nặng
Sở thích
Màu da


Những ngôn ngữ OOP phổ biến nhất:
Java
C++
JavaScript
PHP
Python
...
 

Sự xuất hiện của 2 khái niệm mới là lớp đối tượng chính là đặc trưng của phương pháp lập trình hướng đối tượng.

 

 So sánh Lập trình OOP và lập trình hướng thủ tục



Lập trình hướng đối tượng Lập trình hướng thủ tục
1. Lập trình hướng đối tượng là cách tiếp cận giải quyết vấn đề và được sử dụng trong đó tính toán được thực hiện bằng cách sử dụng các đối tượng. Lập trình thủ tục sử dụng một danh sách các hướng dẫn để thực hiện tính toán từng bước.
2. Giúp phát triển và bảo trì dễ dàng hơn. Trong lập trình thủ tục, khó đẻ bảo trì khi dự án mở rộng.
3. Trong lập trình thủ tục, không dễ để duy trì các mã khi dự án trở nên dài. Nó không mô phỏng thế giới thực. Nó hoạt động theo từng bước hướng dẫn được chia thành các phần nhỏ gọi là hàm.
4. Nó cung cấp dữ liệu ẩn. Vì vậy, nó an toàn hơn các ngôn ngữ thủ tục. Bạn không thể truy cập dữ liệu riêng tư từ bất cứ đâu. Ngôn ngữ thủ tục không cung cấp bất kỳ cách thích hợp nào để liên kết dữ liệu, vì vậy nó kém an toàn hơn.
5. Ví dụ về các ngôn ngữ lập trình hướng đối tượng là C++, Java, .Net, Python, C #, v.v. Ví dụ về các ngôn ngữ thủ tục là: C, Fortran, Pascal, VB, v.v.

 

 

Phần tiếp theo

 

Phần trước

Không có nhận xét nào:

Đăng nhận xét