PHP OOP TÀI LIỆU PHP

49 396 0
PHP OOP TÀI LIỆU PHP

Đ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

Các khái niệm hướng đối tượngTạo các lớp (class), thuộc tính (attribute), phương thứcSử dụng các thuộc tínhGọi các phương thứcThừa kếThiết kế lớpViết mã cho các class của bạnLà phương pháp thiết kế và viết mã lệnh chương trình hướng thủ tục. Một chương trình lớn được phân rã thành các thủ tục, module nhỏ hơn.

• • • • • • • Các khái niệm hướng đối tượng Tạo lớp (class), thuộc tính (attribute), phương thức Sử dụng thuộc tính Gọi phương thức Thừa kế Thiết kế lớp Viết mã cho class bạn • Là phương pháp thiết kế viết mã lệnh chương trình hướng thủ tục. Một chương trình lớn phân rã thành thủ tục, module nhỏ hơn. • Lấy chương trình làm tảng Chương trình = Cấu trúc liệu + Thuật giải • Ứng với cấu trúc liệu, có thuật giải tương ứng. Nếu cấu trúc liệu thay đổi thuật giải viết hàm xử lý liệu bị thay đổi theo => Vậy tốn nhiều thời gian, hiệu chương trình lớn • Là phương pháp thiết kế phát triển ứng dụng dựa kiến trúc lớp (class) đối tượng (object) • Lấy đối tượng để xây dựng thuật giải, xây dựng chương trình Đối tượng = Phương thức + Dữ liệu • Cho phép liên kết cấu trúc liệu với thao tác. • Cho phép xây dựng thêm cấu trúc liệu mới, thao tác dựa có • Đối tượng giới thực – Là đối tượng tồn khách quan thực tế – Ví dụ hệ thống đặt vé xe lửa có thực thể như: tàu, nơi đến cho chuyến đi, đại lý bán vé,…Ngoài xung quanh có nhiều thực thể khác tồn ôtô, xe máy, hoa hay người,… – Mỗi thực thể có đặc điểm, khả thực hành vi đó. • Đặc điểm thuộc tính hay điểm đặc biệt mô tả thực thể. • Hành vi hoạt động hay thao tác có liên quan đến đối tượng • Đối tượng phần mềm ứng dụng – Là ánh xạ từ đối tượng có giới thực – Đối tượng phần mềm ứng dụng có trạng thái(state) hành động (behavior). Trạng thái đối tượng phần mềm giống thuộc tính, đặc điểm ứng xử giống hành vi, thao tác đối tượng giới thực. – Đối tượng phần mềm lưu trữ trạng thái trường (fields: biến ngôn ngứ lập trình), hành động thể qua phương thức => Trong lập trình hướng đối tượng đối tượng hiểu theo nghĩa thực thể. Các liệu lệnh tác động lên liệu đóng gói lại với đơn vị đầy đủ tạo nên đối tượng. Một đối tượng gồm có phương thức (method) thuộc tính(property) • Là trừu tượng hóa đối tượng có cấu trúc liệu phương thức giống (hay nói cách khác lớp tập đối tượng loại). Mỗi đối tượng thể cụ thể (instance) lớp đó. Trong lập trình, đối tượng biến có kiểu lớp… • Lớp xem kiểu liệu có cấu trúc định nghĩa chương trình mà thành phần bên phương thức, thuộc tính (hay thành phần liệu) • Một lớp mô tả tập thực thể, đối tượng thực thể thật tập thực thể đó. • Đối tượng vật thật, lớp mô hình khái niệm định nghĩa tất trạng thái hành vi cần thiết đối tượng. • Lớp không thay đổi, liệu chứa đối tượng thay đổi. (Với đối tượng liệu thuộc tính khác nhau) • Mỗi đối tượng gọi thể lớp. • Tính đóng gói (encapsulation): – Tất liệu dùng để mô tả đối tượng với hàm thao tác liệu đặt khối (còn gọi lớp). – Với đối tượng, không cho phép truy xuất trực tiếp vào thành phần liệu mà phải thông qua thành phần chức (còn gọi phương thức) đối tượng để làm việc đó. – Đây tính chất đảm bảo toàn vẹn đối tượng. • Tính kế thừa (inheritance): Đặc tính cho phép xây dựng lớp có sẵn đặc tính mà lớp khác có thông qua kế thừa. Điều cho phép lớp chia sẻ hay mở rộng đặc tính sẵn có mà tiến hành định nghĩa lại. • Tính đa hình (polymorphism): – Là định nghĩa hàm có hành động khác tùy thuộc vào ngữ cảnh. Ví dụ hàm verifyPassword() tham số thực khác với truyền vào hai tham số. • Có thể khai báo lớp với từ khóa final để giới hạn khả mở rộng (extensibility) ngăn không cho lớp khác hiệu chỉnh(modification) định nghĩa lớp đó. • Cú pháp: [chỉ_định_truy_xuất] final class_name{ . . . . . . } • Là phương thức có phần khai báo phần cài đặt, nghĩa phương thức câu lệnh phần thân. • Trong PHP, phương thức trừu tượng bắt đầu với từ khóa abstract. • Phương thức trừu tượng hợp đồng (contract), lớp cung thực cài đặt nó. • Cú pháp: abstract function tên_phương_thức([danh_sách_tham_số]); • Ví dụ: public abstract function drafMemo(); • • • • Các lớp trừu tượng dùng để khai báo đặc điểm chung lớp con.  Framework cho lớp khác Không thể tạo đối tượng từ  Có thể có nhiều lớp trừu tượng phương thức trừu tượng tạo lớp chúng.  Không thể tạo thực thể Các lớp phải cài đặt (implement)  Có thể thừa kế phương thức trừu tượng khai báo lớp cha. Ngược lại, phải khai báo phương thức trừu tượng lớp không muốn thực thi chúng. Cú pháp abstract class { [ abstract function tên_phương_thức(); ] } • Ví dụ abstract class Shape { public $color; public function setColor($color) { class Circle extends Shape { $this->color = $color; private $r; } publicgetColor() function setR($pR) public function { $this->r=$pR; } { function perimeter() returnpublic $this->color; { return 2*3.14*$this->r; } } Cirle $c =perimeter(); new Circle(); public abstract function public function area() public abstract function { $c->setR(50); return area(); 3.14*($this->r*$this->r); } public abstract draw(); publicfunction function draw() { } echo "Perimeter: echo "The Cirle is ".$c->area(); drawing ."; } } echo "Are: ".$c->area(); $c->draw(); • Interface định nghĩa tập phương thức trừu tượng chuẩn mà lớp tuân theo. • Một lớp cài đặt(implement) interface, lớp kế thừa phương thức trừu tượng interface. • Interface lớp, cách viết interface tương tự viết lớp, chúng có hai khác biệt sau: – Một lớp mô tả thuộc tính hành vi đối tượng. • – Một interface chứa hành vi mà lớp phải cài đặt(implements). Tất phương thức interface cần phải định nghĩa bên lớp cài đặt(implement) interface, lớp không lớp trừu tượng. • Cú pháp khai báo interface: interface Tên_Interface { [public] function tên_phương_thức([tham_số]); . . . } • Ví dụ interface Animal { public function eat(); public function travel(); } • Cú pháp cài đặt interface class Person implements { [modifiers] classPrintable ClassName implements InterfaceName private String name = new String("Bill"); private int age = 22; any desired properties public void printAll() { System.out.println("Name is " + name + ", age is " + age); } // implement required methods } class Stock implementsreturn_type Printable { [modifiers] method_Name(arguments) private String tickerSymbol = new String("XYZ"); { int shares = 100; private privateexecutable int currentPrice = 4000; // in pennies code public void printAll() { } System.out.println(tickerSymbol + " " + shares + " shares at " + currentPrice); System.out.println("Value: " + currentPrice * shares); any other desired methods } public void sell() { }System.out.println(tickerSymbol + " sold"); } } { • Mở rộng(Extending) Interface: //Filename: Sports.php interface Sports{ public function setHomeTeam($name); public function setVisitingTeam($name); } //Filename: Football.php interface Football extends Sports{ public function homeTeamScored($points); public function visitingTeamScored($points); //Filename: Hockey.php public function endOfQuarter($quarter); interface Hockey extends Sports { } public function homeGoalScored(); public function visitingGoalScored(); public function endOfPeriod($period); public function overtimePeriod($ot); } • PHP cung cấp số phương thức magic (magic method) để thực số thủ thuật lập trình hướng đối tượng. • Mỗi phương thức magic bắt đầu __ (hai kí tự gạch dưới), PHP gọi tự động có số điều kiện xảy cố gắng truy cập thuộc tính không tồn (hoặc không phép truy cập). • Chúng sử dụng để tạo thuộc tính, phương thức ảo. Điều gọi overloading PHP • Một số phương thức magic PHP __construct() __set() __toString() __destruct() __isset() __invoke() __call() __unset() __set_state() __callStatic() __sleep() __clone() __get() __wakeup() • Được gọi code cố gắng truy xuất để lấy giá trị từ thuộc tính không định nghĩa không truy xuất. • Nhận tham số - tên thuộc tính trả giá trị xem giá trị thuộc tính đó. • Có thể sử dụng vào việc mở rộng kiểm soát truy xuất cách tạo thuộc tính "read-only". • Ví dụ class Customer { private $name; private $data = array(); public function __get($name) { // kiểm tra xem mảng $data có tồn key $name if(array_key_exists($name, $this->data)) { //trả giá trị lấy mảng $data return $this->data[$name]; } return null ;//return "không có thuộc tính này"; } } $c = new Customer(); echo $c->email; //đọc giá trị từ thuộc tính chưa định nghĩa • Được gọi gán giá trị cho thuộc tính chưa định nghĩa không truy xuất. • Nhận vào hai tham số - tên thuộc tính giá trị gán cho thuộc tính đó. • Có thể sử dụng kiểm tra liệu lưu trữ tạo thuộc tính "read-only". • Ví dụ dùng phương thức __set() phát sinh ngoại lệ gán giá trị cho thuộc tính không tồn class Customer { private $name; public function __set($dt, $vl) { throw new Exception('Không thể gán giá trị cho biến chưa định nghĩa (undefined variables)',1); } } $c = new Customer(); $c->email = 'email@domain.com'; //lệnh làm phát sinh ngoại lệ • Phương thức magic __call()sẽ gọi, đối tượng lớp (có cài đặt __call()) gọi phương thức không tồn class Caller { public function __call($funcname, $args){ print "Undefined method $funcname called with vars:\n"; print_r($args); } } $foo = new Caller(); $a = $foo->test(1, 2, 3); [...]... thể hiện function tên_hàm1(){ } //phương thức thể hiện function tên_hàm2($tham_số){ } }  Thân lớp gồm có các khai báo thuộc tính và 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 • Ví dụ khai báo một class Point mô tả các đối tượng điểm trong 2D class Point{ var $x; var $y; function... khởi tạo giá trị cho các biến thành viên của lớp • Được gọi tự động khi tạo các thể hiện(instances) của lớp • Có thể có hoặc không có các tham số • Một lớp có thể không có phương thức khởi tạo • Trong PHP 5 có hai cách để viết một phương thức khởi tạo bên trong một lớp – Tạo một phương thức khởi tạo với tên constructor() – Tạo một phương thức khởi tạo với tên trùng với tên của lớp • Phương thức khởi... } • Phương thức khởi tạo với tên trùng với tên của Class class Point{ var $x; var $y; function Point($pX = 100, $pY = 100){ $this->x = $pX; $this->y = $pY; } } • Phương thức hủy được gọi tự động bởi PHP khi kêt thúc việc thực thi kịch bản bạn • Phương thức hủy được tạo với tên destruct() • Cú pháp khai báo thuộc tính $tên_thuộc_tính; • Truy xuất thuộc tính $tên_đối_tượng->tên_thuộc_tính;... lớp đó • Cú pháp: [chỉ_định_truy_xuất] final class_name{ } • Là phương thức chỉ có phần khai báo chứ không có phần cài đặt, nghĩa là một phương thức không có câu lệnh nào trong phần thân • Trong PHP, phương thức trừu tượng được bắt đầu với từ khóa abstract • Phương thức trừu tượng chỉ là một hợp đồng (contract), các lớp con sẽ cung thực hiện cài đặt nó • Cú pháp: abstract function tên_phương_thức([danh_sách_tham_số]); . = Cấu trúc dữ liệu + Thuật giải • Ứng với mỗi cấu trúc dữ liệu, thì có một thuật giải tương ứng. Nếu cấu trúc dữ liệu thay đổi thì thuật giải được viết trong các hàm xử lý dữ liệu đó cũng bị. dựng chương trình Đối tượng = Phương thức + Dữ liệu • Cho phép liên kết cấu trúc dữ liệu với các thao tác. • Cho phép xây dựng thêm các cấu trúc dữ liệu mới, thao tác mới dựa trên những cái đã. trình hướng đối tượng thì đối tượng được hiểu theo nghĩa là một thực thể. Các dữ liệu và các lệnh tác động lên dữ liệu được đóng gói lại với nhau trong một đơn vị đầy đủ tạo nên đối tượng. Một

Ngày đăng: 23/09/2015, 16:17

Mục lục

  • PHP Hướng Đối Tượng

  • Mục tiêu

  • Lập trình hướng cấu trúc

  • Lập trình hướng đối tượng là gì ?

  • Khái niệm về đối tượng (Object)

  • Slide 6

  • Định nghĩa lớp (Class)

  • So sánh giữa lớp và đối tượng

  • Các tính chất của lập trình HĐT

  • Slide 10

  • Định nghĩa một class

  • Slide 12

  • Sử dụng $this

  • Tạo đối tượng và sử dụng

  • Các từ khóa điều khiển truy xuất

  • Slide 16

  • Phương thức khởi tạo (Constructor)

  • Slide 18

  • Slide 19

  • Slide 20

Tài liệu cùng người dùng

Tài liệu liên quan