




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實用面向對象軟件工程教程casestudiesinOBJECTORIENTED軟件開發(fā)原理面向對象的概念面向對象分析(OOA)面向對象設計(OOD)事例學習:電梯控制系統(tǒng)ECS實用面向對象軟件工程軟件開發(fā)原理20世紀50年代無標準化設計的概念20世紀60年代瀑布方法軟件開發(fā)經(jīng)歷一系列標準化階段每個階段的完成需交付一個或多個里程碑文檔20世紀70年代基于模型的軟件工程首先建立系統(tǒng)的工作模型再調集資源實現(xiàn)系統(tǒng)基于模型的軟件開發(fā)藍圖、圖表、庫存、采購單等設想建模實現(xiàn)產(chǎn)品現(xiàn)代軟件工程都是采用基于模型的方法開發(fā)軟件的。工程中要考慮的問題是:What:工程所依據(jù)的模型做什么?Why:為什么要建立模型?〔背景〕How:模型如何建立?Who:模型的建立者是誰?需求定義模型分析模型設計模型一個典型的軟件開發(fā)生存期實現(xiàn)模型用戶、顧客、開發(fā)者等t工作產(chǎn)品與里程碑軟件工程方法的一個重要概念:
事務別離原那么面向對象的概念傳統(tǒng)的方法強調程序的可理解性。可理解性強的程序是模塊化的程序。為做到模塊化每個模塊做且僅做一件事每個模塊應容納一個數(shù)據(jù)結構每個模塊應能識別并對一個事件作出反響,且這個事件是唯一的面向對象方法那么強調要讓每個模塊對應且唯一對應現(xiàn)實世界中的某一件事。什么是對象(Object)?對象:一般意義來講,對象是現(xiàn)實世界中存在的一個事物。可以是物理的,如一個桌子,可以是概念上的,如一個開發(fā)工程。對象是構成現(xiàn)實世界的一個獨立的單位,具有自己的靜態(tài)特征〔用數(shù)據(jù)描述〕和動態(tài)特征〔行為或具有的功能〕。例如:人的特征:姓名、性別、年齡等,行為:衣、食、住、行等。定義:對象是系統(tǒng)中用來描述客觀事物的一個實體,是構成系統(tǒng)的一個根本單位,由一組屬性和一組對屬性進行操作的效勞組成。家具屬性價格尺寸重量位置顏色效勞購買銷售稱重移動寫字臺屬性價格尺寸重量位置顏色效勞購買銷售稱重移動位置:作為系統(tǒng)環(huán)境或問題上下文的場所、位置,如客戶地址、收件人〔機構〕地址等。操作規(guī)程:如操作菜單、某種數(shù)據(jù)輸入過程等。信息隱蔽:在標識對象時必須注意的是:須將對象的屬性隱藏在對象的內部,使得從對象外部看不到對象的信息是怎樣定義的。只能通過該對象界面上定義的操作來使用這些信息。對象的狀態(tài):給對象賦予具體的屬性值。它只能通過該對象的操作來改變。對象間的關系靜態(tài)關系:長期存在的關系,兩個對象相互知道對方是否存在。例如:組成關系是一種靜態(tài)關系,卡車是由車體、底盤、發(fā)動機、傳動裝置和輪胎等組成。為什么將車輛劃分成幾個組成局部?這樣做是為便于理解、實現(xiàn),可復用(發(fā)動機)。動態(tài)關系:對象間互相進行通信。 例如:智能汽車的傳感器對象向自動駕駛儀 對象發(fā)出“前面有移動障礙物,請左轉減速 躲避。〞的指令。什么是類和實例?把具有相同特征和行為的對象歸在一起就形成了類(class)
。李杰屬性李杰男廣東軟件1988.49#樓129室效勞看書實驗吃飯睡覺楊芳屬性效勞王輝屬性王輝男湖南計算機控制1989.19#樓320室效勞看書實驗吃飯睡覺楊芳女北京系統(tǒng)結構1989.125#樓418室看書實驗吃飯睡覺姓名性別籍貫專業(yè)出生年月住址學生屬性效勞看書實驗吃飯睡覺類成為某些對象的模板,抽象地描述了屬于該類的全部對象的屬性和操作。屬于某個類的對象叫做該類的實例(instance)。關琳屬性效勞看書實驗吃飯睡覺楊芳屬性效勞劉華屬性關琳女江蘇人工智能1990.64#樓212室效勞看書實驗吃飯睡覺楊芳女北京系統(tǒng)結構1989.125#樓418室看書實驗吃飯睡覺學生屬性姓名性別籍貫專業(yè)出生年月住址效勞看書實驗吃飯睡覺劉華男吉林CAD/CAM1990.29#樓229室什么是繼承(inheritance)?如果某幾個類之間具有共性的東西(信息結構和行為),抽取出來放在一個一般類中,而將各個類的特有的東西放在特殊類中分別描述,那么可建立起特殊類對一般類的繼承。類定義了各個實例所共有的結構,使用類的構造函數(shù),可以定義屬于該類的實例。類的每一個實例都可以使用類中定義的操作。實例的當前狀態(tài)是由實例所執(zhí)行的操作定義的。各特殊類中的底盤、發(fā)動機、輪胎、驅動裝置等可以作為共性集中到一般類汽車類中。各個特殊類可以從一般類中繼承共性,這樣防止了重復。復用共同的描述,繼承性往往被看作是軟件復用的核心概念。汽車大轎車運貨車救火車起重車建立繼承結構的好處:易編程、易理解代碼短,結構清晰易修改共同局部只要在一處修改即可易增加新類只須描述不同局部怎樣建立一個好的繼承層次類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結構。當增加一個新類時,不一定在最低層,可能需要插在中間層,這樣可能需要調整原來的層次結構。現(xiàn)要建立一個新類起重車。它的底盤、發(fā)動機、輪胎、驅動裝置等都在既存類汽車中。關系如右圖所示。新類是既存類的特殊情形。這時直接讓起重車類作為汽車類的子類即可。汽車大轎車運貨車救火車起重車起重車類汽車類假設增加一個新類拖拉機。其底盤、發(fā)動機與汽車類不同,但驅動裝置、輪胎與汽車類相同。調整繼承結構。建立一個新的一般的車輛類,把拖拉機與汽車類的共性放到車輛類中,拖拉機與汽車類都成為車輛類的子類。車輛是抽象類,相關操作到子類汽車類去找。汽車類拖拉機類汽車車輛拖拉機另一種情形是想在既存類的根底上參加新類,使得新類成為既存類的一般類。例如,已經(jīng)存在三角形類,四邊形類,想?yún)⒓右粋€多邊形類,并使之成為三角形和四邊形類的一般類。三角形類四邊形類多邊形類三角形四邊形多邊形六邊形多繼承如果一個類需要用到多個既存類的特征,可以從多個類中繼承,稱為多繼承。例如退休教師是繼承退休者和教師這兩個類的某些特征或行為而得到的一個新類。前三個情況主要是通過查找〔應用領域)類庫,找到可以原封不動地繼承的類或可以通過調整繼承層次結構繼承的類。但如果在已有的繼承層次中找不到可以繼承的既存類,就從零開始完全獨立地建立一個類。多態(tài)性和動態(tài)綁定對象互相通信,即一個對象發(fā)消息給另一個對象,執(zhí)行某些行為或又發(fā)消息給另外的對象,從而執(zhí)行系統(tǒng)的功能。發(fā)送消息的對象可能不知道另一個對象的類型是什么。退休者教師退休教師例如在C語言程序中使用命令ClearInt()時要嚴格區(qū)分該命令適合一個整數(shù),還是一個整數(shù)數(shù)組。但在C++情形,ClearInt()
對兩者都適用,它自己判斷對象是哪一個。這就是多態(tài)性(Polymorphism)。它意味著一
個操作在不同類中可以有不同的實現(xiàn)方式。如ClearInt()針對消息對象是intarray還是int,其實現(xiàn)是不同的。在一個面向對象的多態(tài)性語言中,可能代替一個特定類型的類型的集合就是它的子類集合。例如,右圖給出了4個類的繼承層次。使用這個繼承結構,發(fā)送給多邊形類的所有消息,它的所有子類都能夠響應。又例如,想要在屏幕上畫一系列多邊形,多邊形矩形多邊形三角形
多態(tài)性允許一個表的元素可以屬于一組指定的類型而不僅僅是一個類型,可以認為這是一個類族。通過遍歷這個表,發(fā)送給各個表元素以draw消息,畫出所有的多邊形。動態(tài)綁定(dynamicbinding)把函數(shù)調用與目標代碼塊的連接延遲到運行時進行。這樣,只有發(fā)送消息時才與接收消息實例的一個操作綁定。它與多態(tài)性可以使我們建立的系統(tǒng)更靈活,易于擴充。做為動態(tài)綁定的例子,考慮在多邊形類中的方法contains?(aPoint)。這個操作可以在類層次的各層重新實現(xiàn),以有效利用各個子類的特殊的特征。例如,假定一個矩形有某些邊與屏幕的邊平行,這時,檢查一個點是否包含在矩形內,比檢查一個點是否在一個一般的四邊形內的效率要高一些。如果我們有一多態(tài)多邊形實例的表,并且想要看一個點p(可能是鼠標點取的位置)是否在它們中的某一個內,那么我們遍歷這個表,給表中的每個對象P發(fā)送消息contains?(p)。動態(tài)綁定保證執(zhí)行與對象P連接的操作。例如,如果P是類矩形的實例,那么執(zhí)行與矩形連接的操作更有效,而不用與類四邊形或類多邊形連接的操作。總結使用繼承性可以方便地復用已有代碼,只需增加新代碼,或修改已有功能時不必修改已有代碼,只需定義新的行為;繼承性必須正確使用,否那么使系統(tǒng)的結構很難理解和不易維護,因為類的相同名字的行為功能可能不同。面向對象分析〔簡稱OOA〕本課程著重討論的是面向對象分析(Object_OrientedAnalysis,OOA)和面向對象設計(Object_OrientedDesign,OOD)原那么的應用。分析過程是在軟件工程的環(huán)境中建立根本系統(tǒng)行為的過程,目的是構造待開發(fā)軟件系統(tǒng)的形式模型,捕捉系統(tǒng)最根本的需求。建立OOA模型的任務形式地說明我們所面對的應用問題,最終成為軟件系統(tǒng)根本構成的對象,還有系統(tǒng)所必須遵從的,由應用環(huán)境所決定的規(guī)那么和約束。明確地規(guī)定構成系統(tǒng)的對象如何協(xié)同合作,完成指定的功能。這種協(xié)同在模型中是以一組消息連接來表示的,它們承擔了各個對象之間的通信。構造OOA模型的層次構造和評審OOA模型的順序和由五個層次組成。這五個層次是分析過程中的層次。每個層次的工作都為系統(tǒng)的規(guī)格說明增加了一個組成局部。這五個層次是:類與對象、屬性、效勞、結構和主題。類與對象層屬性層效勞層結構層主題層主題效勞消息屬性實例連接類邊界實例邊界第一層對象-類層對象-類是對與應用有關的概念的抽象,是構成軟件系統(tǒng)的根本構造塊。這一層是整個OOA模型的根底。對象所保存的信息稱為它的屬性,對象收到消息后所執(zhí)行的操作稱為它的效勞。問題在于如何建立“現(xiàn)實世界中事物〞的抽象表示,也就是如何建立根本塊。構造軟件系統(tǒng),必須先了解應用領域。愛麗絲女孩物理對象–醫(yī)學領域〔軀干、四肢、頭、五官等〕女生角色對象–學校教育領域〔學生標識、性別、學籍、社會工作歷史等〕顧客角色對象–商店管理領域〔顧客標識、信用卡標識、住址、購貨歷史等〕同一概念在不同應用領域中抽象出來的根本構造塊是不同的。對象圖符訂閱訂閱事件抽象類或模板類的圖符對象的屬性和實例連接共同組成了OOA模型的屬性層。
第二層屬性層屬性訂閱效勞
訂閱標識訂閱狀態(tài)有關細節(jié)訂戶標識收件人標識郵局標識價格標識付款標識屬性訂戶效勞11訂戶標識訂戶信息地址標識實例連接是應用領域的某些限制條件或事務規(guī)那么。表達了類的實例間的相互關聯(lián)。例如,定金取消后,相應的訂戶也應該被取消。
第三層效勞層對象的效勞加上對象實例之間的消息通信,共同組成了OOA模型的效勞層。屬性訂閱效勞確認訂閱請求訂閱請求錄入訂款信息錄入贈閱信息報告訂戶終止訂閱續(xù)訂屬性訂戶效勞錄入訂戶錄入地址報告地址圖中各個對象的實例分別執(zhí)行某些操作,為完成某項功能,這些實例之間互相通信,形成消息連接〔即所謂的協(xié)同〕。消息連接用有向箭頭表示。效勞層的消息連接實際上引入了對系統(tǒng)動態(tài)行為的描述。對圖形表示應當伴隨一段文字說明,說明一個對象在什么狀態(tài)下將對哪個消息作出什么樣的反響。在實際分析時還將引入交互作用圖,描述幾個對象如何協(xié)同合作以完成某個特定的系統(tǒng)功能。第四層結構層該層負責捕捉特定應用領域中的結構關系。典型的結構有兩種:泛化-特化結構〔Gen-Spec結構〕:它說明了對象-類間的繼承關系。整體-局部結構〔Whole-Part結構〕:它說明了對象-類間的聚合關系。泛化-特化結構〔分類結構〕泛化類是特化類的父類〔基類〕,特化類是泛化類的子類〔派生類〕。在分類結構中可以合理地分配屬性和效勞。泛化類特化類文章已發(fā)表的文章已接受的文章整體-局部結構〔組裝結構〕屬于不同類的成員可以聚合而形成新的類。整體對象實例與成員對象實例之間用連接。實例連接的數(shù)目〔基數(shù)〕標明在圖上。1,m11111報社采訪組編輯室印刷廠第五層主題層OOA模型的結構龐大而復雜,可以將對象歸類到各個主題中,把有關的對象用一個主題邊框框起來。主題可以看作是高層的模塊或子系統(tǒng)。主題“編輯管理〞包括了所有與編輯功能直接相關的對象。對于OOA模型,主題表示此模型的整體框架。可以是一個層次結構。通過對主題的識別,可以讓人們能夠比較清晰地了解大而復雜的模型。編輯管理的主題擴展OOA模型,得到面向對象設計〔OOD〕模型,和OOA模型一樣,包含有5個層次,但同時它又引進了4個“局部〞,分別是:問題領域局部人機交互局部任務管理局部數(shù)據(jù)管理局部面向對象設計〔OOD〕問題領域局部包括與應用直接有關的所有對象或類。可以將OOA模型當作問題領域局部的初始版本,逐步地細化這個初始版本,使其最終能解決實現(xiàn)限制、特性要求、性能缺陷等方面的問題。人機交互局部指定了軟件系統(tǒng)與人交互時需要的各種對象或類。任務管理局部那么指定了創(chuàng)立系統(tǒng)時必須建立的與系統(tǒng)操作管理有關的對象或類。數(shù)據(jù)管理局部定義了那些與磁盤文件和數(shù)據(jù)庫管理系統(tǒng)接口的對象或類。電梯控制系統(tǒng)
事例學習系統(tǒng)描述總的需求是設計和實現(xiàn)一個能對一座40層樓的建筑物內的4部電梯進行調度和控制的程序。這個程序應能有效地,并合理地對電梯進行調度。比方說,有人在第4層樓召喚電梯,按下向下的按鈕,那么下行的將要經(jīng)過第4層樓的一部電梯就應在第4層樓停下來,讓這個乘客進入電梯。另一種情況是:如果一部電梯沒有乘客,它就應當停在其最后一次完成的目的地請求的樓層,直到被召喚。一部電梯不應中途改變其運行方向,除非在現(xiàn)行方向上的乘客都到了其目的地。如果一部電梯中的乘客數(shù)已到達了電梯的容量,那么這部電梯就不應再響應任何新的召喚請求。每部電梯都有一個超重傳感器,計算機和程序能夠對這些傳感器進行詢問。目的地按鈕:每部電梯配有一個面板,上面有一列40個按鈕,每個按鈕代表一個樓層,并標有樓層號〔1到40〕。從計算機傳送到面板上的信號可以使這些目的地按鈕亮起來。當一個乘客按下原先指示燈不亮的目的地按鈕,這個面板后面的電路就向計算機發(fā)出一個中斷信號。當計算機接收到這其中的一個信號后,程序就去讀相應的八位輸入存放器的存儲。每個中斷對應一個存放器,每個存放器對應一部電梯。存放器中存放引起這個中斷事件的目的地按鈕所對應的樓層號。當發(fā)生中斷時,面板后的電路就將樓層號寫入相應的映射輸入存放器的存儲中。目的地按鈕指示燈:目的地面板后有燈泡。當程序中的中斷效勞例程接收到一目的地按鈕中斷,它就發(fā)送一個信號到相應的面板,使相應的按鈕指示燈發(fā)亮。信號的發(fā)送實際就是程序將按鈕對應的樓層號寫入相應的輸出存放器的存儲中。按鈕指示燈亮就相當于告訴乘客系統(tǒng)已經(jīng)注意到了他的請求,而且當乘客再一次按下該按鈕〔由于急躁?〕時就不再產(chǎn)生中斷。當控制器在某一樓層停下電梯時,它就向目的地按鈕面板發(fā)送一信號,熄滅該層的目的地按鈕指示燈。樓層傳感器:每一部電梯升降井的每一個樓層上都有一個樓層傳感器開關。當電梯正好運行到每個樓層的八英寸空間內時,電梯上的一個機輪就閉合該樓層的開關并向計算機發(fā)送一中斷信號。計算機接收到其中任一個中斷信號后,程序就去讀相應的八位輸
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2023-2028年中國制造執(zhí)行系統(tǒng)行業(yè)發(fā)展前景預測及投資戰(zhàn)略咨詢報告
- 2025年中國導爪行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 紅薯系列產(chǎn)品加工項目可行性研究報告
- 中國高端禮品酒行業(yè)市場全景分析及發(fā)展趨勢預測報告
- 公司輝縣市生活垃圾焚燒發(fā)電項目環(huán)境影響報告書的批復
- 2025年中國養(yǎng)老護理行業(yè)市場調查研究及投資前景預測報告
- 中國外牙直接行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告(2024-2030)
- 中國攝影測量用儀器市場供需格局及未來發(fā)展趨勢報告
- 平陸縣規(guī)劃設計方案模板可編輯
- 北京行測真題及答案
- TK校驗儀的使用
- 北京市中小學教師崗位考核登記表(表樣)
- 血栓性淺靜脈炎
- 棄渣場施工及方案
- SolidWorks入門教程(很全面)PPT課件
- 工作聯(lián)系函-087,088關于鋁合金窗門安裝滯后影響工期等相關事宜
- 東芝CV180調試手冊
- 叉車租賃合同
- 投資公司股權投資管理制度
- 意大利西姆公司雙D石灰窯簡介
- 四川監(jiān)理日志封面及表格(共3頁)
評論
0/150
提交評論