Bài giảng Lập trình web nâng cao: Chương 4 - Trường ĐH Văn Hiến
lượt xem 5
download
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!
Bình luận(0) Đăng nhập để gửi bình luận!
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
- 24/05/2021 Lập trình web nâng cao 1
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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(…); }
- 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(){ // ... } }
- 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 { … }
- 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){ } }
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Lập trình mạng nâng cao: Giới thiệu - Nguyễn Xuân Vinh
8 p | 131 | 16
-
Bài giảng Lập trình Web: PHP
20 p | 42 | 12
-
Bài giảng Lập trình web nâng cao: Chương 11 - Trường ĐH Văn Hiến
9 p | 18 | 6
-
Bài giảng Lập trình web nâng cao: Chương 10 - Trường ĐH Văn Hiến
13 p | 25 | 6
-
Bài giảng Lập trình web nâng cao: Chương 9 - Trường ĐH Văn Hiến
15 p | 19 | 6
-
Bài giảng Lập trình web nâng cao: Chương 8 - Trường ĐH Văn Hiến
36 p | 22 | 6
-
Bài giảng Lập trình web nâng cao: Chương 7 - Trường ĐH Văn Hiến
16 p | 13 | 5
-
Bài giảng Lập trình web nâng cao: Chương 6 - Trường ĐH Văn Hiến
30 p | 12 | 5
-
Bài giảng Lập trình web nâng cao: Chương 5 - Trường ĐH Văn Hiến
26 p | 14 | 5
-
Bài giảng Lập trình web nâng cao: Chương 3 - Trường ĐH Văn Hiến
26 p | 21 | 5
-
Bài giảng Lập trình web nâng cao: Chương 2 - Trường ĐH Văn Hiến
27 p | 17 | 5
-
Bài giảng Lập trình web nâng cao: Chương 1 - Trường ĐH Văn Hiến
16 p | 22 | 5
-
Bài giảng môn Lập trình Web: Phần 3.1 - TS. Trần Quang Diệu
43 p | 22 | 3
-
Bài giảng Lập trình mạng nâng cao: Web applications - Nguyễn Xuân Vinh
11 p | 54 | 3
-
Bài giảng Lập trình web 1: Chương 6 - Nguyễn Huy Khánh
16 p | 74 | 3
-
Bài giảng Lập trình Java nâng cao: Chương giới thiệu - Nguyễn Hữu Thể
5 p | 43 | 2
-
Bài giảng Lập trình Java nâng cao: Bài 2.1 - Nguyễn Hữu Thể
14 p | 35 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn