Tính chất của hướng đối tượng trong php

ngày 15-08-2020

Lập trình hướng đối tượng (oop) hiện nay đang là  một kĩ thuật rất quang trọng cho dân lập trình, không chỉ riêng ngôn ngữ php mà còn áp dụng cho rất nhiều ngôn ngữ khác, bài viết sau đây sẽ giúp chúng ta biết tổng qua được hướng đối tượng là gì và những tính chất của nó.

Hướng đối tượng là gì 

đây là một kỹ thuật 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à đã trở thành một trong những khuôn mẫu phát triển phần mềm, đặc biệt là các phần mềm cho doanh nghiệp.

4 Tính chất của hướng đối tượng

 

Tính thừa kế:

 

Lớp cha có thể chia sẻ dữ liệu và phương thức cho các lớp con, các lớp con khỏi phải định nghĩa lại những logic chung, giúp chương trình ngắn gọn. Nếu lớp cha là interface, thì lớp con sẽ di truyền những contract trừu tượng từ lớp cha.

Để hiểu rõ hơn về tính kế thừa trong PHP bạn có thể tham khảo bài viết TÍNH KẾ THỪA TRONG PHP

 

Tính đóng gói (encapsulation):


Tức là trạng thái của đối tượng được bảo vệ không cho các truy cập từ code bên ngoài như thay đổi trong thái hay nhìn trực tiếp. Việc cho phép môi trường bên ngoài tác động lên các dữ liệu nội tại của một đối tượng theo cách nào là hoàn toàn tùy thuộc vào người viết mã, tính đóng gói được thể hiện thông qua phạm vi truy cập (visibility). Ngoài ra, các lớp liên quan đến nhau có thể được gom chung lại thành package.
 Ví dụ về các từ khóa  visility trước các phương thức và thuộc tính như

- Public: Đây là mức truy cập thoáng nhất bởi vì bạn có thể truy cập tới các phương thức và thuộc tính ở bất cứ đâu, dù trong nộ bộ của lớp hay ở lớp con hay cả bên ngoài lớp đều được.

- Protected: chỉ cho phép truy xuất nội bộ trong lớp đó và lớp kế thừa, riêng ở bên ngoài lớp sẽ không truy xuất đc

- Private: Đây là thành phần chỉ dành riêng cho nội bộ của lớp, nghĩa là ta không thể truy xuất tới thành phần private ở lớp con hoặc ở bên ngoài lớp.
Tính kế thừa là khả năng cho phép ta xây dựng một lớp mới dựa trên các định nghĩa của một lớp đã có. Lớp đã có gọi là lớp Cha, lớp mới phát sinh gọi là lớp Con và đương nhiên kế thừa tất cả các thành phần của lớp Cha, có thể chia sẻ 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.

Tính trừu tượng (abstraction):


Tính trừu tượng là một tiến trình ẩn các chi tiết trình triển khai và chỉ hiển thị tính năng tới người dùng. Tính trừu tượng cho phép bạn loại bỏ tính chất phức tạp của đối tượng bằng cách chỉ đưa ra các thuộc tính và phương thức cần thiết của đối tượng trong lập trình.


Ví dụ điển hình của chúng là sử dụng abstract class và interface để có tính trừu tượng.

Để hiểu hơn về tính từu tượng, các bạn có thể tham khảo bài viết so sánh Abstract Class và Interface

 

Tính đa hình (polymorphism):

 

Có thể thực hiện nhiều nhiệm vụ khác nhau, có thể tùy biến khi sử dụng cùng một đoạn code


Đối với tính chất này, nó được thể hiện rõ nhất qua việc gọi phương thức của đối tượng. Các phương thức hoàn toàn có thể giống nhau, nhưng việc xử lý luồng có thể khác nhau. Nói cách khác: Tính đa hình cung cấp khả năng cho phép người lập trình gọi trước một phương thức của đối tượng, tuy chưa xác định đối tượng có phương thức muốn gọi hay không. Đến khi thực hiện (run-time), chương trình mới xác định được đối tượng và gọi phương thức tương ứng của đối tượng đó. Kết nối trễ giúp chương trình được uyển chuyển hơn, chỉ yêu cầu đối tượng cung cấp đúng phương thức cần thiết là đủ.


chúng ta  có thể sử dụng nạp chồng phương thức (method overloading) và ghi đè phương thức (method overriding) để có tính đa hình.


Nạp chồng (Overloading): Đây là khả năng cho phép một lớp có nhiều thuộc tính, phương thức cùng tên nhưng với các tham số khác nhau về loại cũng như về số lượng. Khi được gọi, dựa vào tham số truyền vào, phương thức tương ứng sẽ được thực hiện.


Ghi đè (Overriding): là hai phương thức cùng tên, cùng tham số, cùng kiểu trả về nhưng thằng con viết lại và dùng theo cách của nó, và xuất hiện ở lớp cha và tiếp tục xuất hiện ở lớp con. Khi dùng override, lúc thực thi, nếu lớp Con không có phương thức riêng, phương thức của lớp Cha sẽ được gọi, ngược lại nếu có, phương thức của lớp Con được gọi.

 

xem thêm bài viết: phân biệt lớp và đối tượng trong lập trình hướng đối tượng với php

 

Bài viết này chỉ giới thiệu sơ qua về hướng đối tượng và những tính chất của nó, mạng nặng tính lý thuyết, vì thời gian có hạn nên chúng tôi sẽ cung cấp những ví dụ cụ thể và chi tiết hơn trong những phần tiếp theo, mời độc giả đón đọc

Bài viết này được lấy nguồn tham khảo từ viblo.asia:https://viblo.asia/p/tim-hieu-ve-lap-trinh-huong-doi-tuong-object-oriented-programming-bxjvZwlBGJZ và freetuts.net: https://viblo.asia/p/4-tinh-chat-cua-lap-trinh-huong-doi-tuong-trong-java-bJzKmMjPK9N trong một sô đoạn văn