Tải bản đầy đủ (.pdf) (18 trang)

Lập Trình Hướng Đối Tượng PHP Lý Thuyết và Bài Tập

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.07 MB, 18 trang )

Nguyễn Thị Thùy Liên
Khoa CNTT – ĐHSP Hà Nội



Đố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.

2


Lậ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
3


Mộ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.

4


Định nghĩa lớp
class tên_lớp{
//thânlớp
}
 Thân lớp gồm có các khai báo dữ liệu, phương thức.
 Thân lớp phải được đặt trong 1 khối lệnh PHP duy


nhất.
 Các dữ liệu (biến) được khai báo bằng var
 Các phương thức (hàm) khai báo như thông thường.

5


Khai 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
trong quá trình khai báo
6


Ví dụ:
class hoso
{
public $ho_ten;
public $ngay_sinh;

}

7


Sử dụng lớp
• Khai báo một đối tượng thuộc lớp:
– Cú pháp: $tên_đối_tượng = new tên_lớp;
• Tham chiếu tới các phương thức thuộc tính của 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ố);
8


Sử 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>
9


VD 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 ;
echo " Ngày sinh: " . $hoang->ngay_sinh;
?>
10


Kế 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);
}
}
11


Ghi đè 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ố)

12


class 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();

?>

13


Lớ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.
14



abstract class AbstractClass{
abstract protected function printA();
abstract protected function printB();
public function showAll(){
$this->printA();
$this->printB();
}}
class extClass extends AbstractClass{
protected function printA(){

echo 'A';
}
protected function printB(){
echo 'B';
}}
$ob = new extClass;
$ob->showAll(); ?>
15


Hàm dựng và hàm huỷ
 Hàm dựng:
 Khái niệm: là một phương thức được tự động kích hoạt

khi đối tượng được khởi tạo.
 Cách dùng: Khai báo một hàm với tên là __construct();
 Hàm huỷ:
 Khái niệm: Ngược lại với tạo tử
 Cách dùng: Khai báo một hàm với tên là __destruct();
 Chú ý:
 Hàm dựng và Hàm huỷ ở lớp cha sẽ không được thực thi
nếu như lớp con cũng có hàm dựng (hàm huỷ).
 Để gọi hàm dựng (hoặc hàm huỷ) ở lớp cha, cần sử dụng
parent::__construct(); (hoặc tương ứng là
parent::__destruct();)

16


Ví dụ:

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();
?>
17


Bà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

18



×