Nội dung chính
1. Hướng đối tượng là gì?
Hướng đối tượng là gì?

Lập trình hướng đối tượng hay còn gọi là “Object-oriented programming” viết tắt là OOP là một kiểu mã hóa cho phép các lập trình viên nhóm các tác vụ tương tự vào các lớp (Classes). Điều này giúp giữ Code của chúng ta theo nguyên lý “don’t repeat yourself” (DRY) và dễ dàng trong việc bảo trì.
Object-oriented programming is a style of coding that allows developers to group similar tasks into classes.
Theo cách lập trình cổ điển thì nếu ứng dụng hoặc website có hàng nghìn hoặc hàng triệu dòng code, tất cả mọi thứ nằm trong một trang (page) mà trong một ngày đẹp trời gặp một lổi ở đâu đó, thì ngày đẹp trời trở thành ngày tồi tệ khi bạn phải còng lưng lục tung cả source code để tìm lổi trong khi các chức năng và dữ liệu bị trùng lặp quá nhiều.
Lúc này việc sử dụng lập trình hướng đối tượng (OOP) là giải pháp hữu hiệu nhất. Giúp hạn chế tối đa việc trùng lặp code và dữ liệu, giúp chúng ta dễ dàng nâng cấp và bảo trì.
2. Cấu trúc Class (lớp đối tượng)
Class là nơi bạn có thể chứa thuộc tính và phương thức (biến và hàm). Một Class có dạng như sau:
1 2 3 4 5 6 7 8 9 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây } ?> |
Để sử dụng được Class thì chúng ta phải khai báo và lưu nó vào trong một biến PHP trước. Cách khai báo như sau:
1 2 3 4 5 6 7 8 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây } // Khai báo Class trước khi sử dụng $object = new demoClass(); ?> |
Đến đây thì các bạn đã biết cách tạo Class và khai báo sử dụng rồi. Tiếp theo là các thuộc tính và phương thức bên trong Class (biến và hàm bên trong class)
3. Thuộc tính của Class (biến bên trong Class)
Khái báo biến bên trong Class
Thuộc tính của Class đơn giản dể hiểu chỉ là một biến PHP đơn thuần. Chúng ta sẽ khai báo biến $demoBien bên trong Class như sau:
1 2 3 4 5 6 7 8 9 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây public $demoBien = "Tôi biến bên trong class!"; } // Khai báo Class trước khi sử dụng $object = new demoClass(); ?> |
Truy xuất biến bên trong Class
Lúc này biến $object do lưu một Class nên mặc định sẽ trở thành biến đối tượng (Object). Trong cơ chế Object thì sử dụng ký hiệu con trỏ “->” để gọi phần tử bên trong nó.
Tương tự thì chúng ta sẽ dùng cú pháp như sau để gọi biến bên trong class.
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây public $demoBien = "Tôi biến bên trong class!"; } // Khai báo Class trước khi sử dụng $object = new demoClass(); // Hiển thị phần tử bên trong Object echo $object->demoBien ; ?> |
Các bạn chép đoạn mã lệnh trên vào trang nào đó chạy thử, mình ví dụ là index.php kết quả sẽ là: “Tôi là biến bên trong class!”.
4. Phương thức của Class (hàm bên trong Class)
Khai báo hàm bên trong Class
Cũng giống như biến. Chúng ta khai báo hàm bên trong Class tương tự. Ở đây mình lấy ví dụ đặt tên hàm đó là $demoHam cho các bạn dễ hình dung:
1 2 3 4 5 6 7 8 9 10 11 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây function demoHam() { echo "Tôi là hàm bên trong class"; } } // Khai báo Class trước khi sử dụng $object = new demoClass(); ?> |
Truy xuất hàm bên trong Class
Để truy xuất hàm bên trong Class chúng cũng làm tương tự như biến sử dụng con trỏ “->“:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây function demoHam() { echo "Tôi là hàm bên trong class"; } } // Khai báo Class trước khi sử dụng $object = new demoClass(); // Hiển thị phần tử bên trong Object echo $object->demoHam; ?> |
Các bạn chép đoạn mã lệnh trên vào trang nào đó chạy thử, mình ví dụ là index.php kết quả sẽ là: “Tôi là hàm bên trong class!”.
5. Con trỏ $this->
Hướng đối tượng cung cấp cho chúng ta chức năng này rất hay. Chúng ta có thể truy xuất dữ liệu qua lại giữa các phương thức và thuộc tính (hàm và biến) với nhau bằng cách sử dụng con trỏ “$this->“. Dưới đây là ví dụ sử dụng hàm demoHam2 để truy xuất dữ liệu của biến $demoBien và hàm demoHam:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php class demoClass{ // Các biến và hàm của class được đặt ở đây public $demoBien = "Tôi biến bên trong class!"; function demoHam() { echo "Tôi là hàm bên trong class"; } function demoHam2() { // Gọi biến bên trong class echo $this->demoBien; echo '<br/>'; // Gọi hàm bên trong class echo $this->demoHam; } } // Khai báo Class trước khi sử dụng $object = new demoClass(); // Hiển thị phần tử bên trong Object echo $object->demoHam2; ?> |
Các bạn chép đoạn mã lệnh trên vào trang nào đó chạy thử, mình ví dụ là index.php kết quả sẽ là:
Tôi là biến bên trong class!
Tôi là hàm bên trong class
6. Tính kế thừa
Điểm hay thứ 2 và phải nói là quan trọng nhất trong lập trình hướng đối tượng là tính kế thừa. Đây là cách để giải quyết vấn đề lặp lại code mà mình đã nêu ở đầu bài. Bằng cách gom những đặc điểm chung về phương thức và thuộc tính chúng ta có thể tạo ra lớp Cha, và những lớp khác kế thừa lại ta gọi là lớp Con. Chúng ta không phải mất nhiều thời gian để khai báo lại nhiều lần những đặc điểm chung đó.
Ở đây mình sẽ lấy ví dụ con Heo, con Bò, con Ngựa để các bạn hình dung rõ. Thì thuộc tính chung là động vật đều có 4 chân chỉ khác nhau màu sắc, phương thức chung là đều ăn uống.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
<?php class dongVat{ public $soChan = "4 chân"; public $mau = "đen"; function them_mau($loai_mau){ $this->mau = $loai_mau; } function lay_mau(){ return $this->mau; } function an_uong(){ echo "Con vật đang ăn uống"; } } /*** Khởi tạo đối tượng động vật ***/ $conHeo = new dongVat(); $conBo = new dongVat(); $conNgua = new dongVat(); /*** Thêm màu sắc con vật ***/ $conHeo->them_mau("trắng"); $conBo->them_mau("vàng"); $conNgua->them_mau("đen"); /*** Xuất ra màu sắc các con vật ***/ echo $conHeo->lay_mau; echo $conBo->lay_mau; echo $conNgua->lay_mau; /*** Thực hiện phương thức ăn uống ***/ echo $conHeo->an_uong; echo $conBo->an_uong; echo $conNgua->an_uong; ?> |
Đấy!. Chỉ cần tạo một class là chúng ta có thể sử dụng cho 3 con vật là Heo, Bò, Ngựa. Đến đây chắc các bạn đã hiểu tính kế thừa trong lập trình hướng đối tượng rồi phải không ^^.
7. Lời kết
Như vậy là mình đã hướng dẫn cho các bạn biết hướng đối tượng là gì rồi. Cách thức hoạt động cũng như việc khai báo truy xuất dữ liệu như thế nào. Hy vọng các bạn sẽ nắm rõ những kiến thức này để chúng ta có thể qua những bài tiếp theo về hướng đối tượng trong PHP.
Bây giờ xem tiếp về hướng đối tượng trong PHP nhé: Magic method trong PHP – Các phương thức Magic trong PHP
Nguồn: phpcanban.com
Tag: hướng đối tượng là gì, lập trình hướng đối tượng, PHP object-oriented, OOP là gì