Lập trình hướng đối tượng (OOP) là 1 trong những công nghệ lập trình rất khóa học lập trình viên cho trẻ em quan yếu hiện nay. Nó được vận dụng ở gần như những vận dụng thực tại vun đắp tại các doanh nghiệp. Đa số các ngôn ngữ lập trình và framework lập trình nhiều ngày nay như Java, PHP, .NET đều hỗ trợ lập trình hướng đối tượng. Những lập trình viên đa phần đã được học về lập trình hướng đối tượng ở trường đại học nhưng các nguyên lý cơ bản của lập trình hướng đối tượng đôi khi lại ko nắm rõ dẫn đến tiêu dùng sai, ko đúng triết lý của lập trình hướng đối tượng.
Trong bài viết này, tôi sẽ tóm tắt lại những nguyên lý căn bản của lập trình hướng đối tượng nhằm giúp Các bạn sở hữu được 1 chiếc nhìn tổng quát về OOP cũng như phương pháp ứng dụng nó.
Lập trình hướng đối tượng là gì?
Lập trình hướng đối tượng là một khoa học 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. Hướng tiếp cận này hiện đang rất thành công và đã phát triển thành một trong những khuôn cái vững mạnh phần mềm, đặc trưng là những phần mềm cho công ty.
khi lớn mạnh vận dụng dùng OOP, chúng ta sẽ khái niệm các lớp (class) để mô phỏng những đối tượng thực tại. Trong ứng dụng những lớp này sẽ được khởi tạo thành các đối tượng và trong suốt thời gian vận dụng chạy, những phương thức (method) của đối tượng này sẽ được gọi.
Lớp khái niệm đối tượng sẽ như thế nào: gồm các phương thức và hoc lam game thuộc tính (property) gì. Một đối tượng chỉ là 1 diễn đạt của lớp. Các lớp tương tác mang nhau bởi các public API: là tập các phương thức, thuộc tính public của nó.
Tính đóng gói (Encapsulation)
Tính đóng gói tức là luật lệ đề xuất hiện trạng bên trong của một đối tượng được bảo vệ và giảm thiểu truy nã cập được trong khoảng code bên ngoài (tức là code bên ngoài không thể trực tiếp nhận ra và đổi thay tình trạng của đối tượng đó). Bất cứ tróc nã cập nào tới hiện trạng bên trong này bắt yêu cầu phê chuẩn 1 public API để đảm bảo tình trạng của đối tượng luôn hợp lệ bởi vì các public API chịu trách nhiệm thực hiện rà soát tính hợp lệ cũng như trình tự cập nhật hiện trạng của đối tượng đấy.
tổng thể trạng thái đối tượng ko hợp thức thường do: chưa được rà soát tính hợp thức, các bước thực hiện ko đúng trình tự hoặc bị bỏ qua nên trong OOP có 1 luật lệ quan trọng cần nhớ đấy là phải luôn khai báo các hiện trạng bên trong của đối tượng là private và chỉ cho tầm nã cập qua những public/protected method/property. Khi sử dụng các đối tượng ta không cần biết bên trong nó khiến cho việc như thế nào, ta chỉ cần biết những public API là gì và điều này đảm bảo các gì đổi thay đối tượng sẽ được rà soát bởi những quy tắc logic bên trong, hạn chế đối tượng bị sử dụng không xác thực.
Nguyên lý đóng gói như thế này ở đâu ta cũng có thể bắt gặp thí dụ như ngoài mặt viên thuốc, chúng ta chỉ biết nó chữa bệnh này, bệnh kia và 1 số thành phần chính còn cụ thể bên trong nó sở hữu các gì thì hoàn toàn ko biết.
Tính kế thừa (Inheritance)
lúc bắt đầu xây dựng vận dụng chúng ta sẽ khởi đầu việc bề ngoài những lớp, thường nhật chúng ta sẽ thấy có trường hợp một số lớp hình như có quan hệ với các lớp khác, chúng có những đặc tính khá giống nhau. VD: 3 lớp AndroidPhone, IPhone, WindowsPhone ở hình dưới:
Xem thêm =>>https://mindx.edu.vn/blog/post/lap-trinh-ung-dung-di-dong
Mỗi lớp đều đại diện cho một chiếc smartphone khác nhau nhưng lại có các thuộc tính giống nhau. Thay tại sao chép những thuộc tính này, sẽ hay hơn ví như ta đặt chúng ở 1 nơi có thể sử dụng bởi những lớp khác. Điều này được thực hành bởi tính kế thừa trong OOP: chúng ta sở hữu thể khái niệm lớp cha – base class (trong trường hợp này là Smartphone ) và sở hữu các lớp con kế thừa từ nó (derived class), tạo ra 1 mối quan hệ cha/con như hình dưới:
hiện tại, các lớp con có thể kế thừa 3 tính chất từ lớp cha. Nếu như những chức năng của lớp cha đã được định nghĩa phần đông thì lập trình viên sẽ chẳng hề khiến bất cứ việc gì ở lớp con. Còn nếu 1 lớp con muốn chức năng khác so có khái niệm ở lớp cha thì nó mang thể ghi đè (override) chức năng đã được định nghĩa trên lớp cha này.
Như hình trên hiện nay nếu gọi thuộc tính OSVersion trên lớp AndroidPhone thì nó sẽ dùng định nghĩa được khai báo ở lớp này, khi mà 2 lớp Iphone & Windows Phone vẫn sử dụng khái niệm được khai báo ở lớp cha Smartphone.
Tính đa hình (Polymorphism)
với rất nhiều lập trình viên thì tính Kế thừa và Đóng gói trong OOP tương đối dễ hiểu còn tính Đa hình lúc mới tiếp cận sẽ thấy khó hiểu hơn một chút. Tuy nhiên đây lại là một thuộc tính có thể nhắc là chứa cất đầy đủ sức mạnh của lập trình hướng đối tượng. Hiểu một phương pháp đơn giản: Đa hình là khái niệm mà hai hoặc phổ quát lớp mang các phương thức giống nhau nhưng với thể thực thi theo các cách thức khác nhau.