Đối tượng và lớp đối tượng• Các đối tượng Objects được định nghĩa thông qua: Các thông số cơ bản của đối tượng các thuộc tính được thể hiện thông qua các biến Các hành vi phương thứ
Trang 1Lập trình hướng đối tượng trong PHP
Nguyễn Thị Thùy Liên
lienntt@hnue.edu.vn
Trang 2Đối tượng và lớp đối tượng
• Các đối tượng (Objects) được định nghĩa thông qua:
Các thông số cơ bản của đối tượng (các thuộc
tính) được thể hiện thông qua các biến
Các hành vi (phương thức) được thể hiện thông
qua các hàm
• Class (lớp) định nghĩa các thuộc tính và các
hành vi của các đối tượng có chung tên các
biến và hàm
Trang 3Lập trình hướng đối tượng trong
PHP
• Có hai dạng:
– Các lớp đối tượng đã được xây dựng sẵn (chỉ
việc đem ra sử dụng):
• Simple XML
• PDO
• SOAP
• DOM
• …
– Các lớp đối tượng do người dùng (lập trình viên)
định nghĩa
Trang 4Một số nguyên tắc
• Khai báo lớp thông qua từ khoá class
• Khai báo các đối tượng thuộc một lớp xác định (dạng biến đối tượng)
• Các phương thức, thuộc tính của một lớp có thể được đặt ở 1 trong 3 trạng thái: public,
private hoặc protected
Trang 5Khai báo lớp
class tên_lớp
{
// Danh sách các biến, lớp (thuộc tính) // Danh sách các hàm (phương thức) }
Lưu ý:
•Trong PHP 5, khi khai báo các thuộc tính và
phương thức, cần khai báo các tính chất của thuộc tính : riêng tư (private), công cộng (public)
•Các tính chất này thường được đặt trước các khai báo thuộc tính và phương thức
•Có thể thiết lập giá trị mặc định cho các thuộc tính
Trang 6Ví dụ:
class hoso
{
public $ho_ten;
public $ngay_sinh; }
Trang 7Sử dụng lớp
– Cú pháp: $tên_đối_tượng = new tên_lớp;
lớp:
– Dùng toán tử tham chiếu ->
– Tham chiếu từ tên đối tượng:
• $tên_đối_tượng->tên_thuộc_tính;
• $tên_đối_tượng->tên_phương_thức(tham số);
– Tham chiếu tới chính bản thân đối tượng trong
quá trình khai báo lớp:
• $this->tên_thuộc_tính;
• $this->thên_phương_thức(tham số);
Trang 8Sử dụng lớp - ví dụ:
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</HEAD>
<BODY>
<?
class hoso
{
public $ho_ten;
public $ngay_sinh;
}
$hoang=new hoso;
$hoang->ho_ten="Nguyễn Huy Hoàng";
$hoang->ngay_sinh = "25/7/2003";
echo "Họ tên: " $hoang->ho_ten " Ngày sinh: " $hoang->ngay_sinh;
?>
</BODY>
</HTML>
Trang 9VD 2
class hoso
{
public $ho_ten = "Nguyễn Huy Hoàng";
public $ngay_sinh = "25/7/2003";
public function lap_gia_tri($hoten,$ngaysinh)
{
$this->ho_ten = $hoten;
$this->ngay_sinh=$ngaysinh;
} }
$hoang=new hoso;
echo "Họ tên: " $hoang->ho_ten " Ngày sinh: "
$hoang->ngay_sinh;
?>
Trang 10Kế thừa lớp trong PHP
• Để kế thừa một lớp trong php, ta dùng từ khoá extends, theo sau là tên lớp cha:
class hoso2 extends hoso
{
public $noi_sinh="Thanh Hoá";
public function in_hoso()
{ echo ("Họ tên: " $this->ho_ten ".”);
echo (“ Ngày sinh: " $this->ngay_sinh " ”);
echo (“ Nơi sinh: " $this->noi_sinh);
} }
Trang 11Ghi đè các phương thức
• Cho phép viết lại các phương thức có cùng tên với phương thức của lớp cha
• Từ khoá Final đặt trước tên phương thức của lớp cha sẽ giúp cho phương thức đó không bị ghi đè
• Có thể tham chiếu tới các phương thức ở lớp cha đã bị ghi đè bằng cách sử dụng cú pháp: parent::tên_phương_thức(tham số)
Trang 12class hoso
{
public $ho_ten = "Nguyễn Huy Hoàng";
public $ngay_sinh = "25/7/2003";
final public function in_hoso()
{
echo "Họ tên:" $this->ho_ten " Ngày sinh: " $this->ngay_sinh; }
}
class hoso2 extends hoso
{
public $noi_sinh="Thanh Hoá";
public function in_hoso()
{
parent::in_hoso();
echo " Nơi sinh: " $this->noi_sinh;
}
}
$hoang=new hoso2;
$hoang->in_hoso();
?>
Trang 13Lớp trừu tượng
• Cho phép định nghĩa các lớp và các phương thức một cách trừu tượng (chỉ có tên lớp, tên phương thức)
• Các lớp và các phương thức trừu tượng được
định nghĩa bởi từ khoá abstract ở trước
• Không thể tạo ra một thể hiện của một lớp trừu tượng
• Ở lớp cha, các phương thức trừu tượng chỉ có tên và phải được đặt ở chế độ public hoặc
protected Các phương thức trừu tượng sẽ
được định nghĩa chi tiết ở các lớp con với các chế độ bảo vệ tương ứng như ở lớp cha
Trang 14Ví dụ
Trang 15Hàm dựng và hàm huỷ
Hàm dựng:
đối tượng được khởi tạo.
Hàm huỷ:
Chú ý:
nếu như lớp con cũng có hàm dựng (hàm huỷ)
parent:: construct(); (hoặc tương ứng là
parent:: destruct();)
Trang 16Ví dụ:
<?php
class BaseClass {
function construct() {
print "In BaseClass constructor\n"; }
}
class SubClass extends BaseClass { function construct() {
parent:: construct();
print "In SubClass constructor\n"; }
}
$obj = new BaseClass();
$obj = new SubClass();
?>
Trang 17Bài tập:
• 1 Viết một lớp (class) để giải phương trình bậc nhất
• 2 Viết một lớp kế thừa từ lớp giải phương trình bậc nhất để giải phương trình bậc 2:
Kế thừa:
• Các tham số a, b, x
• Hàm giải PT bậc nhất từ lớp cha trong trường hợp a=0
Chú ý: Sử dụng cách thức ghi đè đối với hàm
giải phương trình