VIII. Lập trình hướng đối tượng trong PHP
5. Lớp trừu tượng trong PHP
PHP 5 cho phép xây dựng lớp trừu tượng. Lớp trừu tượng là lớp chỉ được dùng để xác định “khung xương” của một lớp cơ sở (lớp cha). Việc này sẽ cho phép xây dựng các lớp con
một cách linh động dựa trên khung xương của lớp cha (cài đặt lại các phương thức mới một cách dễ dàng và đã được chuẩn hoá từ lớp cha).
Trong một lớp trừu tượng cần phải có ít nhất một phương thức trừu tượng. Phương thức trừu tượng là hàm mà chỉ có phần định nghĩa tên hàm, không có phần cài đặt cách thức hoạt động của hàm.
Khi kế thừa từ một lớp trừu tượng, các phương thức trừu tượng của lớp cha phải được định nghĩa chi tiết trong lớp con. Vì lý do kế thừa, các phương thức trừu tượng ở lớp cha phải được ở chế độ “nhìn thấy được” (public hoặc protected), chứ không được phép ở chế độ private.
Các lớp và phương thức trừu tượng được định nghĩa bằng cách có thêm từ khoá abstract ở trước.
Ví dụ: <?php
abstract class AbstractClass {
// Force Extending class to define this method abstract protected function getValue();
abstract protected function prefixValue($prefix); // Common method
public function printOut() { print $this->getValue() . "\n"; }
}
class ConcreteClass1 extends AbstractClass {
protected function getValue() { return "ConcreteClass1"; }
public function prefixValue($prefix) { return "{$prefix}ConcreteClass1"; }
}
class ConcreteClass2 extends AbstractClass {
public function getValue() { return "ConcreteClass2"; }
return "{$prefix}ConcreteClass2"; }
}
$class1 = new ConcreteClass1; $class1->printOut();
echo $class1->prefixValue('FOO_') ."\n"; $class2 = new ConcreteClass2;
$class2->printOut(); echo $class2->prefixValue('FOO_') ."\n"; ?> Kết quả hiển thị: ConcreteClass1 FOO_ConcreteClass1 ConcreteClass2 FOO_ConcreteClass2 6. Bài tập thực hành:
- Tạo lớp gptb1 để giải phương trình bậc nhất với hai thuộc tính là a, b, kèm theo hai phương thức sau:
o Phương thức hienform() để hiển thị form nhập 2 số a, b o Phương thức giaiptb1(a, b) để giải phương trình ax+b=0; - Tạo lớp gptb2 kế thừa từ lớp gptb1 như trên, trong đó:
o Bổ sung thêm thuộc tính c
o Viết lại phương thức hienform() để hiển thị form nhập 3 số a, b, c
o Bổ sung phương thức giaiptb2(a, b, c) để giải phương trình ax2+bx+c=0, trong đó nếu a=0 thì gọi phương thức giaiptb1() để giải phương trình bậc nhất bx+c=0.