面向?qū)ο笤O(shè)計_第1頁
面向?qū)ο笤O(shè)計_第2頁
面向?qū)ο笤O(shè)計_第3頁
面向?qū)ο笤O(shè)計_第4頁
面向?qū)ο笤O(shè)計_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

探討:

用面向?qū)ο蟮人枷?/p>

使用UML

設(shè)計系統(tǒng)(2)丁旭

軟件開發(fā)部

合肥智同面向?qū)ο笾饕能浖拍?/p>

----羅列封裝信息/實現(xiàn)隱藏狀態(tài)保持對象標識消息類繼承多態(tài)性一般性面向?qū)ο笾饕能浖拍?/p>

----封裝封裝是將相關(guān)的概念組成一個單元,其后可以通過一個名稱來引用它子程序封裝子模塊封裝面相對象封裝是將表示狀態(tài)的操作和屬性包裝成一個對象類型,使得對狀態(tài)的訪問或修改只能通過封裝提供的接口進行。面向?qū)ο笾饕能浖拍?/p>

----信息/實現(xiàn)隱藏信息/實現(xiàn)隱藏(information/implementationhiding)是使用封裝將某些信息或?qū)崿F(xiàn)方式限制,在封裝結(jié)構(gòu)內(nèi)部,限制外部的可見性。你可以從對象的外部(“公共角度”)或?qū)ο蟮膬?nèi)部(“私有角度”)兩種不同的角度來看待封裝單元。好的封裝結(jié)果是對公共視角封閉大量的細節(jié)。這種封閉有兩種即信息隱藏和實現(xiàn)隱藏。優(yōu)點設(shè)計決策局部化(限制了“修改波及”問題);其表現(xiàn)形式減弱了信息的內(nèi)容(對象外部的信息用戶不會受到任何特殊的內(nèi)部信息格式的困擾)。面向?qū)ο笾饕能浖拍?/p>

----其他狀態(tài)保持對象標識(對象句柄)消息消息構(gòu)成:對象句柄、操作名稱、輸入?yún)?shù)、輸出參數(shù)消息類型:報告消息、詢問消息、祈使消息類繼承多態(tài)性動態(tài)綁定與多態(tài)性相關(guān)的:覆蓋(overriding)?、重載(overloading)?一般性泛化:模板類傳統(tǒng)設(shè)計中一些經(jīng)驗

----封裝與共生性封裝是將相關(guān)的概念組成一個單元,其后可以通過一個名稱來引用它(封裝級別)子程序封裝子模塊封裝面相對象封裝是將表示狀態(tài)的操作和屬性包裝成一個對象類型,使得對狀態(tài)的訪問或修改只能通過封裝提供的接口進行。考查封裝設(shè)計(輸出、內(nèi)聚、耦合)傳統(tǒng)設(shè)計中一些經(jīng)驗

----封裝與共生性共生性(相依為命connascence)執(zhí)行次序(位置)同步時差算法數(shù)值標識差異共生性(contranascence)如命名、多繼承等傳統(tǒng)設(shè)計中一些經(jīng)驗

----封裝與共生性共生性與可維護性避免友員無約束繼承為了偶然的應(yīng)用面向?qū)ο蟮脑O(shè)計一些原則

----包括面向?qū)ο蟮脑O(shè)計一些原則合理處理內(nèi)聚類混合事例內(nèi)聚混合領(lǐng)域內(nèi)聚混合角色內(nèi)聚衡量面向?qū)ο笤O(shè)計

---檢驗設(shè)計模型的健壯性狀態(tài)空間不變式輸入輸出范圍多態(tài)性方法的分布面向?qū)ο笈c傳統(tǒng)設(shè)計的異同相同之處??差異之處??LogicalDesignConceptualDesignScenariosPhysicalDesignComponents,UserInterface,and

PhysicalDatabaseObjectsandServices,UserInterface,and

LogicalDatabase面向?qū)ο蟮陌l(fā)展歷史60年代末:Simula6780年代初:Smalltalk1.歷史:90年代:OOP,OOD和

OOA獲得廣泛應(yīng)用80年代中:OOP,OOD和

OOA

進入軟件開發(fā)實踐

C++,Booch方法,OOA/OOD,OOSE,OMT面向?qū)ο蟮陌l(fā)展歷史OOA/OOD(Objectoriented)的理論目標細胞硬件IC設(shè)計沒有直接關(guān)聯(lián)的設(shè)計面向?qū)ο蟮陌l(fā)展歷史OOA/OOD(Objectoriented)的理論目標細胞硬件IC設(shè)計菜籃軟體是否可以像硬體元件一樣的分開設(shè)計;大量製造;再加以拼湊而成?就像電子元件的積體線路(IC)一樣;製做出軟體的IC?SoftwareIC設(shè)計經(jīng)驗

----個人經(jīng)驗總結(jié)設(shè)計中最重要的環(huán)節(jié)?(成功關(guān)鍵)理解擁有共同交流語言和工作程序長時間討論交流流程靈活明確目標“Whenprojectsfail,it’srarelytechnical.”

JimJohnson,TheStandishGroup28%46%26%Succeeded

FailedChallenged設(shè)計經(jīng)驗

----個人經(jīng)驗總結(jié)分析順序(遞進迭代)了解領(lǐng)域分析方法分工、整合、討論交流明確目標基礎(chǔ)靜態(tài)框架確認功能完整確立流程正確總體分層(這比OO思想更為重要)OO分析設(shè)計經(jīng)驗

----個人經(jīng)驗總結(jié)不同問題領(lǐng)域方法過程差異應(yīng)用領(lǐng)域事件為核心商業(yè)領(lǐng)域角色(組織、人員)相互關(guān)系屬性結(jié)構(gòu)領(lǐng)域人機界面數(shù)據(jù)庫機器間通信基礎(chǔ)領(lǐng)域語義結(jié)構(gòu)基礎(chǔ)設(shè)計經(jīng)驗

----個人經(jīng)驗總結(jié)OOD中容易入的誤區(qū)(避免方法??)臭名昭著的繼承不慎重的使用多繼承隨意臨時性對以設(shè)計的類添加不對暴露接口的完整性等進行推敲隨意使用友元大量使用同組開發(fā)人員不易理解的技巧模型設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子這是一個生產(chǎn)企業(yè)的ERP部分(某扎鋼廠)主要視圖關(guān)系設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子組織視圖(角色非實際人員)設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子資源視圖設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子工作流視圖設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子什么是CRC卡?從UseCase里找對象及其行為了。為了要確定這些對象和其行為能為使用者提供完整而滿意的服務(wù),應(yīng)采用簡單易懂的方式來表示對象及其關(guān)系,然后由使用者來檢驗,以確保這些對象能正確執(zhí)行UseCase,讓使用者心滿意足。此時,CRC表示法就可派上用場了。CRC表示法很簡單,但很有效,使用者可迅速看出各類別的服務(wù)項目,以及類別間的合作關(guān)系。CRC設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子簡單介紹CRC表示法

CRC是「類別」(class),「責任」(responsibility)及「輔助者」(collaborator)三者的簡稱,這些資料常呈現(xiàn)在一張卡片上,如下由于使用者是應(yīng)用領(lǐng)域的專家(domainexpert),必須由其來檢驗對象及其關(guān)系,才能確保軟件的正確性。所以UseCase和CRC皆是簡單明了的工具,極適合做計算機人員與使用者的溝通工具,系統(tǒng)分析人員可藉之提升需求分析(requirementsanalysis)的品質(zhì)。設(shè)計用例

----商業(yè)領(lǐng)域UML&CRC卡例子CRC例子這說明:計算機系統(tǒng)這個對象能提供兩項服務(wù)(即兩個責任),提供第一項服務(wù)時,必須請求「密碼」對象的協(xié)助。提供第二項服務(wù)時,需要「密碼」及「柜員機」兩個對象之協(xié)助。CRC設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例當一位顧客向本公司下訂單時,他心中對公司的觀點是:這公司會處理這訂單,并迅速告知最快出貨日期。這是一個「公司」的UseCase,代表著顧客將訂單送到公司時,一直到他獲知正確出貨日期為止的一連串事件(或訊息傳遞)。如果您已有許多傳統(tǒng)系統(tǒng)分析經(jīng)驗,就請先看下圖的作業(yè)流程(workflow)吧。開始下定單信用查詢安排出貨日期通知顧客結(jié)束信用合格是否設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step1:確定UseCase的參與者首先描述這個「公司」的UseCase。1.1把公司當成黑箱,亦即把公司看成一個封裝(encapsulate)完整的對象。1.2把計算機系統(tǒng)自「公司」對象中獨立出來。使得「計算機系統(tǒng)」成為這UseCase的一個參與者(participactor或actor)。1.3這UseCase的目的是滿足顧客的需求。于是「顧客」是這UseCase的參與者。1.4信用查詢時,需銀行的協(xié)助,于是「銀行」也是參與者。1.5將各參與者以圖表示之:設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step2:敘述這些參與者的互動(interaction)情形公司的UseCase:接訂單正常過程1.客戶送來訂單。2.向銀行查詢客戶的信用度。3.銀行告知客戶信用度。4.向計算機系統(tǒng)查詢客戶的信用度。5.計算機系統(tǒng)送來客戶的信用度。6.把訂單傳給計算機系統(tǒng),請求安排出貨日期。7.計算機傳回訂單。8.告知客戶已接受其訂單。特別過程如果客戶的信用度不合乎要求,則通知客戶,告知不接受其訂單。以圖形表示之:設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step3:打開(openup)公司黑箱設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step4:繪制公司UseCase的CRC圖Step5:采排演練,檢驗CRC卡設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step6:計算機系統(tǒng)的UseCase6.1把數(shù)據(jù)庫系統(tǒng)獨立于計算機系統(tǒng)之外,成為參與者(actor)。6.2CASE1:查核信用度。參與者為:會計部及數(shù)據(jù)庫系統(tǒng)。CASE2:排定出貨日期。參與者為:銷售部及數(shù)據(jù)庫系統(tǒng)。6.3將各參與者表示如圖設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例Step7:CASE1-查核信用度正常過程1.在屏幕上選取「信用查核」項目。2.計算機要求輸入顧客基本資料。3.輸入顧客基本資料。4..計算機要求數(shù)據(jù)庫系統(tǒng)找出顧客的采購歷史資料。5.數(shù)據(jù)庫傳回顧客的歷史資料。6.計算機查核后,將結(jié)果傳回給會計部。特殊過程如果數(shù)據(jù)庫找不到顧客的歷史資料,就傳回“歷史資料不詳”,并由計算機將這訊息傳送回會計部如下圖設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例接下來,打開「計算機系統(tǒng)」黑箱,若發(fā)現(xiàn)只需一個對象-Credit_Evaluator來負責與會計部和資料庫溝通即足夠,就能圖標如下:設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例接著,下先將Step4的「會計部」CRC卡修正,并制作一張新的CRC卡如下:設(shè)計經(jīng)驗

----UseCase與CRC結(jié)合使用實例再繪制Credit_Evaluator及數(shù)據(jù)庫系統(tǒng)CRC卡,如下圖:這Credit_Evaluator及數(shù)據(jù)庫系統(tǒng)兩對象,擔任了Step4中「計算機系統(tǒng)」對象的前兩項責任-查核信用度及告知信用度。亦即「計算機系統(tǒng)」對象將這兩項責任委托Credit_Evaluator對象執(zhí)行之。而Credit_Evaluator再委托數(shù)據(jù)庫系統(tǒng)來協(xié)助之。最后,依循Step5的步驟,將這個UseCase采排一番,看看是否正確。開發(fā)模式

----介紹開發(fā)模式(Paradigm)開發(fā)模式又稱為范型、范例、風范或模式(Pattern);開發(fā)模式定義了特定問題和應(yīng)用的開發(fā)過程中將遵循的步驟;確定將用于表示問題和解的那些成分的類型;利用這些成分表示與問題解決有關(guān)的抽象;直接得到問題的結(jié)構(gòu);設(shè)計模式

----概念設(shè)計模式(Paradigm)設(shè)計模式提供了設(shè)計不同系統(tǒng)、不同應(yīng)用時經(jīng)常發(fā)生的問題的解決方案,向編程人員提供特定問題的可依據(jù)的方法藍圖。設(shè)計模式(DesignPatterns)

----目錄模式的本原模式的發(fā)展歷程用設(shè)計模式提高軟件開發(fā)生產(chǎn)力重構(gòu)與設(shè)計模式設(shè)計模式(DesignPatterns)

----模式的本原簡單地說,模式是一個出現(xiàn)在世界上的實物,同時也是一條規(guī)則,告訴你應(yīng)該如何創(chuàng)建一個實物、應(yīng)該在何時創(chuàng)建。它既是過程,也是實物;既是對當前實物的描述,也是對創(chuàng)建實物的過程的描述?!狢.Alexander,《建筑的永恒之道》ChristopherAlexander《建筑的永恒之道》(TheTimelessWayofBuilding)是一本建筑學專著。這本書,與《建筑模式語言》(APatternLanguage)、《城市設(shè)計的新理論》(ANewTheoryofUrbanDesign)等書一起,描述了一種全新的、充滿生機的建筑方法--基于模式(Pattern)的建筑方法。該書的作者ChristopherAlexander出生于奧地利的首都維也納,在英國的牛津和奇切斯特長大。早年,他在劍橋?qū)W習,受到了數(shù)學和建筑學方面的良好教育。后來,他到了美國,在哈佛拿到了建筑學博士的學位。1963年,他開始在加州大學伯克利分校擔任建筑學教授以及環(huán)境結(jié)構(gòu)學院的院長。正是在伯克利的那段時間里,Alexander教授寫出了他的傳世之作,并在建筑學界引起了強烈的反響。設(shè)計模式(DesignPatterns)

----什么是模式?模式:反復(fù)出現(xiàn),可交叉構(gòu)筑大的系統(tǒng)的基本元素、基本規(guī)律設(shè)計模式(DesignPatterns)

----模式的定義模式是描述特定場景(context)、特定約束(force)下以具有無名特質(zhì)的方式解決特定問題(problem)之方案(solution)的專用語言。設(shè)計模式(DesignPatterns)

----建筑學中的模式ChristopherAlexander教授的“三步曲”研究模式的理論——《建筑的永恒之道》第一個完整的模式語言——《建筑模式語言》理性地用模式來指導建筑過程——《俄勒岡實驗》設(shè)計模式(DesignPatterns)

----軟件科學中的模式管理模式——DonS.Olson,CarolL.Stimmel,TheManagerPool分析模式——MartinFowler,AnalysisPatterns設(shè)計模式實現(xiàn)模式——JamesCoplien,AdvancedC++;ScottMeyers,EffectiveC++重構(gòu)模式——MartinFowler,Refactoring……設(shè)計模式(DesignPatterns)

----設(shè)計模式“三步曲”了解設(shè)計模式——AlanShalloway,JamesTrott,《設(shè)計模式精解》系統(tǒng)學習設(shè)計模式——GangofFour,《設(shè)計模式》用設(shè)計模式靈活解決實際問題——JohnVlissides,PatternHatching設(shè)計模式(DesignPatterns)

----用設(shè)計模式提高軟件開發(fā)生產(chǎn)力我們需要這樣一種語言:它讓我們高效地交流、討論那些常見的、重復(fù)出現(xiàn)的設(shè)計概念,并在這些概念上建立起我們的系統(tǒng)。 不要僅僅把模式當作解決方案,而要把它們當作設(shè)計的詞匯,這些詞匯可以根據(jù)一定的規(guī)則組合起來形成句子(也就是系統(tǒng)設(shè)計)。——BrandonGoldfedder,《模式之樂》設(shè)計模式(DesignPatterns)

----Singleton模式//Singleton.javapublicclassSingleton{ privatestaticSingleton_instance=null; privateSingleton(){}

publicstaticSingletongetInstance() { if(null==_instance) _instance=newSingleton(); return_instance; }}保存全類唯一的實例對客戶隱藏構(gòu)造子客戶只能從此處獲得實例設(shè)計模式(DesignPatterns)

----Singleton模式這個模式的核心是什么?精致的solution或者巧妙的trick?C.Alexander:“每個模式是一個有三個部分的規(guī)則,它表達一定的關(guān)聯(lián)、一個問題和一個解決方式之間的關(guān)系。”

Force(約束)ProblemSolution設(shè)計模式(DesignPatterns)

----Singleton模式

Singleton模式的核心問題(Problem):幾個不同的客戶對象需要引用同樣的對象,你希望確保自己擁有的這種對象不超過一個。解決方案(Solution):用某種技巧保證該類最多只有一個實例。約束(Force):不能直接用于多線程環(huán)境。如果需要提供線程安全性,則Java不能實現(xiàn),C++亦需要借助Double-CheckedLocking模式才能實現(xiàn)。設(shè)計模式(

DesignPatterns)

----用設(shè)計模式提高軟件開發(fā)生產(chǎn)力用模式包容

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論