Tính trừu tượng trong php
Ở bài viết trước chúng ta đã tìm hiểu về OOP trong PHP là gì và mình có nói là OOP trong PHP có 4 tính chất. Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu chi tiết về 4 tính chất này, từ đó phục vụ cho các bài tiếp theo. Trừu tượng hóa là quá trình đơn giản hóa một đối tượng, mà trong đó chỉ bao gồm những đặc điểm quan tâm và bỏ qua những đặc điểm chi tiết nhỏ. Quá trình trừu tượng hóa dữ liệu giúp ta xác định được những thuộc tính, hành động nào của đối tượng cần thiết sử dụng cho chương trình. Để hiểu rõ về tính trừu
tượng chúng ta sẽ tìm hiểu về Abstract class và Interface. Lớp Abstract sẽ định nghĩa các phương thức (hàm) mà từ đó các lớp con sẽ kế thừa nó và Overwrite lại (tính đa hình). Đối với lớp này thì nó sẽ có các điểm khác sau: Và để khai báo một abstract class ta dùng cú pháp sau:
abstract class ClassName { } Trong đó: ClassName là tên của class chúng ta cần khai báo. Cú pháp khai báo một phương thức abstract:
Trong đó: visibility là một trong 2 từ khóa public, protected hoặc có thể bỏ trống (bỏ trống thì là public), methodName là tên của phương thức chúng ta cần khai báo. Ví dụ 1: khai báo một phương thức abstract trong abstract class
Ví dụ 2: Phải định nghĩa lại các phương thức abstract của abstract class đó khi kế thừa.
1.2. InterfaceInterface trong hướng đối tượng là một khuôn mẫu, giúp cho chúng ta tạo ra bộ khung cho một hoặc nhiều đối tượng và nhìn vào interface thì chúng ta hoàn toàn có thể xác định được các phương thức và các thuộc tính cố định (hay còn gọi là hằng) sẽ có trong đối tượng implement nó. Để khai báo interface trong PHP chúng ta dùng cú pháp:
Trong đó: InterfaceName là tên của interface các bạn muốn đặt. Tính chất của interface
1.3. So sánh giữa interface và abstract classNhững điểm giống nhau giữa interface và abstract class:
Những điểm khác nhau:
2. Tính kế thừa (inheritance)Tính kế thừa trong lập trình hướng đối tượng cho phép một lớp (class) có thể kế thừa các thuộc tính và phương thức từ các lớp khác đã được định nghĩa. Lớp được kế thừa còn được gọi là lớp cha và lớp kế thừa được gọi là lớp con. Điều này cho phép các đối tượng có thể tái sử dụng hay mở rộng các đặc tính sẵn có mà không phải tiến hành định nghĩa lại. Trong PHP để khai báo kế thừa từ một lớp cha chúng ta sử dụng từ khóa extends theo cú pháp:
Trong đó: childClass là class mà các bạn đang muốn khởi tạo, parentClass là class cha mà childClass đang muốn kế thừa nó. 3. Tính đóng gói (encapsulation)Tính đóng gói là tính chất không cho phép người dùng hay đối tượng khác thay đổi dữ liệu thành viên của đối tượng nội tại. Chỉ có các hàm thành viên của đối tượng đó mới có quyền thay đổi trạng thái nội tại của nó mà thôi. Các đối tượng khác muốn thay đổi thuộc tính thành viên của đối tượng nội tại, thì chúng cần truyền thông điệp cho đối tượng, và việc quyết định thay đổi hay không vẫn do đối tượng nội tại quyết định. Trong PHP việc đóng gói được thực hiện nhờ sử dụng các từ khoá public, private và protected:
4. Tính đa hình (polymorphism)Tính đa hình trong lập trình hướng đối tượng là sự đa hình của mỗi hành động cụ thể ở những đối tượng khác nhau. Ví dụ hành động ăn ở các loài động vật hoàn toàn khác nhau như: con heo ăn cám, hổ ăn thịt, con người thì … ăn hết =)). Đó là sự đa hình trong thực tế, còn đa hình trong lập trình thì được hiểu là Lớp Con sẽ viết lại những phương thức ở lớp cha (ovewrite). Các class cùng implement một interface nhưng chúng có cách thức thực hiện khác nhau cho các method của interface đó. 5. Kết luậnTrong bài viết chúng ta đã tìm hiểu về các đặc trưng cơ bản của 4 tính chất OOP trong PHP. Ở bài viết sau, chúng ta sẽ tìm hiểu về class và object trong OOP nhé. Bài viết tham khảo: https://viblo.asia/p/lap-trinh-huong-doi-tuong-oop-trong-php-phan-1-gGJ59gyaZX2 php oop |