Php class 組員: 賴羿陵 林昱廷 莊正暉 張雅晴

Slides:



Advertisements
Similar presentations
分享人:張益源. 個人資料介紹 姓名:張益源 畢業:體育系 97 級 專長:田徑、籃球、游泳 任教學校:慈濟大學實驗國民小學 學校職務:體育兼資訊老師.
Advertisements

系統分析與設計 楊子青 H-1 H 、物件導向技術 n 物件導向的基本概念 – 物件、類別 – 封裝、繼承 – 同名異式 ( 多型 ) 、超荷 ( 過載 ) n 物件導向分析與設計及塑模工具 n UML 塑模工具.
第四章 类、对象和接口.
第三讲 面向对象(上).
JAVA 编 程 技 术 主编 贾振华 2010年1月.
<<會計資訊系統課程講義>> 統一塑模語言(UML)語法精要 -- 物件導向概念、需求分析及系統分析
第一章 绪论.
第8章 面向对象的软件工程 8.1 软件工程的新途径 8.2 面向对象建模 8.3 对象模型 8.4 动态模型 8.5 功能模型.
第一章 資料結構導論 1-1 資料結構簡介 1-2 認識程式設計 1-3 演算法效能分析 1-4 物件導向程式設計與Java.
Ch02物件導向程式設計 物件導向系統分析與設計.
——奧科特公開及內部培訓 系列課程(三)之十一
面向对象的程序设计(一).
第一章 面向对象程序设计.
设计模式可以帮助我们改善系统的设计,增强 系统的健壮性、可扩展性,为以后铺平道路。
程設一.
经 络 学.
類別與物件 Class & Object.
第15章 繼承與多重繼承 15-1 繼承的基礎 15-2 覆寫與隱藏父類別的成員 15-3 子類別的建構與解構子 15-4 多重繼承
類別的繼承-一般關係: 繼承是宣告的類別繼承現存類別的部份或全部的成員資料和方法 , 新增額外的成員資料和方法或覆寫和隱藏繼承類別的方法
第7单元 面向过程编程—— 继承与多态.
Ch07 介面與多重繼承 物件導向程式設計(II).
第9章 面向对象方法学引论 9.1 面向对象方法学概述 9.2 面向对象的概念 9.3 面向对象建模 9.4 对象模型 9.5 动态模型
JAVA程序设计 (03) JAVA Programming
第5章 进一步讨论对象和类.
再回首: Java关键字 数据类型:byte boolean char double float int long short ,
第5章 Java中类、对象、接口 及包的概念 5.1 类的基本概念 5.2 类的继承概念 5.3 抽象类和接口 5.4 包.
手外伤与断指再植 上海第二医科大学 附属第九人民医院骨科.
程設一.
Ch08 巢狀類別 物件導向程式設計(II).
第5章 面向对象程序设计 本章要点 5.1 面向对象程序设计概述 5.2 Java语言的面向对象程序设计 5.3 方法的使用和对象数组
H、物件導向技術 物件導向的基本概念 物件、類別 封裝、繼承 同名異式(多型) 、超荷(過載) 物件導向分析與設計及塑模工具 UML塑模工具.
PHP 5 入門基礎 第一個PHP 程式 PHP 資料型態.
Chap 18 類別與物件 夫有土者,有大物也。有大物者,不可以物。 物而不物,故能物物。 明乎物物者之非物也,豈獨治天下百姓而已哉!
Derived Class 前言 衍生類別的定義 單一繼承 public, protected, 和 privated 基底類別
Classes Lecturer: 曾學文.
第六章 类的扩展与继承.
第16章 VB.NET物件導向與.NET Framework
Java 程式設計 講師:FrankLin.
物件導向系統分析與設計與UML.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
第六章 继承性和派生类 胡昊 南京大学计算机系软件所.
Object-Oriented Programming:
Java软件设计基础 5. 继承与多态.
Java程序设计 第9章 继承和多态.
Object-Oriented Programming: Polymorphism
類別的繼承 Vehicle Car.
中国矿大计算机学院杨东平 第5章 接口和包 中国矿大计算机学院杨东平
第四章 小技巧.
PHP5與MySQL5 入門學習指南 凱文瑞克 著 第 17 章 物件.
面向对象程序设计 QQ群: Object-Oriented Programming 汽车学院.
第9讲 Java的继承与多态(一) 类的继承 子类的创建 方法覆盖.
软件学院 张 慧 清华大学软件学院.
C/C++/Java 哪些值不是头等程序对象
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第16章 虛擬與多形 16-1 虛擬函數 16-2 純虛擬函數與抽象類別 16-3 多形 16-4 虛擬繼承與虛擬解構子.
第7章 繼承/多型/介面 注意: 本投影片僅供本書上課教師使用,非經同意請勿上網轉載或供拷貝.
透過YouTuBe API取得資料 建國科技大學 資管系 饒瑞佶 2018/1 V1.
JAVA 编 程 技 术 主编 贾振华 2010年1月.
Inheritance -II.
Interfaces and Packages
Object-Oriented Programming in C++ 第二章 类和对象
第二章 Java语法基础.
第二章 Java基本语法 讲师:复凡.
方法進階及物件導向基礎 Lecturer: 楊昌樺.
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
辅导课程十二.
面向对象程序设计 C++教程 西安工业大学 于帆.
資料結構與C++程式設計進階 C++與資料結構 講師:林業峻 CSIE, NTU 7/ 5, 2010.
第6章 继承和多态 伍孝金
Presentation transcript:

Php class 組員:49726006賴羿陵 49726016林昱廷 49726024莊正暉 49726045張雅晴 49726050鄧偉勛

大綱 PHP 繼承Example 物件的基本觀念 多型polymorphism 類別class 多型Example 類別Example 介面 物件object 介面Example 物件Example 參考資料 作用域scope 物件導向語言三大特色 資料封裝encaosulation 封裝Example 繼承inheritance

PHP php 5是一種真正支援物件導向程式設計「OOP」(Object-oriented Programming)的程式語言,物件導向程式設計是一種更符合人性化的程式設計的方法,因為我們本來就是生活在一個物件的世界,思考模式也遵循著物件導向的模式。

物件的基本觀念 「物件」(Object)是物件導向技術的關鍵,以程式的角度來說,物件是資料與相關函數結合在一起的組合體。

類別 class

php class PHP的類別是物件的原型或藍圖,可以用來建立物件,屬於使用者自行定義的資料型態。類別的組成元素有兩種,如下所示: 成員資料(Data Member):物件的資料部分,也就是PHP變數、常數或其他物件的「成員變數」(Member Variables),這是物件「屬性」(Properties)的狀態值。 成員函數(Member Functions):物件處理資料的PHP函數,稱為「方法」(Methods),這是物件的行為。

定義class語法 class 類別名稱 { Var $特性變數名稱[=值]; Function 方法名稱(參數) { } }

Example class Person { var $name ; function setName($name) {$this->name=$name;}//將參數$name設定給特性變數 function getName($name) {$return $this->name;}//傳回特性變數值 }

物件 object

建立物件 在PHP程式可以將類別視為資料型態,使用new運算子來建立物件。 建立一個物件,要使用保留字new New語法 建立物件以後,可以透過物件呼叫它的方法 $物件變數->物件方法(引數);

Example $p1=new Person;//建立Person物件$p1 $p1->setName(‘Jay’);//呼叫$p1物件的方法 $p1->Name=$p1->getName();//呼叫$p1物件的方法 Echo $p1->name;//存取$p1物件特性變數

作用域 SCOPE

成員變數與方法的存取-三種修飾子 public修飾子:成員變數或方法是此類別建立物件對外的使用介面,可以讓PHP程式碼呼叫物件的成員方法或存取成員變數。如果沒有使用修飾子,預設是public。 protected修飾子:成員變數或方法可以在類別本身和其子類別存取或呼叫,類別的子類別稱為繼承。 private修飾子:成員變數或方法只能在類別本身呼叫或存取。

物件導向語言三大特色 封裝 (Encapsulation):將資料 (屬性) 與操作此資料的函數 (方法) 包在一起的特性。 繼承 (Inheritance):承接所有父類別 (Parent Class) 所有屬性方法,並可以加以改造的特性。 多型 (Polymorphism):當子類別繼承父類別中有成員的名稱相同時,則繼承類別的成員將會取代父類別的成員。

資料封裝 encaosulation

物件導向之資料封裝 將資料和處理資料的函數組合起來建立成物件。在PHP定義物件是使用「類別」(Class),它屬於一種抽象資料型態,換句話說,就是替程式語言定義新的資料型態。 對物件的使用者而言,只要曉得介面的方法,以及該方法所使用的參數就可以,並不須知道該方法的程式碼是如何設計的,物件的介面若規範的很清楚,那麼任何人都可以輕易的使用該物件。

Example <?php function getPhone()//傳回特性變數電話的值 class Person { return $this->phone; var $name; var $phone; function show()//顯示特性變數姓名及電話 function Person($name, $phone) echo '$name =', $this->name, "<BR>"; $this->name = $name; echo '$phone =', $this->phone, "<BR>"; $this->phone = $phone; } function setName($name)//設定特性變數的值提供姓名的引數值 $p1 = new Person('Kay', '07-7310606'); $aname = $p1->getName(); $aphone = $p1->getPhone(); echo '$aname=', $aname, '<BR>'; echo '$aphone=', $aphone, '<BR>'; function setPhone($phone) //設定特性變數的值提供電話的引數值 $p1->setName('Fay'); $p1->setPhone('07-2256666'); echo '$p1->show() : <BR>'; $p1->show(); ?> function getName()//傳回特性變數姓名的值 http://localhost/phpMyAdmin/encaosulation.php return $this->name;

繼承 inheritance

物件導向之繼承 繼承是物件的再利用,當定義好一個類別後,其他類別就可以繼承這個類別的資料和方法,新增或取代繼承物件的資料和方法。 定義時使用保留字entends 其後跟著基礎類別的名稱 Class 類別名稱 [extends 基礎類別] 例: class Employee extends Person 類別如果是繼承自其他類別,我們稱此類別為繼承類別的「子類別」(Subclass)或「延伸類別」(Derived Class),繼承的類別稱為「父類別」(Superclass)或「基礎類別」(Base Class)。 PHP的繼承並不支援多重繼承,也就是只能有一個父類別,而不能有多個父類別,繼承可以擴充現有類別的功能。  在父類別的成員方法如果並不符合需求,我們可以在子類別宣告同名的成員方法來取代父類別的成員方法,稱為「覆寫」(Override)。 final(終結繼承):當任一個類別被宣告為final之後,其將無法被繼承。當一個方法被宣告為final之後,其將無法被覆寫。(注意:final 無法宣告給任何屬性。)

Example <?php class Employee extends Person return $this->salary; { var $position; function show()//顯示特性變數職位及薪水 var $salary; function Employee($name, $phone, $position, $salary) parent::show(); echo '$position=', $this->position, "<BR>"; $this->Person($name, $phone); echo '$salary =', $this->salary, "<BR>"; $this->position = $position; $this->salary = $salary; } include_once(‘person.inc’); function setPosition($position)//設定特性變數的值提供職位引數值 $e2 = new Employee('Kay', '07-2256666', 'manager', 80000); echo '$e2->getPosition() = ', $e2->getPosition(), "<BR>"; echo '$e2->getSalary() = ', $e2->getSalary(), "<BR>"; echo '$e2->getName() = ', $e2->getName(), "<BR>"; echo '$e2->getPhone() = ', $e2->getPhone(), "<BR>"; function setSalary($salary)//設定特性變數的值提供薪水引數值 echo '$e2->show() : <BR>'; $e2->show(); ?> function getPosition()//傳回特性變數職位的值 http://localhost/phpMyAdmin/inheritance.php return $this->position; function getSalary()//傳回特性變數薪水的值

多型 polymorphism

物件導向之多型 多形屬於物件導向最複雜的特性,類別如果需要處理各種不同的資料型態,此時並不需要針對不同的資料型態建立各別的類別,可以直接繼承基礎類別,繼承此類別建立同名方法處理不同的資料型態,因為方法的名稱相同,只是程式碼不同,也稱為「同名異式」。是物件導向程式設計重要且複雜的觀念,它可以讓應用程式更容易擴充,一個同名方法,就可以處理不同資料型態的物件,產生不同的操作。

物件導向之多型 物件導向程式語言實作多形可以分成兩種方式,如下所示: 1.類別繼承的成員方法覆寫:繼承基礎類別覆寫同名的成員方法來處理不同資料型態的物件,如果有新的資料型態,即物件,只需新增繼承的子類別和覆寫成員方法。 2.PHP介面的成員方法實作:PHP的介面是指同一個物件擁有多種型態,換個角度,不同物件可以擁有相同的介面型態,所以一樣可以透過介面來實作多型。

多型的格式

多型的示意圖

EXAMPLE

執行結果

介面 Interface

介面之定義 為建立這些公用方法的一個管道,在介面中可以宣告公用抽象(abstract)的方法及常數,而讓其他的類別來實作這些方法。 介面只提供方法的宣告部分,並不提供方法的實作部分,因此可說介面為純設計用途。但類別除了提供資料欄(特性)及許多方法的宣告之外,也提供方法的實作,可以說具有設計及實作的功能。許多類別可同時安裝同一介面所宣告的公用抽象方法。

介面之使用 Interface AreaInterface { function area(); function circ(); } //定義一個介面AreaInterface,提供兩個公用的抽象方法area()&circ()

Example <?php interface AreaInterface //介面名稱AreaInterface { function area(); //面積方法area() return 2.0*3.14159*$this->radius; //傳回周長 function circ(); //周長方法circ() } class RectClass implements AreaInterface //實作一個介面 $rectclass = new RectClass(3.0, 5.0); var $w, $h; echo("<B>實作一個介面</B><BR>"); function RectClass($ww, $hh) //建構子 echo("長方形<BR>"); echo("寬=" . $rectclass->w . "<BR>"); $this->w = $ww; echo("高=" . $rectclass->h . "<BR>"); $this->h = $hh; echo("面積=" . $rectclass->area() . "<BR>"); echo("周長=" . $rectclass->circ() . "<BR>"); public function area() $circclass = new circclass(100.0); return $this->w*$this->h; //傳回面積 echo("圓形<BR>"); public function circ() echo("半徑=" . $circclass->radius . "<BR>"); echo("面積=" . $circclass->area() . "<BR>"); return 2.0*($this->w+$this->h); //傳回周長 echo("周長=" . $circclass->circ() . "<BR>"); ?> http://localhost/phpMyAdmin/interface.php class CircClass implements AreaInterface //實作一個介面 var $radius; function CircClass($radius) //建構子 $this->radius = $radius; return $this->radius*$this->radius*3.14159; //傳回面積

參考資料 http://php.net/manual/en/language.oop5.php PHP程式語言入門 林邦杰 編著<全華>