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 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.
Không có nhận xét nào:
Đăng nhận xét