1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Công nghệ Web và Ứng dụng (Nguyễn Hoàng Tùng) Phần 2

15 15 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 1,1 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Truy cập các thành phần của lớp bằng $this.. Khai báo một lớp Khai báo lớp: class tên_lớp { //khai báo thuộc tính //khai báo phương thức //sử dụng private hay public và protec

Trang 1

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG

TRONG PHP

Giảng viên phụ trách:

Nguyễn Hoàng Tùng

Bộ môn Tin học Email: nhoangtung@agu.edu.vn

Trang 2

Nội dung chính của phần này

Giới thiệu

Khai báo một lớp

Thuộc tính, phương thức

Truy cập các thành phần của lớp bằng $this

Giải quyết vấn đề không cho phép overloading trong PHP

Hàm tạo ( construct)

Hàm hủy ( destruct)

Thành phần static

Kế thừa (extends)

Hàm lấy tên lớp đang thực thi autoload

20/08/2012 Công nghệ Web và Ứng dụng 2

Trang 3

Giới thiệu

OOP chỉ có trong phiên bản từ PHP 5.x về sau

Đặc điểm OOP trong PHP 5.x: Không cho phép đa kế thừa!

20/08/2012 Công nghệ Web và Ứng dụng 3

Trang 4

Khai báo một lớp

Khai báo lớp:

class tên_lớp

{

//khai báo thuộc tính

//khai báo phương thức

//sử dụng private hay public và protected để xác định phạm vi

}

khai báo tính rõ ràng với các từ khoá tương ứng là public,

protected và private

Trang 5

Khai báo một lớp

Không khai báo lớp:

Trong nhiều file,

Trong nhiều khối lệnh,

Bắt đầu bằng (đối với tên lớp và tên phương thức)

Sử dụng:

Tạo biến đối tượng:

• $tên_object = new tên_class([giá trị khởi tạo]);

• $sv = new SinhVien("Nguyen Hoang Tung");

Sử dụng thuộc tính, phương thức:

• $tên_object->tên_thuộc_tính;

• $tên_object->tên_phương_thức([tham số]);

Trang 6

Khai báo một lớp

Ví dụ đơn giản:

<?php

class SinhVien

{

private $mSSV = "";

private $hoTen = "";

public function SinhVien($mS, $hTen) //Hàm dựng

{

$this->mSSV = $mS;

$this->hoTen = $hTen;

} }

$sv = new SinhVien("DTH051187", "Hoang Tung");

echo "Mã số SV: ".$sv->mSSV.", Họ tên: ".$sv->hoTen;

?>

Nên khởi gán giá trị ban đầu

Trang 7

Biến $this

Khi sử dụng các biến thành phần, bắt buộc phải sử dụng từ

khóa $this

20/08/2012 Công nghệ Web và Ứng dụng 7

<?php

class SinhVien

{

private $mSSV = "";

private $hoTen = "";

public function SinhVien($mS, $hTen) //Hàm dựng

{

$this->mSSV = $mS;

$this->hoTen = $hTen;

$this->$mSSV = $mS;

$this->$hoTen = $hTen;

} }

?>

Sai!

Đúng!

Trang 8

Nạp chồng hàm (Overloading)

Không cho phép nạp chồng hàm

Để giải quyết vấn đề này, ta sử dụng hàm có tham số mặc định

20/08/2012 Công nghệ Web và Ứng dụng 8

<?php

class SinhVien

{

private $mSSV = "";

private $hoTen = "";

public function SinhVien($mS = "", $hTen = "")

{

$this->mSSV = $mS;

$this->hoTen = $hTen;

} }

?>

Trang 9

Hàm tạo (Contructor)

Có 2 loại hàm tạo:

Hàm tạo thông thường: Tên hàm giống tên lớp

Hàm tạo tự động thực thi: construct()

Khi cài đặt, chỉ sử dụng một trong 2 loại hàm tạo trên

20/08/2012 Công nghệ Web và Ứng dụng 9

Trang 10

Hàm hủy (Destructor)

destruct()

Thường được dùng để dọn dẹp, đóng kết nối tới CSDL

20/08/2012 Công nghệ Web và Ứng dụng 10

Trang 11

Đối tượng static

Lưu ý, không áp dụng static đối với hàm tạo

20/08/2012 Công nghệ Web và Ứng dụng 11

<?php

class SinhVien

{

private static $mSSV = "";

private $hoTen = "";

public function SinhVien($mS = "", $hTen = "")

{

self::$mSSV = $mS;

$this->hoTen = $hTen;

} }

?>

Trang 12

Đối tượng static

Lưu ý, không cần sử dụng new để khai báo đối tượng

20/08/2012 Công nghệ Web và Ứng dụng 12

<?php

class SinhVien

{

private static $mSSV = "";

private static $hoTen = "";

public static function HienThi()

{

echo "MSSV: " self::$mSSV;

echo "Họ tên: " self::$hoTen;

} }

SinhVien::HienThi();

?>

Trang 13

Kế thừa

Dùng từ khóa extends để thể hiện kế thừa:

20/08/2012 Công nghệ Web và Ứng dụng 13

<?php

class SinhVienTH extends SinhVien {

private $soTinChi = 0;

public function SinhVienTH($mS, $hTen, $sTC) {

parent::SinhVien($mS, $hTen);

$this->soTinChi = $sTC;

}

public function HienThi() {

parent::HienThi($mS, $hTen);

echo "Số tín chỉ: " $this->soTinChi;

} }

?>

Trang 14

Hàm autoload

Hàm autoload() không phải là thành phần của lớp

Khi thực thi nó sẽ trả về tên lớp được khai báo ngay sau nó

Sử dụng rất tốt trong việc tối ưu hóa dòng lệnh

20/08/2012 Công nghệ Web và Ứng dụng 14

<?php

function autoload($className)

{

echo $className;

}

$sv = new SinhVien("DNH101234", "An");

$sv->HienThi();

$svth = new SinhVienTH("DTH101111", "Tuấn", 30);

$svth->HienThi();

?>

Trang 15

Giải đáp thắc mắc

20/08/2012 Công nghệ Web và Ứng dụng 15

Ngày đăng: 30/10/2021, 14:08

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm