版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、面向對象程序設計,、,第二章面向對象的分析與設計,學習目標,1 確定系統(tǒng)中的對象2 確定對象的屬性及操作3 測試對象的有效性4 區(qū)分對象和類5 了解面向對象的編程和過程化編程之間的區(qū)別6 了解封裝的主要好處7 了解軟件開發(fā)的主要步驟,我們可以把生活所在的真實世界(Real World)當作是由許多大小不同的對象所組成的。對象可以是有生命的個體,比如一個人或一只鳥。,,對象,對象,對象也可以是無生命的個體,比如一輛汽車或
2、一臺計算機。 對象也可以是一個抽象的概念,如天氣的變化或鼠標所產(chǎn)生的事件。,,,對象的基本概念,客觀世界的組成:對象;對象之間的相互關系;對象:對象是系統(tǒng)中用來描述客觀事物的一個實體,它是構成系統(tǒng)的一個基本單位。一個對象由一組屬性和操作組成。動態(tài)觀點:對象的操作就是對象的行為,對象的特征,對象有兩個特征:屬性和行為如:一個人有他的身高或體重作屬性,有他的行為——如唱歌、打球、騎摩托車、開汽車。一條狗有它的顏色作
3、屬性,有它的行為,如搖尾巴或跳躍。一臺電視機有它的外形、尺寸和顏色,有它的行為,如開、關,接收信號,轉換頻道,調(diào)節(jié)音量。,,,汽車對象,以汽車為例,我們可定義其屬性與方法如:,課程中通過下面的案例來學習面向對象的分析與設計原理。,案例研究,公司名稱:DirectClothing公司業(yè)務包括:1、按月生成產(chǎn)品目錄2、客戶通過電話、網(wǎng)絡和傳真訂購3、隨時檢查訂購項的庫存情況4、公司接受支票和信用卡付款,定義系統(tǒng)的:對象1
4、、對象屬性——對象的特征2、對象操作——所能執(zhí)行的任務,面向對象概述,找出問題描述領域中的主要名詞對象可能是:簡單的或復雜的(襯衣,銀行)真實的或概念的(銀行出納員,帳戶)對象有:屬性(顏色,尺寸 )操作(下訂單,取消訂單),第一步:確定對象,對象找到了!,屬性:是對象的狀態(tài)特征可以是數(shù)據(jù)或其它對象對Order對象來說,可能包括orderID和items操作:是對象執(zhí)行的動作可以是對象做出的或施加給對象的動作對
5、Order對象來說,可能是place和cancel,第二步:確定對象屬性和操作,第三步:對象建模,屬性類型,與問題域的相關性對象是否在問題陳述的界限之內(nèi)?系統(tǒng)是否必須有此對象才能完成任務?在用戶與系統(tǒng)的交互中是否必須有此對象?獨立存在性屬性和操作,第四步:測試對象,面向對象分析小結,找出問題域中的對象,及其屬性和操作步驟:1、列出有關的對象(名詞) 2、列出這些對象的屬性和操作 3、為對象設置
6、合理的屬性和操作 4、應用第四步的3條評判規(guī)則檢驗對象的有效性,練習,An object-oriented design for a Java application that tracks soccer scores.The program should track:The number of goals each player scores in each gameWhat teams the players p
7、lay for and what season the games were play in,什么是類? 是同種對象的集合與抽象,,類(class),類與對象關系,面向對象程序設計的重點是類的設計,而不是對象的設計。,,類與對象的關系 類 ? 對象 抽象定義 實例 電視機 ? 一臺長虹電視機
8、 學生 ? 軟件學院05級學生小強,實例對象 (instance),汽車類有些共同的屬性(汽缸排氣量,排檔數(shù),顏色,輪胎數(shù)……)和行為(換檔,開燈,開冷氣……),但每一臺汽車個別的狀態(tài)及方法可不同于且獨立于其他汽車 。你的汽車只是這世界中許多汽車中的一個。我們就稱你的汽車是汽車類中的一個實例對象(instance)。,,面向對象與面向過程,公共數(shù)據(jù),算法+數(shù)據(jù)結構,,,對象+消息,比較,結構化程序設計
9、對應的典型的計算機語言, 例如: C面向操作的函數(shù)(方法)是程序的基本單位面向對象程序設計對應的典型的計算機語言, 例如: Java面向對象(object)的類(class)是程序的基本單位方法(函數(shù))被封裝在類中數(shù)據(jù)也常常被封裝在類中,,示例:過程化和面向對象兩種方法的比較,幾個編程小組在設計一個進銷存系統(tǒng)其中,一個小組編寫處理貨物和庫存的程序,一個小組編寫處理訂單的程序,面向過程,面向對象,,OO的真正意義,O
10、O的真正意義是使得軟件開發(fā)接近人類的正常思維,將許多原來由人完成的工作交給機器去完成:-機器語言匯編語言 高級語言-面向過程面向模塊 面向對象 OO包括一套比較完整的方法,程序設計只是其中一個環(huán)節(jié)。-面向對象的分析-面向對象的設計-面向對象的程序設計-代碼重用,,,,,小 結,Java程序是由一個個類定義組成的編寫java程序的過程是從現(xiàn)實世界中抽象出java可實現(xiàn)的類,并用合適的語句
11、定義它的過程這個定義過程包括:1、對類中各種屬性和方法的定義 2、創(chuàng)建類的對象 3、類間的各種關系和接口的定義,什么是面向對象?面向對象是一種程序設計規(guī)范,其基本思想是使用對象、類、繼承、封裝、多態(tài)等基本概念來進行程序設計。,OOP三大特性:封裝、繼承與多態(tài),封裝(encapsulation ) 封裝是一種信息隱藏技術。是指將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護在內(nèi)部,系統(tǒng)的其他部分只有通過在數(shù)據(jù)外面的被授
12、權的操作才能夠進行交互,目的在于將類使用者class user和類設計者class creator分開。在面向對象的編程中,用類來封裝相關的數(shù)據(jù)和 方法,保證了數(shù)據(jù)的安全和系統(tǒng)的嚴密性。,,,,,,,,,倉庫,,,,屬性,操作,價格表,物品, 賬單,電話, 等等,提供物品,賬單等等,考慮一個倉庫,外部只能通過管理員獲取物品。,,抽象,封裝的優(yōu)點隱藏類的實現(xiàn)細節(jié),實現(xiàn)了信息的隱藏及安全性;提高了程序的模塊化,且易于維護;具體實現(xiàn)
13、是編寫該類的人控制的,讓使用者只能通過事先定制好的方法來訪問數(shù)據(jù),可以方便地加入控制邏輯,限制對屬性的不合理操作,封裝的汽車:實現(xiàn)細節(jié)隱藏在車蓋 下;駕駛員不必知道汽車是怎樣工作的汽車的部分零件改變或更換,駕駛員不必改變對汽車的駕駛,,交通工具,Java僅支持單繼承,優(yōu)點:使程序結構清晰,減少了編碼和維護的工作量,子類可以使用父類所提供的方法,實現(xiàn)了代碼的復用。,class ThisClass extends SuperCla
14、ss{ … }現(xiàn)以下圖來說明:,繼承,繼承,,,多態(tài)用同一個名字調(diào)用實現(xiàn)不同操作的方法方式1:父類和子類之間的同名方法(覆蓋:子類方法的名稱和參數(shù)與父類方法的名稱和參數(shù)相同,在執(zhí)行過程中,子類的方法將覆蓋父類的方法)方式2:同一類中參數(shù)不同的同名方法(重載:不是子類對父類同名方法的重新定義,而是類對自身已有的同名方法的重新定義。重載方法的參數(shù)必須不同,或者是參數(shù)個數(shù)不同,或者是參數(shù)類型不同)使用方便,
15、且降低了維護和編程量,覆蓋class A {public int x,y;A(int a , int b){x=a;y=b;}public void display(){int z;z=x+y;System.out.println(“add=”+z);}}class B extends A {B
16、(int a , int b){super(a,b);}public void display(){int z;z=x*y;System.out.println(“product=”+z);}},class AB extends B {AB(int x , int y){super(x,y);}pu
17、blic static void main(String[] args){A num1=new A(4,10);B num2=new B(4,10);AB num3=new AB(4,10);num1.display();num2.display();num3.display();}},重載 class MethodOverloading
18、 {void receive (int i){System.out.println(“一個整數(shù)”);System.out.println(“i=”+i);}void receive (int x,int y){System.out.println(“兩個整數(shù)”);System.out.println(“x=”+x+”y=”+y);}void
19、receive (double d){System.out.println(“一個浮點數(shù)”);System.out.println(“d=”+d);}void receive (String s){System.out.println(“一個字符串”);System.out.println(“s=”+s);}},public class Method
20、OverloadingTest{public static void main(String[] args){MethodOverloading MO=new MethodOverloading();mo.receive(1);mo.receive(2,3);mo.receive(12.56);mo.receive(“Hello”);}}
21、,面向對象的三大特征,1.封裝:將數(shù)據(jù)成員(Data Member)和屬于此數(shù)據(jù)的操作方法(Operating Method),放在同一個實體中。2.繼承:父類定義一些通用的屬性與行為,其子類可以使用。3.多態(tài):在同一個類中可有許多同名的方法,但其參數(shù)個數(shù)與參數(shù)類型不同,而且操作過程與返回值也可能會不同。,(1)模塊化 (2)信息隱藏,(1)實現(xiàn)代碼復用 (2)簡化設計過程,解決其他語言中不能重名的問題,以前編寫的操作可以在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《面向對象程序設計(java)》
- java面向對象程序設計教案
- java面向對象程序設計03類與對象
- java-面向對象高級程序設計
- java面向對象程序設計習題集
- 《面向對象程序設計》課程設計---java日歷
- 《面向對象程序設計》課程設計java日歷
- java課程設計--java面向對象程序設計課程設計
- 面向對象程序設計(java)課程教學大綱
- 一面向對象程序設計
- 《面向對象程序設計》
- java語言與面向對象程序設計課后習題答案
- 面向對象的程序設計(java)做簡易圖畫板
- 面向對象程序設計java復習題集
- 《java面向對象程序設計》第2版課后答案
- 概論 ★第二章 java語言基礎 ★第三章 面向對象程序設計
- 《java面向對象程序設計》思考題及答案
- 面向對象java程序設計實訓課程標準
- java面向對象程序設計課程設計--學生信息管理系統(tǒng)程序設計
- 面向對象程序設計實驗
評論
0/150
提交評論