Bài 02: Lớp - thuộc tính - phương thức của đối tượng (OOP)

PHP nâng cao 19/01/2017 07:00 924
Lập trình hướng đối tượng được viết tắt là OOP (object-oriented programming). Là một phuơng hướng lập trình tách biệt so với kiểu cổ điển. Sử dụng đối tượng để lập trình nên những chuỗi tuơng tác. OOP giúp cho các lập trình viên có thể tiết kiệm nhiều thời gian hơn so với cách viết cổ điển

Lập trình hướng đối tượng được viết tắt là OOP (object-oriented programming). Là một phuơng hướng lập trình tách biệt so với kiểu cổ điển. Sử dụng đối tượng để lập trình nên những chuỗi tuơng tác. OOP giúp cho các lập trình viên có thể tiết kiệm nhiều thời gian hơn so với cách viết cổ điển.

Là 1 phương pháp viết mã cho phép các lập trình viên nhóm các thuộc tính, hoạt động  tượng tự nhau của đối tượng vào các class”. Điều này giúp mã lệnh giữ vững được nguyên lý DRY “don’t repeat yourself” (không lặp lại chính nó) và dễ dàng để bảo trì.

1. Đối tượng là gì ?

Đối tượng là những sự vật, sự việc mà nó có những tính chất, đặc tính, hành động giống nhau và ta gom góp lại thành đối tượng.  

Ví dụ: Sinh Viên là một đối tượng vì sinh viên có các đặc tính như tên, tuổi, mã sinh viên và những hành động như đi thi, học, … Mỗi sinh viên là một thể hiện của đối tượng Sinh Viên.

Động vật ta có thể ghép chúng thành một đối tượng vì chúng có các đặc tính như mắt, mũi, chân, tay , .. và các hành động như đi, ăn, uống nước, … Mỗi con vật như chó, mèo là một thể hiện của đối tượng động vật.

Xe đạp là một đối tượng vì xe đạp có các đặc tính như bánh xe, xăm xe, vỏ bánh xe và có những hành động như chạy, dừng, đâm vào bụi … :D. Mỗi chiếc xe đạp là 1 thể hiện của xe đạp.

2. Khai báo đối tượng(CLASS)

Như ta đã biết đối tượng là những sự vật, sự việc mà nó có những tính chất, hành động giống nhau, vậy thì lớp (class) có thể được ví như là một mẩu mô tả đặc thù, trạng thái, hành động của đối tượng đó. Nghĩa theo lập trình là một đối tượng cơ bản chứa tất cả các thuộc tính và phương thức của 1 đối tượng sẽ được tạo từ  Class

Cú pháp: Để khai báo một class trong PHP ta sử dụng từ khóa class, sau đó là tên class.

class ClassName {
   //các định nghĩa, phương thức và thuộc tính
}

Trong đó:

  • Các biến bên trong class được gọi là property(thuộc tính).
  • Các hàm bên trong class được gọi là method(phương thức).
  • Các thuộc tính có thể được gán giá trị ngay khi khai báo. Đó sẽ được xem là các giá trị mặc định cho chúng. 

Ví dụ: Khai báo lớp Sinh viên(Lớp này đại diện cho đối tượng Sinh Viên).

class SinhVien{
   // Các khai báo bên trong
}

3. Thuộc tính của lớp.

Thuộc tính của lớp chính là thuộc tính của đối tượng mà lớp đó mô tả, ví dụ đối tượng động vật có những thuộc tính như: mắt, mũi, tai, chân thì những thứ đó cũng chính là thuộc tính của lớp động vật.

Cú Pháp:

class ClassName{
     var $ten_thuoc_tinh // Khai báo thuoc tinh của lop
}

Ví dụ:

Đối tượng Sinh viên có các thuộc tính như tên, tuổi, địa chỉ, lớp học, hãy khai báo lớp sinh viên và các thuộc tính của lớp đó.

class SinhVien{    var $name;
    var $age;
    var $address;
}

4. Phương thức của lớp

Phương thức của lớp chính là phương thức của đối tượng, đó là những hành động (hành vi) của đối tượng. Ví dụ đối Sinh Viên vật có các hành động như ăn, sủa, chạy …

Các phương thức nó rất giống với hàm nên nó cũng có các tính chất như hàm đó chỉ khác là phương thức nằm trong một lớp đối tượng và muốn gọi đến nó thì phải thông qua lớp đối tượng này. Từ nay đễ cho dễ tôi sẽ gọi các phược thức là hàm nhé.

Cú pháp:  

class ClassName
{
    function TenPhuongThuc($vaiable)
    {
        // các lệnh bên trong
    }
}

Ví dụ: Đối tượng Sinh viên có các thuộc tính là Tên SV, Tuổi SV, Địa chỉ SV và các hành động như là đi học, đi ngủ... Chúng ta hãy khai báo Lớp Sinh Viên với các thuộc tính và hành động đó.

class SinhVien{
    // Thuộc tính
    var $tenSV = '';
    var $tuoiSV = '';
    var $lopHoc = '';
    
    // Phương thức
    function di_hoc($mon_hoc){
        // Lệnh thực thi	
    }
    function di_ngu($gio_ngu){
        // Lệnh thực thi	
    }
}

5. Khởi tạo đối tượng.

Để tạo một đối tượng đại diện cho một class, ta dùng cú pháp:

$ten_doi_tuong = new Classname();

Ví dụ: Để khởi tạo một đối tượng đại diện cho lớp sinh viên ta làm như sau:

$sv = new SinhVien(); // SinhVien là tên class Sinh viên mà bạn vừa tạo ở trên

6. Gọi tới phương thưc/thuộc tính bên trong đối tượng.

Để gọi(trỏ) đến một thuộc tính/phương thức bên trong Class ta dùng toán tử (->) trỏ đến theo cú pháp:

6.1. Truy xuất tới thuộc tính.

Cú pháp: $ten_doi_tuong->ten_thuoc_tinh.

Ví dụ: 

class SinhVien{
    // Thuộc tính
    var $tenSV = '';
    var $tuoiSV = '';
    var $lopHoc = '';
    
    // Phương thức
    function di_hoc($mon_hoc){
        // Lệnh thực thi	
    }
    function di_ngu($gio_ngu){
        // Lệnh thực thi	
    }
}

// Khai báo đối tượng Sinh Vien
$sv = new SinhVien();

// Gán giá trị cho thuộc tính\
$sv->tenSV = 'Nguyễn Văn A';
$sv->tuoiSV = '20';

// Lấy các giá trị và xuất ra màn hình
echo $sv->tenSV; // Nguyễn Văn A
echo $sv->tuoiSV; // 20

6.2 Truy xuất tới phương thức(function)

Cú pháp: $tên_đối_tượng->function();

class SinhVien{
    // Thuộc tính
    var $tenSV = '';
    var $tuoiSV = '';
    var $lopHoc = '';
    var $mon_hoc = '';
    
    // Phương thức
    function di_hoc($mon_hoc){
        echo 'Hôm nay học môn '.$mon_hoc;
    }
    function di_ngu($gio_ngu){
        // Lệnh thực thi	
    }
}

// Khai báo đối tượng Sinh Vien
$sv = new SinhVien();

// Gọi đến hàm
$sv->di_hoc('Lập trình PHP'); //Hôm nay học môn Lập trình PHP

Lưu ý:

  • Phương thức là một hàm vì vậy nó phải có dấu '(' và ')'. Và hàm này có thể có or không có tham số.
  • $this trong một đối tượng hiện tại được dùng để ám chỉ đối tượng đó. Nó chỉ mang tầm vực trong đối tượng đó.

Ví dụ:

class SinhVien{
    // Thuộc tính
    var $tenSV = '';
    var $tuoiSV = '';
    var $lopHoc = '';
    var $mon_hoc = 'Học lập trình Android';
    
    // Phương thức
    function di_hoc(){
        echo $this->mon_hoc;
    }
    function di_ngu($gio_ngu){
        // Lệnh thực thi	
    }
}

// Khai báo đối tượng Sinh Vien
$sv = new SinhVien();

// Gọi đến hàm
$sv->di_hoc(); //Hôm nay học môn Lập trình Android

Tổng kết.

Như vậy là mình đã trình bày xong về Lớp - thuộc tính - phương thức của đối tượng (OOP). Hy vọng bài viết thực sự có ích với các bạn.

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.