版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
實用面向對象軟件工程教程casestudiesinOBJECTORIENTED軟件開發原理面向對象的概念面向對象分析(OOA)面向對象設計(OOD)事例學習:電梯控制系統ECS實用面向對象軟件工程軟件開發原理20世紀50年代
無規范化設計的概念20世紀60年代
瀑布方法軟件開發經歷一系列規范化階段每個階段的完成需交付一個或多個里程碑文檔20世紀70年代
基于模型的軟件工程首先建立系統的工作模型再調集資源實現系統基于模型的軟件開發藍圖、圖表、庫存、采購單等設想建模實現產品現代軟件工程都是采用基于模型的方法開發軟件的。工程中要考慮的問題是:
What:
工程所依據的模型做什么?
Why:
為什么要建立模型?(背景)
How:
模型如何建立?
Who:
模型的建立者是誰?
需求定義模型分析模型設計模型一個典型的軟件開發生存期實現模型用戶、顧客、開發者等t工作產品與里程碑軟件工程方法的一個重要概念:
事務分離原則分析模型與設計模型分開建立。分析模型主要描述系統將要做什么,完全不考慮具體的實現方法和技術細節。設計模型描述在給定的實現環境下如何創建一個特定的軟件系統。前者確定系統的行為,后者給出系統實現的藍圖。需求定義模型主要用于獲取和處理系統的整體需求。面向對象的概念傳統的方法強調程序的可理解性。可理解性強的程序是模塊化的程序。為做到模塊化每個模塊做且僅做一件事每個模塊應容納一個數據結構每個模塊應能識別并對一個事件作出反應,且這個事件是唯一的面向對象方法則強調要讓每個模塊對應且唯一對應現實世界中的某一件事。因此,面向對象(Object-Oriented)不僅是一些具體的軟件開發技術與策略,而且是一整套關于如何看待軟件系統與現實世界的關系以及如何進行系統構造的軟件方法學。特點:面向對象的技術建立的模型與客觀世界一致,因而便于理解;適應變化的需要,修改局限在模塊中;可復用性。什么是對象(Object)?對象:一般意義來講,對象是現實世界中存在的一個事物。可以是物理的,如一個桌子,可以是概念上的,如一個開發項目。對象是構成現實世界的一個獨立的單位,具有自己的靜態特征(用數據描述)和動態特征(行為或具有的功能)。例如:人的特征:姓名、性別、年齡等,行為:衣、食、住、行等。定義:對象是系統中用來描述客觀事物的一個實體,是構成系統的一個基本單位,由一組屬性和一組對屬性進行操作的服務組成。家具屬性價格尺寸重量位置顏色服務購買銷售稱重移動寫字臺屬性價格尺寸重量位置顏色服務購買銷售稱重移動對象的分類
外部實體:與軟件系統交換信息的外部設備、相關子系統、操作員或用戶等。
信息結構:問題信息域中的概念實體,如信號、報表、顯示信息等。
需要記憶的事件:在系統運行過程中可能產生并需要系統記憶的事件,如單擊鼠標左鍵、擊打鍵盤“”鍵等。
角色:與軟件系統交互的人員所扮演的角色,如經理、部長、技術支持等。組織機構:有關機構,如單位、小組等。位置:作為系統環境或問題上下文的場所、位置,如客戶地址、收件人(機構)地址等。
操作規程:如操作菜單、某種數據輸入過程等。信息隱蔽:在標識對象時必須注意的是:須將對象的屬性隱藏在對象的內部,使得從對象外部看不到對象的信息是怎樣定義的。只能通過該對象界面上定義的操作來使用這些信息。對象的狀態:給對象賦予具體的屬性值。它只能通過該對象的操作來改變。對象間的關系靜態關系:長期存在的關系,兩個對象相互知道對方是否存在。例如:組成關系是一種靜態關系,卡車是由車體、底盤、發動機、傳動裝置和輪胎等組成。為什么將車輛劃分成幾個組成部分?這樣做是為便于理解、實現,可復用(發動機)。動態關系:對象間互相進行通信。 例如:智能汽車的傳感器對象向自動駕駛儀 對象發出“前面有移動障礙物,請左轉減速 規避。”的指令。什么是類和實例?把具有相同特征和行為的對象歸在一起就形成了類(class)
。李杰屬性李杰男廣東軟件1988.49#樓129室服務看書實驗吃飯睡覺楊芳屬性服務王輝屬性王輝男湖南計算機控制1989.19#樓320室服務看書實驗吃飯睡覺楊芳女北京系統結構1989.125#樓418室看書實驗吃飯睡覺姓名性別籍貫專業出生年月住址學生屬性服務看書實驗吃飯睡覺類成為某些對象的模板,抽象地描述了屬于該類的全部對象的屬性和操作。屬于某個類的對象叫做該類的實例(instance)。關琳屬性服務看書實驗吃飯睡覺楊芳屬性服務劉華屬性關琳女江蘇人工智能1990.64#樓212室服務看書實驗吃飯睡覺楊芳女北京系統結構1989.125#樓418室看書實驗吃飯睡覺學生屬性姓名性別籍貫專業出生年月住址服務看書實驗吃飯睡覺劉華男吉林CAD/CAM1990.29#樓229室什么是繼承(inheritance)?如果某幾個類之間具有共性的東西
(信息結構和行為),抽取出來放在一個一般類中,而將各個類的特有的東西放在特殊類中分別描述,則可建立起特殊類對一般類的繼承。類定義了各個實例所共有的結構,使用類的構造函數,可以定義屬于該類的實例。類的每一個實例都可以使用類中定義的操作。實例的當前狀態是由實例所執行的操作定義的。各特殊類中的底盤、發動機、輪胎、驅動裝置等可以作為共性集中到一般類汽車類中。各個特殊類可以從一般類中繼承共性,這樣避免了重復。復用共同的描述,繼承性往往被看作是軟件復用的核心概念。汽車大轎車運貨車救火車起重車建立繼承結構的好處:易編程、易理解代碼短,結構清晰易修改共同部分只要在一處修改即可易增加新類只須描述不同部分怎樣建立一個好的繼承層次類可以從父類繼承,父類又可以從它的父類繼承,形成多層次的繼承結構。當增加一個新類時,不一定在最低層,可能需要插在中間層,這樣可能需要調整原來的層次結構。現要建立一個新類起重車。它的底盤、發動機、輪胎、驅動裝置等都在既存類汽車中。關系如右圖所示。新類是既存類的特殊情形。這時直接讓起重車類作為汽車類的子類即可。汽車大轎車運貨車救火車起重車起重車類汽車類若增加一個新類拖拉機。其底盤、發動機與汽車類不同,但驅動裝置、輪胎與汽車類相同。調整繼承結構。建立一個新的一般的車輛類,把拖拉機與汽車類的共性放到車輛類中,拖拉機與汽車類都成為車輛類的子類。車輛是抽象類,相關操作到子類汽車類去找。汽車類拖拉機類汽車車輛拖拉機另一種情形是想在既存類的基礎上加入新類,使得新類成為既存類的一般類。例如,已經存在三角形類,四邊形類,想加入一個多邊形類,并使之成為三角形和四邊形類的一般類。三角形類四邊形類多邊形類三角形四邊形多邊形六邊形多繼承如果一個類需要用到多個既存類的特征,可以從多個類中繼承,稱為多繼承。例如退休教師是繼承退休者和教師這兩個類的某些特征或行為而得到的一個新類。前三個情況主要是通過查找(應用領域)類庫,找到可以原封不動地繼承的類或可以通過調整繼承層次結構繼承的類。但如果在已有的繼承層次中找不到可以繼承的既存類,就從零開始完全獨立地建立一個類。多態性和動態綁定對象互相通信,即一個對象發消息給另一個對象,執行某些行為或又發消息給另外的對象,從而執行系統的功能。發送消息的對象可能不知道另一個對象的類型是什么。退休者教師退休教師例如在C語言程序中使用命令ClearInt()時要嚴格區分該命令適合一個整數,還是一個整數數組。但在C++情形,ClearInt()
對兩者都適用,它自己判斷對象是哪一個。這就是多態性(Polymorphism)。它意味著一
個操作在不同類中可以有不同的實現方式。如ClearInt()針對消息對象是intarray還是int,其實現是不同的。在一個面向對象的多態性語言中,可能代替一個特定類型的類型的集合就是它的子類集合。例如,右圖給出了4個類的繼承層次。使用這個繼承結構,發送給多邊形類的所有消息,它的所有子類都能夠響應。又例如,想要在屏幕上畫一系列多邊形,多邊形矩形多邊形三角形
多態性允許一個表的元素可以屬于一組指定的類型而不僅僅是一個類型,可以認為這是一個類族。通過遍歷這個表,發送給各個表元素以draw消息,畫出所有的多邊形。動態綁定(dynamicbinding)把函數調用與目標代碼塊的連接延遲到運行時進行。這樣,只有發送消息時才與接收消息實例的一個操作綁定。它與多態性可以使我們建立的系統更靈活,易于擴充。做為動態綁定的例子,考慮在多邊形類中的方法contains?(aPoint)。這個操作可以在類層次的各層重新實現,以有效利用各個子類的特殊的特征。例如,假定一個矩形有某些邊與屏幕的邊平行,這時,檢查一個點是否包含在矩形內,比檢查一個點是否在一個一般的四邊形內的效率要高一些。如果我們有一多態多邊形實例的表,并且想要看一個點p(可能是鼠標點取的位置)是否在它們中的某一個內,那么我們遍歷這個表,給表中的每個對象P
發送消息contains?(p)。動態綁定保證執行與對象P
連接的操作。例如,如果P
是類矩形的實例,則執行與矩形連接的操作更有效,而不用與類四邊形或類多邊形連接的操作。總結面向對象是一種建模的技術,由于它與人們認識世界的方法非常一致,所以建立的模型容易理解。對象有類似性因而用類來描述;類描述了類似對象的行為和信息,封裝性使用者不需知道類怎樣實現,只要知道它的外部功能,因此修改可局限在類的內部,系統易維護。多態性對象可以不必知道與它通信的對象的確切的類,因此容易增加新類,易擴充系統功能,不需修改其它類。使用繼承性可以方便地復用已有代碼,只需增加新代碼,或修改已有功能時不必修改已有代碼,只需定義新的行為;繼承性必須正確使用,否則使系統的結構很難理解和不易維護,因為類的相同名字的行為功能可能不同。面向對象分析(簡稱OOA)本課程著重討論的是面向對象分析
(Object_OrientedAnalysis,OOA)
和面向對象設計(Object_OrientedDesign,OOD)原則的應用。分析過程是在軟件工程的環境中建立基本系統行為的過程,目的是構造待開發軟件系統的形式模型,捕捉系統最基本的需求。建立OOA模型的任務形式地說明我們所面對的應用問題,最終成為軟件系統基本構成的對象,還有系統所必須遵從的,由應用環境所決定的規則和約束。明確地規定構成系統的對象如何協同合作,完成指定的功能。這種協同在模型中是以一組消息連接來表示的,它們承擔了各個對象之間的通信。構造OOA模型的層次構造和評審OOA模型的順序和由五個層次組成。這五個層次是分析過程中的層次。每個層次的工作都為系統的規格說明增加了一個組成部分。這五個層次是:類與對象、屬性、服務、結構和主題。類與對象層屬性層服務層結構層主題層主題服務消息屬性實例連接類邊界實例邊界第一層對象-類層對象-類是對與應用有關的概念的抽象,是構成軟件系統的基本構造塊。這一層是整個OOA模型的基礎。對象所保存的信息稱為它的屬性,對象收到消息后所執行的操作稱為它的服務。問題在于如何建立“現實世界中事物”的抽象表示,也就是如何建立基本塊。構造軟件系統,必須先了解應用領域。愛麗絲女孩物理對象–醫學領域(軀干、四肢、頭、五官等)女生角色對象–
學校教育領域(學生標識、性別、學籍、社會工作歷史等)顧客角色對象–
商店管理領域(顧客標識、信用卡標識、住址、購貨歷史等)
同一概念在不同應用領域中抽象出來的基本構造塊是不同的。對象圖符訂閱訂閱事件抽象類或模板類的圖符對象的屬性和實例連接共同組成了OOA模型的屬性層。
第二層屬性層屬性訂閱服務
訂閱標識訂閱狀態有關細節訂戶標識收件人標識郵局標識價格標識付款標識屬性訂戶服務11訂戶標識訂戶信息地址標識實例連接是應用領域的某些限制條件或事務規則。體現了類的實例間的相互關聯。例如,定金取消后,相應的訂戶也應該被取消。
第三層服務層對象的服務加上對象實例之間的消息通信,共同組成了OOA模型的服務層。屬性訂閱服務確認訂閱請求訂閱請求錄入訂款信息錄入贈閱信息報告訂戶終止訂閱續訂屬性訂戶服務錄入訂戶錄入地址報告地址圖中各個對象的實例分別執行某些操作,為完成某項功能,這些實例之間互相通信,形成消息連接(即所謂的協同)。消息連接用有向箭頭表示。服務層的消息連接實際上引入了對系統動態行為的描述。對圖形表示應當伴隨一段文字說明,說明一個對象在什么狀態下將對哪個消息作出什么樣的反應。在實際分析時還將引入交互作用圖,描述幾個對象如何協同合作以完成某個特定的系統功能。第四層結構層該層負責捕捉特定應用領域中的結構關系。典型的結構有兩種:泛化-特化結構(Gen-Spec結構):它表明了對象-類間的繼承關系。整體-部分結構(Whole-Part結構):它表明了對象-類間的聚合關系。泛化-特化結構(分類結構)泛化類是特化類的父類(基類),特化類是泛化類的子類(派生類)。在分類結構中可以合理地分配屬性和服務。泛化類特化類文章已發表的文章已接受的文章整體-部分結構(組裝結構)屬于不同類的成員可以聚合而形成新的類。整體對象實例與成員對象實例之間用連接。實例連接的數目(基數)標明在圖上。1,m11111報社采訪組編輯室印刷廠第五層主題層OOA模型的結構龐大而復雜,可以將對象歸類到各個主題中,把有關的對象用一個主題邊框框起來。主題可以看作是高層的模塊或子系統。主題“編輯管理”包括了所有與編輯功能直接相關的對象。對于OOA模型,主題表示此模型的整體框架。可以是一個層次結構。通過對主題的識別,可以讓人們能夠比較清晰地了解大而復雜的模型。編輯管理的主題擴展OOA模型,得到面向對象設計(OOD)模型,和OOA模型一樣,包含有5個層次,但同時它又引進了4個“部分”,分別是:問題領域部分人機交互部分任務管理部分數據管理部分面向對象設計(OOD)
問題領域部分
包括與應用直接有關的所有對象或類。可以將OOA模型當作問題領域部分的初始版本,逐步地細化這個初始版本,使其最終能解決實現限制、特性要求、性能缺陷等方面的問題。
人機交互部分指定了軟件系統與人交互時需要的各種對象或類。
任務管理部分則指定了創建系統時必須建立的與系統操作管理有關的對象或類。
數據管理部分定義了那些與磁盤文件和數據庫管理系統接口的對象或類。
電梯控制系統
事例學習系統描述總的需求是設計和實現一個能對一座40層樓的建筑物內的4部電梯進行調度和控制的程序。這個程序應能有效地,并合理地對電梯進行調度。比如說,有人在第4層樓召喚電梯,按下向下的按鈕,那么下行的將要經過第4層樓的一部電梯就應在第4層樓停下來,讓這個乘客進入電梯。另一種情況是:如果一部電梯沒有乘客,它就應當停在其最后一次完成的目的地請求的樓層,直到被召喚。一部電梯不應中途改變其運行方向,除非在現行方向上的乘客都到了其目的地。如果一部電梯中的乘客數已達到了電梯的容量,那么這部電梯就不應再響應任何新的召喚請求。每部電梯都有一個超重傳感器,計算機和程序能夠對這些傳感器進行詢問。目的地按鈕:每部電梯配有一個面板,上面有一列40個按鈕,每個按鈕代表一個樓層,并標有樓層號(1到40)。從計算機傳送到面板上的信號可以使這些目的地按鈕亮起來。當一個乘客按下原先指示燈不亮的目的地按鈕,這個面板后面的電路就向計算機發出一個中斷信號。當計算機接收到這其中的一個信號后,程序就去讀相應的八位輸入寄存器的存儲。每個中斷對應一個寄存器,每個寄存器對應一部電梯。寄存器中存放引起這個中斷事件的目的地按鈕所對應的樓層號。當發生中斷時,面板后的電路就將樓層號寫入相應的映射輸入寄存器的存儲中。目的地按鈕指示燈:目的地面板后有燈泡。當程序中的中斷服務例程接收到一目的地按鈕中斷,它就發送一個信號到相應的面板,使相應的按鈕指示燈發亮。信號的發送實際就是程序將按鈕對應的樓層號寫入相應的輸出寄存器的存儲中。按鈕指示燈亮就相當于告訴乘客系統已經注意到了他的請求,而且當乘客再一次按下該按鈕(由于急躁?)時就不再產生中斷。當控制器在某一樓層停下電梯時,它就向目的地按鈕面板發送一信號,熄滅該層的目的地按鈕指示燈。樓層傳感器:每一部電梯升降井的每一個樓層上都有一個樓層
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026農業科技行業市場發展分析及趨勢前景與投資戰略研究報告
- 2026社交媒體行業市場深度調研及發展趨勢與投資戰略研究報告
- 包含名詞的題目與詳細答案
- 綿陽經濟技術開發區2026年公開招募社會工作服務崗的?(2人)模擬試卷及答案詳解【全優】
- 2026中國通訊設備行業市場供需發展現狀產業競爭分析及投資評估研究報告
- 蓮花縣公辦幼兒園合同制教師招聘【20人】筆試題庫【含答案詳解】
- 西南民族大學2026年第二批考核招聘應屆博士輔導員(1人)考前沖刺密卷帶答案詳解(鞏固)
- 資中縣2026年服務性崗位人員第二輪招募的(12人)考前沖刺試卷帶答案詳解(綜合卷)
- 達州市2026年公開考試招聘足球教練員的(10人)模擬試卷完整參考答案詳解
- 達州高新區2026年公開招聘社會工作服務崗位的(3人)模擬試卷新版附答案詳解
- 2026廣西百色工業投資發展集團有限公司招聘廣西百金資源開發有限公司人員39人參考題庫附答案
- 寺院義工培訓課件
- 2026年注冊安全工程師(初級)(安全生產管理實務)試題及答案
- 課件-人才盤點完全應用手冊
- 2025-2026學年北師大版(2024)小學數學二年級上冊(全冊)教學設計(表格版)(附目錄P255)
- 公建工程交付指南(第三冊)
- GJB939A-2022外購器材的質量管理
- 工廠安全生產環保操作規程
- 鉆井隊用電安全培訓
- JG/T 3055-1999基樁動測儀
- 人教版數學九年級上冊第一單元測試卷(附答案)
評論
0/150
提交評論