Object oriented programming là gì
Lập trình hướng đối tượng (oop) là một trong những kỹ thuật lập trình quan trọng và được sử dụng rộng rãi nhất hiện nay. Hầu hết các ngôn ngữ lập trình hiện nay như java, php, .net, ruby, python… đều hỗ trợ oop. Vậylập trình hướng đối tượng là gì? Các nguyên tắc cơ bản của oop cần được hiểu là gì?
- Lập trình hàm là gì?
- Thuộc tính là thông tin và đặc điểm của một đối tượng. Ví dụ, con người có các đặc điểm như mắt, mũi, tay, chân…
- Phương thức là các thao tác, hành động mà một đối tượng có thể thực hiện. Ví dụ, một người sẽ có thể nói, đi lại, ăn, uống, v.v. . .
- Thông tin, đặc điểm: 4 chân, 2 mắt, đuôi, chiều cao, cân nặng, màu lông…
- Hành vi, ví dụ: sủa, đi, ăn, ngủ…
- Các dữ liệu và phương thức liên quan được đóng gói thành các lớp để dễ sử dụng và quản lý. Nghĩa là, mỗi lớp được xây dựng để thực hiện một tập hợp các chức năng dành riêng cho lớp.
- Ngoài ra, đóng gói cũng ẩn một số thông tin và chi tiết cài đặt nội bộ từ bên ngoài.
- Họ Tên
- Ngày sinh
- Giới tính
- …
- Kết quả kiểm tra
- Màu tóc
- Sở thích
- Chiều cao
- Dựa trên nguyên tắc kế thừa, các thủ tục thừa và lặp đi lặp lại có thể được loại bỏ trong quá trình mô tả các lớp. Và tính khả dụng của các lớp có thể được mở rộng mà không cần triển khai lại. Tối ưu hóa và tái sử dụng mã hiệu quả.
- Đảm bảo thời gian xây dựng hệ thống ngắn hơn và triển khai hiệu quả hơn.
- Lớp và Đối tượng Sự xuất hiện của hai khái niệm mới là đặc trưng của phương pháp lập trình hướng đối tượng. Nó giải quyết những thiếu sót của phương pháp lập trình hướng cấu trúc. Hơn nữa, hai khái niệm này giúp thể hiện tốt hơn thế giới thực trên máy tính.
- So sánh giao diện và trừu tượng trong lập trình hướng đối tượng
- 4 đặc điểm của lập trình hướng đối tượng java
- Tìm hiểu về các nguyên tắc “vàng” vững chắc của lập trình hướng đối tượng
Lập trình hướng đối tượng (oop) là gì?
Lập trình hướng đối tượng (oop) là một kỹ thuật lập trình cho phép lập trình viên tạo các đối tượng bằng mã trừu tượng hóa chúng.
Đối tượng là những sự vật và sự kiện có cùng thuộc tính, đặc điểm và hành vi giống như những đối tượng mà chúng ta thu thập trong cuộc sống thực. Khi lập trình trong oop, chúng ta định nghĩa các lớp để thu thập (mô hình hóa) các đối tượng thực tế.
Đối tượng
Một đối tượng chứa hai phần thông tin: thuộc tính và phương thức.
Lớp
Một lớp là một kiểu dữ liệu bao gồm các thuộc tính và phương thức được xác định trước. Đây là một sự trừu tượng hóa của các đối tượng. Không giống như các kiểu dữ liệu thông thường, một lớp là một đơn vị (trừu tượng) bao gồm sự kết hợp của các phương thức và thuộc tính. Đại khái hơn, các đối tượng có thuộc tính giống nhau được nhóm thành một lớp đối tượng.
Sự khác biệt giữa đối tượng và lớp
Class có thể hiểu là một khuôn mẫu, còn đối tượng là một thể hiện thể hiện dựa trên khuôn mẫu. Ví dụ, nếu chúng ta nói về chó, bạn có thể hiểu đây là lớp chó:
Chủ đề là chú chó Fuguo của chúng ta, nó cũng có những đặc điểm của loài chó.
Thông tin cơ bản về oop
Đóng gói
Lưu ý:
Các thuộc tính và phương thức của các đối tượng cần thiết để giải quyết vấn đề đã chọn được gói gọn trong các kiểu dữ liệu được gọi là các lớp. Để ẩn thông tin khỏi các đối tượng bên ngoài, bất kỳ thuộc tính nào cũng là một phương thức. Tức là mã bên ngoài không trực tiếp xem và thay đổi trạng thái của đối tượng.
Nói chung, trạng thái đối tượng không hợp lệ thường do: không được xác thực, sai thứ tự hoặc bị bỏ qua, vì vậy có một quy tắc quan trọng cần nhớ trong oop, đó là luôn khai báo trạng thái bên trong của đối tượng là riêng tư và duy nhất có thể truy cập thông qua các phương thức/thuộc tính công khai/được bảo vệ.
Ví dụ như thuốc cảm mà chúng ta đã thấy. Chúng tôi chỉ biết nó chữa cảm, nhức đầu và một số thành phần chính chứ không biết hoạt chất cụ thể.
Kế thừa
Nó cho phép xây dựng các lớp mới dựa trên các định nghĩa lớp hiện có. Điều này có nghĩa là các lớp cha có thể chia sẻ dữ liệu và phương thức với các lớp con. Các lớp con không cần phải xác định lại và có thể mở rộng các thành phần kế thừa và thêm các thành phần mới. Tái sử dụng mã nguồn theo cách tốt nhất có thể, tận dụng mã nguồn. Một số kiểu thừa kế phổ biến: đơn thừa kế, đa thừa kế, đa thừa kế, thừa kế thứ bậc.
Khi chúng ta bắt đầu xây dựng ứng dụng của mình, chúng ta sẽ bắt đầu bằng cách thiết kế các định nghĩa lớp. Thông thường một số lớp có liên quan đến các lớp khác, chúng có các thuộc tính tương tự nhau.
Ví dụ: 2 loại android, iphone
Mỗi lớp đại diện cho một loại điện thoại thông minh khác nhau nhưng có các thuộc tính giống nhau, chẳng hạn như gọi điện, nhắn tin và chụp ảnh. Thay vì sao chép các thuộc tính này, chúng ta nên đặt chúng trong một lớp chung được gọi là lớp cha. Chúng ta có thể định nghĩa một siêu lớp – trong trường hợp này là Điện thoại thông minh và có các lớp con kế thừa từ nó, tạo ra mối quan hệ cha/con.
Đa hình
Đa hình là một phép toán có thể được thực hiện theo nhiều cách khác nhau. Đây là một thuộc tính khác được cho là chứa hầu hết sức mạnh của lập trình hướng đối tượng.
Nói một cách dễ hiểu hơn: Đa hình là một khái niệm trong đó hai hoặc nhiều lớp có cùng phương thức nhưng có thể được triển khai theo những cách khác nhau.
Ví dụ: trong ví dụ trên, mỗi điện thoại thông minh kế thừa từ siêu lớp điện thoại thông minh nhưng có thể lưu trữ dữ liệu trên đám mây theo cách khác nhau. android được lưu trữ bởi google drive iphone được lưu trữ trên icloud.
Một ví dụ về đa hình. Chúng tôi có hai con vật: chó và mèo. Cả hai loài động vật này đều là động vật. Nhưng khi chúng ta bảo hai con vật kêu meo meo, con chó sẽ kêu meo meo và con mèo sẽ kêu meo meo.
Vậy chó và mèo được coi là đối tượng trong ví dụ. 2 con vật có thể hiểu cùng một âm thanh, nhưng theo những cách khác nhau.
Tóm tắt
Trừu tượng có nghĩa là khái quát hóa về một cái gì đó mà không xem xét các chi tiết của nó. Nó không quan tâm đến những gì trong đó, mọi người vẫn hiểu nó mỗi khi họ nghe nó.
Ví dụ khi đi xe tay ga, thao tác là tăng ga để tăng tốc, thì hàm chân ga thể hiện một cách trừu tượng. Người dùng chỉ cần biết rằng khi tăng tốc, xe vẫn tăng tốc bất kể điều gì đang diễn ra bên trong xe.
Trong lập trình oop, trừu tượng hóa có nghĩa là chọn các thuộc tính và phương thức của các đối tượng cần thiết để giải quyết vấn đề mà bạn đang lập trình. Vì một đối tượng có nhiều thuộc tính phương thức nhưng đối với một bài toán cụ thể thì không nhất thiết phải chọn tất cả.
Ví dụ trong bài toán quản lý sinh viên, ta chỉ cần quản lý thông tin như thế này
Không có thông tin bổ sung để quản lý:
Bởi vì chúng thực sự không cần thiết.
Ưu điểm của lập trình hướng đối tượng
Một số bài viết có thể bạn quan tâm:
Đừng bỏ lỡ các công việc lập trình oop phổ biến trên topdev