intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Lập trình web nâng cao: Chương 4 - Trường ĐH Văn Hiến

Chia sẻ: _ _ | Ngày: | Loại File: PDF | Số trang:20

32
lượt xem
5
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng Lập trình web nâng cao: Chương 4 Lập trình hướng đối tượng, cung cấp cho người học những kiến thức như: Các vấn đề cơ bản hướng đối tượng trong; Lớp abstract và lớp interfaces. Mời các bạn cùng tham khảo!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình web nâng cao: Chương 4 - Trường ĐH Văn Hiến

  1. 24/05/2021 Lập trình web nâng cao 1
  2. Chương 4 – Lập trình hướng đối tượng 01 Giới thiệu 02 Các vấn đề cơ bản hướng đối tượng trong 03 Lớp abstract và lớp interfaces 04 05 24/05/2021 Lập trình web nâng cao 2
  3. Giới thiệu  OOP (Object Orient Programming) revolves around the concept of grouping code and 01 data together in logical units called classes. This process is usually referred to as 02 encapsulation, or information hiding, since its goal is that of dividing an application into separate entities whose internal components can change without altering their external interfaces. (ref: page 132 of ebook “phparchitects Zend PHP 5 Certification Study Guide”) 04  Programming techniques may include features such as 05 abstraction, encapsulation, polymorphism, and inheritance. 24/05/2021 Lập trình web nâng cao 3
  4. Các vấn đề cơ bản OOP trong PHP  Cú pháp khai báo lớp: 1. Declaring a Class class { // Your code is here … 02 }  Ví dụ: class foo { const BAR = "Hello World"; 04 } echo foo::BAR; 05 24/05/2021 Lập trình web nâng cao 4
  5. Các vấn đề cơ bản  Cú pháp khai báo lớp kế thừa: OOP trong PHP class a { function test(){ echo "a::test called";} function func(){echo "a::func called";} 1. Declaring a Class } class b extends a { 02 function test(){echo "b::test called";} } class c extends b { function test(){parent::test();} } class d extends c { function test(){b::test();} 04 }  Cú pháp xác định lớp đối tượng: if ($obj instanceof MyClass) { 05 } echo "\$obj is an instance of MyClass"; 24/05/2021 Lập trình web nâng cao 5
  6.  Cú pháp tạo đối tượng: Các vấn đề cơ bản $myClassInstance = new myClass(); OOP trong PHP 1. Declaring a Class Lưu ý: các đối tượng trong PHP được sử dụng theo dạng tham chiếu 2. Instantiating an  Ví dụ: 02 Object $myClassInstance = new myClass(); $copyInstance = $myClassInstance(); // Cả 2 biến $myInstance và $copyInstance cùng trỏ tới một đối tượng thuộc myClass. 04 $myClassInstance 0fx01 myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 6
  7. Các vấn đề cơ bản  Phương thức và thuộc tính: OOP trong PHP 1. Declaring a Class class myClass { function myFunction() { 2. Instantiating an echo "You called myClass::myFunction"; 02 Object } } // Access methods of class myClass $obj = new myClass(); $obj -> myFunction(); 04 $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 7
  8. Các vấn đề cơ bản  Con trỏ $this: OOP trong PHP class myClass { 1. Declaring a Class function myFunction($data) { echo "The value is $data"; 2. Instantiating an Object } 02 function callMyFunction($data) { // Call myFunction() $this->myFunction($data); } } 04 $obj = new myClass(); $myClassInstance $obj->callMyFunction(123); myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 8
  9.  Cú pháp hàm khởi tạo: Các vấn đề cơ bản class foo { OOP trong PHP function construct() 1. Declaring a Class { 2. Instantiating an Object // PHP 5 new style constructor 3. 02 Constructors } echo METHOD ; function foo() { // PHP 4 style constructor 04 } } $myClassInstance new foo(); myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 9
  10.  Cú pháp hàm hủy: Các vấn đề cơ bản class foo { OOP trong PHP function construct() 1. Declaring a Class { 2. Instantiating an Object echo METHOD . PHP_EOL; 3. 02 Constructors } function destruct() { 4. Destructors echo METHOD ; } 04 } new foo(); $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 10
  11. Các vấn đề cơ bản  Phạm vị truy cập: OOP trong PHP Key Visibility 1. Declaring a Class public The resource can be accessed from any scope. 2. Instantiating an Object protected The resource can only be accessed from within 02 the class where it is defined and its descendants 3. Constructors The resource can only be accessed from within private the class where it is defined. 4. Destructors The resource is accessible from any scope, but 5. Visibility final cannot be overridden in descendant classes.  Ví dụ: 04 $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 11
  12.  Ví dụ 1: kết quả của đoạn lệnh sau Các vấn đề cơ bản class foo { OOP trong PHP public $foo = 'bar'; protected $baz = 'bat'; private $qux = 'bingo'; function construct(){ 1. Declaring a Class var_dump(get_object_vars($this)); } 2. Instantiating an Object } class bar extends foo { 02 3. Constructors function construct(){ var_dump(get_object_vars($this)); 4. Destructors } } new foo(); 5. Visibility new bar(); 04 $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 12
  13.  Ví dụ 2: kết quả của đoạn lệnh sau Các vấn đề cơ bản class foo { OOP trong PHP public $foo = 'bar'; protected $baz = 'bat'; private $qux = 'bingo'; function construct(){ 1. Declaring a Class $this->foo="pig"; var_dump(get_object_vars($this)); echo ""; 2. Instantiating an Object } } 02 3. Constructors class bar extends foo { function construct(){ 4. Destructors var_dump(get_object_vars($this)); echo ""; } } 5. Visibility new foo(); new bar(); 04 $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 13
  14.  Ví dụ 3: kết quả của đoạn lệnh sau Các vấn đề cơ bản class foo { OOP trong PHP public $foo = 'bar'; protected $baz = 'bat'; private $qux = 'bingo'; function construct(){ 1. Declaring a Class var_dump(get_object_vars($this)); echo ""; } 2. Instantiating an Object } class baz { 02 3. Constructors function construct() { $foo = new foo(); 4. Destructors var_dump(get_object_vars($foo)); echo ""; } } 5. Visibility new foo(); new baz(); 04 $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 14
  15. Các vấn đề cơ bản  Cú pháp khai báo biến và phương thức tĩnh: OOP trong PHP class foo { static $bar = "bat"; // output: 1. Declaring a Class static public function baz(){ bat echo "Hello World"; Hello world 2. Instantiating an Object } } 02 3. Constructors echo foo::$bar.""; foo::baz(); 4. Destructors  Cú pháp khai báo hằng trong lớp: 5. Visibility class foo { const BAR = "Hello World"; // output: 6. Constants, Static Methods and } Hello world 04 Properties echo foo::BAR; $myClassInstance myClass 05 $copyInstance 24/05/2021 Lập trình web nâng cao 15
  16. Lớp Abstract và lớp Interface Interface a. Giới thiệu 01  Go  … 02 Interface  Go Chim và máy bay có cùng interface Animal  Run Fly nhưng cách  Fly thức hoạt động  Swim của Fly là khác … 04 nhau hoàn toàn Interface 05 Transport  Run  … 24/05/2021 Lập trình web nâng cao 16
  17. Lớp Abstract và lớp Interface Khái niệm b. Lớp trừu tượng  Lớp trừu tượng là một lớp cha cho tất cả các lớp có cùng bản chất. Do đó mỗi lớp dẫn xuất (lớp con) chỉ có thể kế thừa từ một lớp trừu tượng.  Lớp trừu tượng không cho phép tạo instance (không thể tạo được các đối tượng thuộc lớp đó).  Cú pháp khai báo lớp trừu tượng abstract class { [properties … ] abstract function func_name(…); public function func_name(…); }
  18. Lớp Abstract và lớp Interface  Ví dụ b. Lớp trừu tượng abstract class DataStore_Adapter { private $id; abstract function insert(); abstract function update(); public function save(){ if (!is_null($this->id)){ $this->update(); } else { $this->insert(); } } } class PDO_DataStore_Adapter extends DataStore_Adapter { public construct($dsn){ // ... } function insert(){ // ... } function update(){ // ... } }
  19. Lớp Abstract và lớp Interface c. Lớp interface Khái niệm  Lớp interface được xem như một mặt nạ cho tất cả các lớp cùng cách thức hoạt động nhưng có thể khác nhau về bản chất.  Lớp dẫn xuất có thể kế thừa từ nhiều lớp interface để bổ sung đầy đủ cách thức hoạt động của mình (đa kế thừa - Multiple inheritance).  Cú pháp khai báo lớp interface interface class { … }
  20. Lớp Abstract và lớp Interface c. Lớp interface  Ví dụ • interface DataStore_Adapter { public function insert(); public function update(); public function save(); public functionnewRecord($name = null);} class PDO_DataStore_Adapter implements DataStore_Adapter { public function insert(){ // ... } public function update(){ // ... } public function save(){ // ... } public function newRecord($name = null){ } }
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2