第次課.上升到面向?qū)ο骭第1頁
第次課.上升到面向?qū)ο骭第2頁
第次課.上升到面向?qū)ο骭第3頁
第次課.上升到面向?qū)ο骭第4頁
第次課.上升到面向?qū)ο骭第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、 2013年齊齊哈爾大學軟件工程專業(yè) -3- 課程介紹課程介紹 第一個案例第一個案例 對象技術對象技術 對象和類對象和類 對象技術相關原則對象技術相關原則 上升到面向?qū)ο笊仙矫嫦驅(qū)ο?二 課程的內(nèi)容安排 2013年齊齊哈爾大學軟件工程專業(yè) -4- 對象(對象(Object) 對象(對象(Object)是一個實體、一件事、)是一個實體、一件事、 一個名詞,可以獲得的某種東西,可以一個名詞,可以獲得的某種東西,可以 想象有自己標識的任何事物想象有自己標識的任何事物 u可以是物理存在的可以是物理存在的 u也可能是概念中的也可能是概念中的 u或軟件中的實體或軟件中的實體 2013年齊齊哈爾大學軟件工

2、程專業(yè) 客觀世界是由許多不同種類的對象構成 的,每一個對象都有自己的運動規(guī)律和 內(nèi)部狀態(tài),不同對象之間相互聯(lián)系、相 互作用。 面向?qū)ο蠹夹g是一種從組織結構上模擬 客觀世界的方法,從組成客觀世界的對 象著眼,通過抽象,將對象映射到計算 機系統(tǒng)中,又通過模擬對象之間的相互 作用、相互聯(lián)系來模擬現(xiàn)實客觀世界, 描述客觀世界的運動規(guī)律。 2013年齊齊哈爾大學軟件工程專業(yè) 1. 客觀世界(事物)由許多各種各樣的實 體組成,這些實體稱為對象。 2. 每個對象都具有各自的內(nèi)部狀態(tài)和運動規(guī) 律,在外界其他象或環(huán)境的影響下, 對象本身 根據(jù)發(fā)生的具體事件做出不同的反應,進行對 象間的交互。 3. 按照對象的屬

3、性和運動規(guī)律的相似性,可 以將相近的對象劃分為一類。 4. 復雜的對象由相對簡單的對象通過一定的 方式組成。 5. 不同對象的組合及其間的相互作用和聯(lián)系 構成了各種不同的系統(tǒng),構成了人們所面對的 客觀世界。 2013年齊齊哈爾大學軟件工程專業(yè) 1. Everything is an object. 一切皆為對象。 2. A program is a bunch of objects telling each other what to do by sending messages. 程序由相互作用的一群對象組成,對象相互間 的作用通過發(fā)送消息進行。 3. Each object has its

4、 own memory made up of other objects. 每個對象都擁有自己的內(nèi)存空間,對象可由其 它對象組合而成。 4. Every object has a type. 每個對象都擁有一個類型。 5. All objects of a particular type can receive the same messages. 某個特定類型的所有對象均能接收同樣的消息 。 2013年齊齊哈爾大學軟件工程專業(yè) -8- UML中的對象中的對象 命名對象命名對象匿名對象匿名對象 僅有對象名的對象僅有對象名的對象 2013年齊齊哈爾大學軟件工程專業(yè) 類類 類一系列對象的抽象描述,

5、這些對象類一系列對象的抽象描述,這些對象 共享相同的屬性、操作、關系和語義共享相同的屬性、操作、關系和語義 u一個具體的對象是該類的一個實例一個具體的對象是該類的一個實例 抽象過程強調(diào)相關特征而忽略其它的抽象過程強調(diào)相關特征而忽略其它的 特征特征 u類抽象的過程就是將具體對象的特征和類抽象的過程就是將具體對象的特征和 行為進行參數(shù)化,分別用類的屬性(行為進行參數(shù)化,分別用類的屬性( attribute)和操作()和操作(operation)來)來 表示表示 -9- 2013年齊齊哈爾大學軟件工程專業(yè) -10- 屬性屬性 屬性屬性(attribute)是是類的特征類的特征或特性或特性 u屬性的值

6、是某一特定對象的屬性的值是某一特定對象的屬性值屬性值 u在類中屬性名必須是在類中屬性名必須是唯一的唯一的 u每一個類的實例都有為這個類定義的所每一個類的實例都有為這個類定義的所 有屬性的值有屬性的值 銀行帳戶類屬性銀行帳戶類屬性 帳號帳號 銀行名稱銀行名稱 擁有者擁有者 金額金額 吳迪的銀行帳戶屬性值吳迪的銀行帳戶屬性值 12345678 中國建設銀行中國建設銀行 吳迪吳迪 3024.48 2013年齊齊哈爾大學軟件工程專業(yè) -11- 屬性取決于視點屬性取決于視點 從從銷售人員銷售人員的角度的角度 u 型號型號 u 價格價格 u 顏色顏色 u 里程數(shù)里程數(shù) 一輛汽車具有的一輛汽車具有的屬性屬性

7、: : 從維修人員的角度從維修人員的角度 u 馬達類型馬達類型 u 傳動類型傳動類型 u 維修記錄維修記錄 2013年齊齊哈爾大學軟件工程專業(yè) -12- 操作操作 操作操作(operation)訪問或修改對象的訪問或修改對象的 屬性值屬性值 對象的行為是由為此對象定義的一系對象的行為是由為此對象定義的一系 列操作決定的列操作決定的 一個類可能同時存在多個實例,也可一個類可能同時存在多個實例,也可 能在某一時刻沒有實例能在某一時刻沒有實例 一個類的所有實例都可以使用在這個一個類的所有實例都可以使用在這個 類中定義的操作類中定義的操作 2013年齊齊哈爾大學軟件工程專業(yè) 從從銷售人員銷售人員的角度

8、的角度 u處理客戶定單處理客戶定單 u準備銷售合同準備銷售合同 u加入清單加入清單 u從清單中刪除從清單中刪除 一輛汽車具有的一輛汽車具有的操作操作: : 從維修人員的角度從維修人員的角度 u測試剎車測試剎車 u修理剎車修理剎車 u轉動輪胎轉動輪胎 u檢查馬達速度檢查馬達速度 操作取決于視點操作取決于視點 2013年齊齊哈爾大學軟件工程專業(yè) -14- UML中的類中的類 屬性屬性 操作操作 2013年齊齊哈爾大學軟件工程專業(yè) -15- 類和對象的關系類和對象的關系 每一個對象都是某一個類的實例每一個對象都是某一個類的實例 每一個類在某一時刻都有零個或更多每一個類在某一時刻都有零個或更多 的實體

9、的實體 類是靜態(tài)的;它們的存在、語義和關類是靜態(tài)的;它們的存在、語義和關 系在執(zhí)行前就已經(jīng)定義好了系在執(zhí)行前就已經(jīng)定義好了 對象是動態(tài)的;它們在程序執(zhí)行時可對象是動態(tài)的;它們在程序執(zhí)行時可 以被創(chuàng)建和刪除以被創(chuàng)建和刪除 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè)作業(yè) 舉出教師和學生屬性和操作的例子。舉出教師和學生屬性和操作的例子。 2013年齊齊哈爾大學軟件工程專業(yè) -17- 課程介紹課程介紹 第一個案例第一個案例 對象技術對象技術 對象和類對象和類 對象技術相關原則對象技術相關原則 上升到面向?qū)ο笊仙矫嫦驅(qū)ο?二 課程的內(nèi)容安排 2013年齊齊哈爾大學軟件工程專業(yè) -18- 對象技術相關原則

10、對象技術相關原則 對象技術基本原則對象技術基本原則 u抽象(抽象(Abstraction) u封裝(封裝(Encapsulation) u泛化(泛化(Generalization) u多態(tài)(多態(tài)(Polymorphism) u 2013年齊齊哈爾大學軟件工程專業(yè) 2013年齊齊哈爾大學軟件工程專業(yè) -20- 抽象和封裝抽象和封裝 抽象是事物區(qū)別于其它事物的本質(zhì)特抽象是事物區(qū)別于其它事物的本質(zhì)特 征征 u抽象的過程取決于使用者的目的,它應抽象的過程取決于使用者的目的,它應 該包括使用者所感興趣的那些職責,而忽該包括使用者所感興趣的那些職責,而忽 略掉其它不相關的部分略掉其它不相關的部分 封裝是指

11、對象對其客戶隱藏具體的實封裝是指對象對其客戶隱藏具體的實 現(xiàn),是軟件模塊化思想的體現(xiàn)現(xiàn),是軟件模塊化思想的體現(xiàn) u通過封裝實現(xiàn)信息隱藏和數(shù)據(jù)抽象通過封裝實現(xiàn)信息隱藏和數(shù)據(jù)抽象 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立賬戶類,抽象作業(yè):建立賬戶類,抽象 class AccountRecord /成員變量成員變量 / 收入時間收入時間 / 收入金額收入金額 / 收入項目內(nèi)容收入項目內(nèi)容 / 操作時間操作時間 string getDate() void setDate(string date) / 操作金額操作金額 / 支出內(nèi)容支出內(nèi)容 /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 vo

12、id AddAccoutRecord(string date,float mon,string cont) /顯示一條支出記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 void ShowAccountRecord() ; 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立賬戶類,封裝作業(yè):建立賬戶類,封裝 class AccountRecord private: / 收入時間收入時間 / 收入金額收入金額 / 收入項目內(nèi)容收入項目內(nèi)容 public: / 操作時間操作時間 string getDate() void setDate(string date) / 操作金額操作金額 / 支出內(nèi)容支

13、出內(nèi)容 /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 void AddAccoutRecord(string date,float mon,string cont) /顯示一條支出記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 void ShowAccountRecord() ; 2013年齊齊哈爾大學軟件工程專業(yè) 泛化泛化 泛化是類與類之間一種關系泛化是類與類之間一種關系 u通過這種關系一個類可以共享另外一個通過這種關系一個類可以共享另外一個 或多個類的結構和行為或多個類的結構和行為 u為了實現(xiàn)泛化關系,采用繼承機制為了實現(xiàn)泛化關系,采用繼承機制 一個子類(一個子類(subclass

14、)繼承一個或多個父)繼承一個或多個父 類(類(superclass),從而實現(xiàn)了不同的抽),從而實現(xiàn)了不同的抽 象層次象層次 通過這種關系可以很容易地復用已經(jīng)存在通過這種關系可以很容易地復用已經(jīng)存在 的數(shù)據(jù)和代碼,并實現(xiàn)多態(tài)處理的數(shù)據(jù)和代碼,并實現(xiàn)多態(tài)處理 u根據(jù)父類的個數(shù)不同,存在著單一繼承根據(jù)父類的個數(shù)不同,存在著單一繼承 和多重繼承兩種情況和多重繼承兩種情況 -23- 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立收入和支出賬戶類,泛作業(yè):建立收入和支出賬戶類,泛 化化 class AccountRecordSave:public AccountRecord private: / 收入人

15、收入人 public: / 收入人成員函數(shù)收入人成員函數(shù) string getUser() void setUser(string name) /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 void AddAccoutRecordSave(string date,float mon,string cont,string nam) /顯示一條支出記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 void ShowAccountRecordSave() ; 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立收入和支出賬戶類,泛作業(yè):建立收入和支出賬戶類,泛 化化 class AccountRec

16、ordCheck:public AccountRecord private: / 支出支出人人 public: / 支出人成員函數(shù)支出人成員函數(shù) string getUser() void setUser(string name) /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 void AddAccoutRecordCheck(string date,float mon,string cont,string nam) /顯示一條支出記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 void ShowAccountRecordCheck() ; 2013年齊齊哈爾大學軟件工程專業(yè) 多態(tài)多態(tài)

17、 多態(tài)在同一外表(接口)下表現(xiàn)出多多態(tài)在同一外表(接口)下表現(xiàn)出多 種行為的能力種行為的能力 u是對象技術的根本特征是對象技術的根本特征 u對象技術正是利用多態(tài)提供的動態(tài)行為對象技術正是利用多態(tài)提供的動態(tài)行為 特征,來封裝變化,適應變更,以達到特征,來封裝變化,適應變更,以達到 系統(tǒng)的穩(wěn)定系統(tǒng)的穩(wěn)定 -26- 2013年齊齊哈爾大學軟件工程專業(yè) -27- 應用多態(tài)性應用多態(tài)性 假設我們有一個數(shù)組假設我們有一個數(shù)組sharr,里面放著一排,里面放著一排 Shape,但是不知道哪些是,但是不知道哪些是Rectangle,哪些,哪些 是是Circle。利用多態(tài)性,我們可以:。利用多態(tài)性,我們可以:

18、for (int i = 0; i sharr.length; +i) Shape shape = (Shape)sharri; shape.draw(); 遍歷整個數(shù)組的過程中,各個遍歷整個數(shù)組的過程中,各個Shape自己知道自己知道 應當如何在畫布上繪制自己。應當如何在畫布上繪制自己。shape.draw() 這同一行代碼在這同一行代碼在shape指向不同的對象時表現(xiàn)指向不同的對象時表現(xiàn) 出不同的行為,這就是所謂多態(tài)性出不同的行為,這就是所謂多態(tài)性 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立收入和支出賬戶類,虛函數(shù)作業(yè):建立收入和支出賬戶類,虛函數(shù) class AccountRecor

19、d private: / 收入時間,金額,項目和收入人收入時間,金額,項目和收入人 public: / 操作時間操作時間 string getDate() void setDate(string date) / 操作金額操作金額 / 支出內(nèi)容支出內(nèi)容 /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 virtual void AddAccoutRecord(string date,float mon,string cont,string nam) /顯示一條支出記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 virtual void ShowAccountRecord() ; 2013年齊

20、齊哈爾大學軟件工程專業(yè) 作業(yè):建立收入賬戶類,虛函數(shù)作業(yè):建立收入賬戶類,虛函數(shù) class AccountRecordSave:public AccountRecord private: public: / 收入收入人成員函數(shù)人成員函數(shù) string getUser() void setUser(string name) /增加一條收入記錄方法聲明增加一條收入記錄方法聲明 virtual void AddAccoutRecord(string date,float mon,string cont,string nam) /顯示一條收入記錄信息的方法聲明顯示一條收入記錄信息的方法聲明 virt

21、ual void ShowAccountRecord() ; 2013年齊齊哈爾大學軟件工程專業(yè) 作業(yè):建立支出賬戶類,虛函數(shù)作業(yè):建立支出賬戶類,虛函數(shù) class AccountRecordCheck:public AccountRecord public: / 支出人成員函數(shù)支出人成員函數(shù) string getUser() void setUser(string name) /增加一條支出記錄方法聲明增加一條支出記錄方法聲明 virtual void AddAccoutRecord(string date,float mon,string cont,string nam) /顯示一條支出

22、記錄信息的方法聲明顯示一條支出記錄信息的方法聲明 virtual void ShowAccountRecord() ; 2013年齊齊哈爾大學軟件工程專業(yè) -31- 課程介紹課程介紹 第一個案例第一個案例 對象技術對象技術 對象和類對象和類 對象技術相關原則對象技術相關原則 上升到面向?qū)ο笊仙矫嫦驅(qū)ο?二 課程的內(nèi)容安排 2013年齊齊哈爾大學軟件工程專業(yè) -32- 實例:對象思維分析問題實例:對象思維分析問題 2013年齊齊哈爾大學軟件工程專業(yè) -33- 問題分析問題分析-1 A. 這里面有什么東西?這里面有什么東西? u月老,小伙,姑娘,戀人,玫瑰花月老,小伙,姑娘,戀人,玫瑰花 B.

23、每個東西看上去是什么樣的?每個東西看上去是什么樣的? u月老,看上去有些年紀了,挺熱心的月老,看上去有些年紀了,挺熱心的 u小伙,看上去很強壯,很誠實的小伙,看上去很強壯,很誠實的 u姑娘,看上去好漂亮,還很溫柔姑娘,看上去好漂亮,還很溫柔 u戀人,看上去很黏糊,當然就結婚了戀人,看上去很黏糊,當然就結婚了 u玫瑰花,火紅火紅的,難怪姑娘動情了玫瑰花,火紅火紅的,難怪姑娘動情了 2013年齊齊哈爾大學軟件工程專業(yè) -34- 問題分析問題分析-2 C. 每個東西能做點什么用?每個東西能做點什么用? u月老:牽線搭橋,介紹認識月老:牽線搭橋,介紹認識 u小伙:追求獻花,表達愛意小伙:追求獻花,表達

24、愛意 u姑娘:仰慕傾情,以身相許姑娘:仰慕傾情,以身相許 u戀人:拍拖,戀人:拍拖,結婚,結婚 u玫瑰花:令姑娘頭暈,傳情示愛玫瑰花:令姑娘頭暈,傳情示愛 2013年齊齊哈爾大學軟件工程專業(yè) -35- 問題分析問題分析-3 D. 這些東西都呆在什么地方?這些東西都呆在什么地方? u月老:婚介所,交友網(wǎng)站月老:婚介所,交友網(wǎng)站 u小伙:軟件園,住回龍觀小伙:軟件園,住回龍觀 u姑娘:人民醫(yī)院,住望京姑娘:人民醫(yī)院,住望京 u戀人:情侶路,電影院,戀人:情侶路,電影院, u玫瑰花:花店里,小伙手中,姑娘手中玫瑰花:花店里,小伙手中,姑娘手中 2013年齊齊哈爾大學軟件工程專業(yè) -36- 問題分析問

25、題分析-4 E. 這些東西之間有什么關系?這些東西之間有什么關系? 關系關系 月老月老小伙小伙姑娘姑娘戀人戀人玫瑰玫瑰 月老月老干媽干媽舅媽舅媽撮合者撮合者 沒關系沒關系 小伙小伙 干兒子干兒子男友老公男友老公 男主角男主角 買送主買送主 姑娘姑娘 外甥女外甥女 女友太太女友太太女主角女主角 受主受主 戀人戀人 作品作品組成組成組成組成使用者使用者 玫瑰玫瑰 沒關系沒關系 信物信物受物心意受物心意 信物信物 2013年齊齊哈爾大學軟件工程專業(yè) -37- 問題分析問題分析-5 F. 這些東西是怎么成事的?這些東西是怎么成事的? u月老牽線搭橋,介紹小伙和姑娘認識月老牽線搭橋,介紹小伙和姑娘認識 u姑娘和小伙一見鐘情,成為一對戀人姑娘和小伙一見鐘情,成為一對戀人 u一對戀人開始拍拖一對戀人開始拍拖 u小伙追求獻花,表達對姑娘的愛意小伙追求獻花,表達對姑娘的愛意 u姑娘收到姑娘收到999火紅玫瑰,激動得頭暈目?;鸺t玫瑰,激動得頭暈目眩 u小伙真心求婚,姑娘以身相許小伙真心求婚,姑娘以身相許 u一對戀人終于走入婚姻殿堂一對戀人終于走入婚姻殿堂 2013年齊齊哈爾大學軟件工程專業(yè) -38- 上升到面向?qū)ο笊仙矫嫦驅(qū)ο?用面向?qū)ο笥^點

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論