Đối tượng và lớp đối tượ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 của các
Trang 1Nguyễn Thị Thùy Liên Khoa CNTT – ĐHSP Hà Nội
lienntt@hnue.edu.vn
Trang 2Đối tượng và lớp đối tượ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
của các đối tượng có chung tên các biến và hàm
2
Trang 3Lập trình hướng đối tượng trong PHP
– 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
đối tượng)
ở 1 trong 3 trạng thái: public, private hoặc protected
4
Trang 5Đị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
Trang 6Khai báo lớp
6
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
Trang 7Ví dụ:
class hoso
{
public $ho_ten;
public $ngay_sinh;
}
Trang 8Sử dụng lớp
– Cú pháp: $tên_đối_tượng = new tên_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
Trang 9Sử 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>
Trang 10VD 2
10
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;
?>
Trang 11Kế thừa lớp trong PHP
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 12Ghi đè các phương thức
phương thức của lớp cha
giúp cho phương thức đó không bị ghi đè
ghi đè bằng cách sử dụng cú pháp:
parent::tên_phương_thức(tham số)
12
Trang 13<?
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;
}
}
Trang 14Lớ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
Trang 15 <?php
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';
} }
Trang 16Hàm dựng và hàm huỷ
khi đối tượng được khởi tạo
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();)
16
Trang 17Ví 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();
Trang 18Bài tập:
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