物件导向程式设计(object-oriented

上传人:kms****20 文档编号:51504335 上传时间:2018-08-14 格式:PPT 页数:34 大小:166KB
返回 下载 相关 举报
物件导向程式设计(object-oriented_第1页
第1页 / 共34页
物件导向程式设计(object-oriented_第2页
第2页 / 共34页
物件导向程式设计(object-oriented_第3页
第3页 / 共34页
物件导向程式设计(object-oriented_第4页
第4页 / 共34页
物件导向程式设计(object-oriented_第5页
第5页 / 共34页
点击查看更多>>
资源描述

《物件导向程式设计(object-oriented》由会员分享,可在线阅读,更多相关《物件导向程式设计(object-oriented(34页珍藏版)》请在金锄头文库上搜索。

1、The Basics of Object- Oriented ProgrammingEric Jui-Lin Lu, Ph.D.Department of Management Information SystemsNational Chung Hsing University1Object-Oriented Programmingn物件導向程式設計(object-oriented programming) 是一種以物件為核心的程式設計方式,這一類的 程式會利用一個或者一個以上的物件來完成工作 。n這一類程式設計的一項重點就是找出所需要的物件n當需要一個以上的物件來完成一個工作時,這些物件 之

2、間會互相呼叫(也稱之為傳送訊息,send message) 來互動nObject (or entity, instance) n也就是物件、實體。n例如:汽車、人、表單等等2Objectsn每一個物件都擁有特性(一般稱之為屬性 attribute )以及行為(一般稱之為 method 或者 function)n例如:描述汽車的方式有廠牌、排氣量、顏色等,汽 車的行為有加速、煞車等n例如:描述學生的方式有姓名、學號、系別、年級、 連絡住址、身高、體重等,學生的行為有選課、更改 住址等n每一個物件的特性值說明該物件的狀態n我的汽車是 Honda,1600cc,灰色的轎車n資管系周潔輪今年是二年級,

3、他的學號是 11223344。3Classesn從一個實體中萃取出我們有興趣的特性以及行為的過程, 我們稱之為抽象化(abstraction)n以學生為例,如果我們今天要完成的系統是保健室的登錄系統, 那麼我們需要從學生萃取出來的特色應該有姓名、學號、身高、 和體重。可是如果要完成的系統是學生選課系統,那麼我們不會 對身高和體重有興趣,自然不需要把這些特色定義出來。n我們需要對每一個物件都進行定義嗎?n以一個有一萬多人的學校,要為每一個學生物件都進行定義的話 ,這是非常耗時的。n其實,以一個特定系統而言(例如之前所說的選課系統),每一 個學生物件的特色以及行為都是相同的。如果為每一個學生物件

4、都定義的話,幾乎都是重複的。n因此,同一類的物件的特色以及行為的定義就統一的定義在類別 (class)裡。4Object-Oriented Modeln要使用物件來完成工作以前,類別必須先被定義 出來。n在寫物件導向程式的時候,n一般來說,會建議使用現成的類別。在 Java 的套件中 ,已經擁有數千個類別的定義。n如果現成的類別不存在,我們就自己定義類別。n因此,Java 的每一個程式都是一個類別n在 Java 的程式中,我們最少需要一個類別,這個 類別控制整個程式的流程,例如先取得使用者的 輸入,利用物件完成工作,最後把結果呈現出來 。這個類別也因此稱之為控制類別(control class

5、 )。5Hello World6Use of Date Class7An ExamplenA worker is paid at the hourly rate of $8 per hour for the first 35 hours worked. Overtime is paid at 1.5 times the hourly rate for the next 25 hours worked and paid at 2 times the hourly rate for additional hours worked. Write a program to input the numb

6、er of hours worked; then calculate and output the total amount paid. n物件是什麼?n描述這個物件的屬性是什麼?n這個物件的行為是什麼?8Object-Oriented Modeln開始定義這個物件的類別。這個類別,我們一 般稱之為模式類別(model class)。n產生一個控制類別,在這個控制類別中,我們 取得使用者輸入的資料,然後產生一個物件( 也就是產生一個之前定義的模式類別的一個 instance),並設定這個物件的值之後,要求物 件計算出薪資總額。n因為要用到 Input 以及 Output,我們也可以使用 JDK

7、 提供的 IO 類別,這一類的類別也稱之為 View Class.9Object-Oriented ModelnJDK 提供的 IO classes 有nJOptionPanenString s = JOptionPane.showInputDialog(“Enter Hours”);nJOptionPane.showMessageDialog(null, “Hello World”);nI/O Streams (java.io.*)nBufferedReader br = new BufferedReader(new InputStreamReader(System.in); String

8、s = br.readLine();njava.util.Scanner(JDK 1.5 or above)nScanner reader = new Scanner(System.in);int h = reader.nextInt();n這種將類別分成三個主要種類的模式,我們稱 之為 MVC (Model, View, and Control) Model.10Instances vs. ClassesnConstructor (建構元)nhourly rate, 1.5, and 2 怎麼辦?ninstance datanclass data(加上 static)n其差別在於n記憶體的考

9、量ninstance data 必須物件存在的時候,他才存在;而 class data 是 class 存在的時候,他就存在了。n類似的情形也存在於 methodninstance methodnclass method (加上 static)11Encapsulationn物件導向模式的第一個特性 - Encapsulation (封裝)n為什麼要 encapsulation?nJava 如何完成 encapsulation?npublicnprivatenprotectednnonen看一下 UML 的 Class 以及 Object 的圖12An Exercisen範例 A compan

10、y has four salespeople who sell five different products. Once a day, each salesperson passes in a slip for each different type of product sold. Each slip containsnthe salesperson number (1 to 4), nthe product number (1 to 5), andnthe total dollar value of that product sold that day. Thus, each sales

11、person passes in between 0 and 5 sales slips per day. Please write an OO program (not applet) that will read all information and summarize the total sales by salesperson.13Discussionsn討論的主題n有哪些 Model classes?n陣列 vs. Vectorn為什麼 Vector 的元素可以包含我們建立的 classes?想想看一個 物件有時候它是某個資料型態,在另一個時候它又是另一個資 料型態。這種特色稱之為

12、多型(Polymorphism),而要了解多 型,就必須先知道繼承(Inheritance)。nEncapsulation、Inheritance、以及 Polymorphism 合 稱物件導向模式的三大特色n注意,有非常多的專家學者強調不要為了符合這三大 特色而犧牲了 reusability 和 maintainability 14Inheritance15InheritancenSuperclasses vs. subclassesnbase classes vs. derived classesn子類別的物件自動繼承父類別的特性(包含屬性 以及行為)nprotected, private

13、, and public(避免把問題複雜化了,自 己去了解 none 在繼承架構所扮演的角色)n產生繼承架構的方式nspecializationngeneralization16Examplen常見的範例:圓形以及矩形。n如何定義一個圓形、矩形。17Examplepublic class Point protected int x, y; / coordinates of the Point public Point() setPoint( 0, 0 ); public Point( int a, int b ) setPoint( a, b ); public void setPoint(

14、int a, int b ) x = a; y = b; public int getX() return x; public int getY() return y; public String toString() return “ + x + “, “ + y + “; 18Examplepublic class Circle extends Point protected double radius; public Circle() / implicitly call superclasss constructor occurs here setRadius( 0 ); public

15、Circle( double r, int a, int b ) super( a, b ); setRadius( r ); public void setRadius( double r ) radius = ( r = 0.0 ? r : 0.0 ); public double getRadius() return radius; / 新增:Calculate area of Circle public double area() return Math.PI * radius * radius; / 1. 改寫:convert the Circle to a String / 2.

16、存取 Point 內的屬性 x 與 y 就跟存取自己的屬性一樣/ 3. 稱為 overriding public String toString() return “Center = “ + “ + x + “, “ + y + “ + “; Radius = “ + radius; 19Examplen請你為一家公司設計一套人事資訊系統, 這套系統要能夠讓人事室的員工隨時新增 、刪除、修改、以及查詢員工資料。n首先,討論我們需要記錄員工的哪些資料n經仔細的討論後,我們發現員工分成兩類 - 領 固定薪資的員工以及依照工作時數的員工(當 然還有可能是領取營業績效的員工)。n請以 specialization 以及 generalization 的方式 來完成繼承架構。20InheritancenInheritance is-a relationshipnAggregation has-a (o

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号