版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、OOA、OOD和UML面向?qū)ο蠹夹g(shù)的開發(fā)實(shí)踐北京理工大學(xué)信息學(xué)院計(jì)算機(jī)科學(xué)系 金旭亮2022/8/41第1頁,共113頁。主要內(nèi)容OOA、OOD與UML基礎(chǔ)Rose如何介入軟件開發(fā)的全過程案例:編寫一個自己的簡化版WinZip軟件開發(fā)的哲學(xué)思考待研究的課題2022/8/42第2頁,共113頁。第一部分OOA與OOD基礎(chǔ)2022/8/43第3頁,共113頁。OOAObject-Oriented Analysis (OOA):面向?qū)ο蟮姆治?OOA的側(cè)重點(diǎn)是業(yè)務(wù)領(lǐng)域分析,與軟件所要應(yīng)用的行業(yè)領(lǐng)域相關(guān),而與軟件技術(shù)關(guān)系不大,需要由領(lǐng)域?qū)<疫M(jìn)行。這一部分的工作被稱為“需求分析”。2022/8/44第4
2、頁,共113頁。OOA的成果業(yè)務(wù)領(lǐng)域用例圖活動圖協(xié)作圖大量的業(yè)務(wù)文檔資料2022/8/45第5頁,共113頁。OODObject-oriented design (OOD)用面向?qū)ο蟮姆椒檎鎸?shí)世界建立一個計(jì)算機(jī)中的虛擬模型2022/8/46第6頁,共113頁。OOD的地位OOD的主要任務(wù)是跨越業(yè)務(wù)領(lǐng)域模型與可實(shí)際運(yùn)行的軟件系統(tǒng)之間的鴻溝。OOD的難度是非常大的,負(fù)責(zé)OOD工作的人被稱為系統(tǒng)架構(gòu)設(shè)計(jì)師2022/8/47第7頁,共113頁。系統(tǒng)架構(gòu)設(shè)計(jì)師的任務(wù)確定系統(tǒng)的總體框架-大多采用已有的領(lǐng)域框架正確理解需求分析得出的領(lǐng)域模型,用面向?qū)ο蟮乃枷朐O(shè)計(jì)出軟件體系結(jié)構(gòu)-系統(tǒng)概要設(shè)計(jì)分析現(xiàn)實(shí)的可獲取
3、的技術(shù)資源,分解出軟件的各個組件,安排好開發(fā)任務(wù)流程-系統(tǒng)詳細(xì)設(shè)計(jì)2022/8/48第8頁,共113頁。OOD的成果系統(tǒng)中有多少個類?系統(tǒng)中這些類間有什么關(guān)系(系統(tǒng)靜態(tài)特性)?系統(tǒng)中這些類生成的對象如何協(xié)作來完成工作(系統(tǒng)動態(tài)特性)?系統(tǒng)中如何管理這些類和對象?2022/8/49第9頁,共113頁。OOP流行的面向?qū)ο笳Z言O(shè)bject-oriented Program (OOP)用一種面向?qū)ο蟮恼Z言來實(shí)現(xiàn)OOD完成的系統(tǒng)設(shè)計(jì)Java、C+、Object Pascal、C#、VB.net2022/8/410第10頁,共113頁。關(guān)于OOP用面向?qū)ο蟮恼Z言編程不是OOP!OOP最重要的特征是面向?qū)?/p>
4、象理論的廣泛應(yīng)用OOP的成果是可運(yùn)行的實(shí)際系統(tǒng)OOP中摻雜著OOD,OOP與OOD你中有我,我中有你,OOP是具體的OOD,二者的區(qū)別就在于應(yīng)用范圍的不同。2022/8/411第11頁,共113頁。OOA、OOD、OOP與真實(shí)世界2022/8/412第12頁,共113頁。面向?qū)ο罄碚摰脑僬J(rèn)識封裝封裝體現(xiàn)了數(shù)據(jù)信息的隱藏,從而使不同模塊的信息互不影響,這是OO的一大優(yōu)點(diǎn),因?yàn)樗鼜念愡@一程序基本單位開始就支持信息隱藏。2022/8/413第13頁,共113頁。面向?qū)ο罄碚摰脑僬J(rèn)識繼承相對于結(jié)構(gòu)化編程中的模塊重用,面向?qū)ο笾械睦^承體系顯得更靈活,對代碼的控制手段更多,從而推動了代碼復(fù)用的程度,但卻加
5、大了學(xué)習(xí)掌握的難度。2022/8/414第14頁,共113頁。面向?qū)ο罄碚摰脑僬J(rèn)識多態(tài)的特點(diǎn):所有可以發(fā)給base class對象的消息,也都同樣可以發(fā)給derived class。這是了解面向?qū)ο笳嫠璧年P(guān)鍵之一。2022/8/415第15頁,共113頁。C+中的面向?qū)ο筇匦运姆N編程風(fēng)范:結(jié)構(gòu)化編程、基于對象、面向?qū)ο?、泛型編程C程序員易犯的毛?。涸贑+中寫C程序。2022/8/416第16頁,共113頁。軟件源代碼復(fù)用的方式組合(composition)與聚合(aggregation)繼承(inherit)其基本思想是以現(xiàn)有的類為基礎(chǔ)創(chuàng)建新的類2022/8/417第17頁,共113頁。STL
6、Standard Template Library,標(biāo)準(zhǔn)模板庫STL是容器,算法和其他一些組件的集合2022/8/418第18頁,共113頁。泛型編程在OOD中的應(yīng)用一種獨(dú)特的平面型編程風(fēng)范,大量使用C+的模板技巧典型案例:STL在標(biāo)準(zhǔn)的OOD設(shè)計(jì)方案中引入泛型編程技術(shù),可以起到減少類數(shù)目的作用泛型技術(shù)可以看成是C+類的“合并同類項(xiàng)”。2022/8/419第19頁,共113頁。統(tǒng)一建模語言UMLUML圖形化的建模語言開發(fā)者用來為面向?qū)ο笙到y(tǒng)建立模型具有靈活性與可擴(kuò)展性2022/8/420第20頁,共113頁。統(tǒng)一軟件過程RUP三大特點(diǎn):用例驅(qū)動、迭代開發(fā)和增量開發(fā)2022/8/421第21頁,
7、共113頁。OOAD的強(qiáng)大工具-ROSEROSE是采用UML進(jìn)行軟件系統(tǒng)設(shè)計(jì)的一個CASE工具,還有其他工具比如Visio,JBuilder7等。使用ROSE可以保證源代碼與系統(tǒng)模型的一致性,這在軟件開發(fā)過程中是非常有用的正向:UML模型軟件代碼框架逆向:軟件代碼UML模型ROSE支持雙向工程2022/8/422第22頁,共113頁。ROSE對軟件開發(fā)全過程的參與4+1視圖Process ViewDeployment ViewLogical ViewImplementation ViewProgrammers Software management PerformanceScalability
8、Throughput System IntegratorsSystem topology Delivery, installationcommunicationSystem EngineeringUse-Case ViewStructure Analysts/DesignersEnd-user Functionality2022/8/423第23頁,共113頁。用ROSE表達(dá)系統(tǒng)功能2022/8/424第24頁,共113頁。用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)類圖Class Diagram: 表明了一個軟件中的各個類之間的關(guān)系2022/8/425第25頁,共113頁。用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)202
9、2/8/426第26頁,共113頁。用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)2022/8/427第27頁,共113頁。用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)2022/8/428第28頁,共113頁。用ROSE表達(dá)軟件的靜態(tài)結(jié)構(gòu)小結(jié):用Rose來描述一個軟件的靜態(tài)結(jié)構(gòu),首先應(yīng)將整個系統(tǒng)劃分為若干子系統(tǒng)或幾個組成部分,每個組成部分以一個包來表示。接著,需要設(shè)計(jì)具體的類,并用各種關(guān)聯(lián)符號表達(dá)出類間的關(guān)系,注意,每個類都必須歸屬于某一個包,這樣才便于查找某個類2022/8/429第29頁,共113頁。用組件圖描述軟件組件一般用組件圖來生成代碼2022/8/430第30頁,共113頁。用ROSE表達(dá)軟件的動態(tài)特性1: Per
10、formResponsibility客戶對象供應(yīng)者對象t消息:Client:Supplier調(diào)用周期說明 反身消息對象生命線1.1: PerformAnotherResponsibility序列圖序列圖用于表達(dá)對象之間是如何發(fā)送消息,何時new一個對象,何時delete它,非常適合表達(dá)一種代碼流程。2022/8/431第31頁,共113頁。用ROSE表達(dá)軟件的動態(tài)特性1: PerformResponsibilityClient ObjectSupplier ObjectMessageLink:Client:Supplier協(xié)作圖協(xié)作圖比較適合表達(dá)類之間的依賴關(guān)聯(lián)2022/8/432第32頁,共
11、113頁。用ROSE表達(dá)軟件的動態(tài)特性狀態(tài)圖當(dāng)系統(tǒng)可以明顯地劃分為幾個不同狀態(tài)時,狀態(tài)圖可以大顯身手,最明顯的是ADO 記錄集的狀態(tài)轉(zhuǎn)換例如:需要給水分子的三種物理狀態(tài)建模2022/8/433第33頁,共113頁。用ROSE表達(dá)軟件的動態(tài)特性活動圖活動圖最適合表達(dá)出一種處理流程2022/8/434第34頁,共113頁。用ROSE表達(dá)軟件的動態(tài)特性小結(jié):(1)所有圖的最根本目的是要對系統(tǒng)運(yùn)行過程中的各個對象之間的關(guān)系作出確定性的唯一性的描述,從而保證所有開發(fā)人員都能對系統(tǒng)有一個統(tǒng)一的認(rèn)識。(2)一般在確定了軟件的靜態(tài)結(jié)構(gòu)之后才進(jìn)行描述系統(tǒng)的動態(tài)特性(3)在任何情況下,保證ROSE模型與實(shí)際代碼的
12、一致都是至關(guān)重要的?。?)要根據(jù)實(shí)際情況選擇一種合適的圖來表達(dá)系統(tǒng),不要強(qiáng)行要求用上所有類型的圖,牢記:我們的目的是為了交流!2022/8/435第35頁,共113頁。參考資料2022/8/436第36頁,共113頁。參考資料2022/8/437第37頁,共113頁。參考資料2022/8/438第38頁,共113頁。參考資料2022/8/439第39頁,共113頁。參考資料2022/8/440第40頁,共113頁。參考資料2022/8/441第41頁,共113頁。參考資料2022/8/442第42頁,共113頁。案例研究一再造一個WinZip麻雀雖小,五臟俱全2022/8/443第43頁,共1
13、13頁。緣起:用一個規(guī)模小的工具軟件來說明OOD的實(shí)際應(yīng)用整個軟件完成周期:四天2022/8/444第44頁,共113頁。開發(fā)過程形成軟件總體想法:5分鐘形成軟件技術(shù)想法:5分鐘實(shí)驗(yàn)技術(shù)想法:1天設(shè)計(jì)系統(tǒng)詳細(xì)設(shè)計(jì)方案:1天正式編碼和測試:半天感觸:只要有技術(shù)積累,再加上合理的OOD,開發(fā)一個軟件會成為一種很有成就感的創(chuàng)作!2022/8/445第45頁,共113頁?;诮M件的用戶界面設(shè)計(jì)標(biāo)準(zhǔn)的分層體系結(jié)構(gòu):用戶界面類系統(tǒng)外部功能類系統(tǒng)底層基本功能類2022/8/446第46頁,共113頁。功能設(shè)想2022/8/447第47頁,共113頁。技術(shù)方案考慮采用C+流技術(shù)采用Borland C+ Bui
14、lder開發(fā)BCB vs VC2022/8/448第48頁,共113頁。軟件的工作原理(一)要編寫一個軟件,首先要知道人是如何完成某項(xiàng)工作的;接著,必須分析如何用計(jì)算機(jī)來完成這個工作,其結(jié)果是形成一個計(jì)算機(jī)算法,這要求有相關(guān)領(lǐng)域的理論知識2022/8/449第49頁,共113頁。軟件的工作原理(二)計(jì)算機(jī)中文件的基本類型2022/8/450第50頁,共113頁。軟件的工作原理(三)計(jì)算機(jī)中文件的基本類型2022/8/451第51頁,共113頁。軟件的工作原理(四)考慮軟件的內(nèi)部總體數(shù)據(jù)處理流程2022/8/452第52頁,共113頁。設(shè)計(jì)過程(一)-資源選擇選擇可以復(fù)用的代碼資源:C函數(shù)庫:用
15、fopen()、fclose()等打開和關(guān)閉文件,然后,直接在內(nèi)存中對字節(jié)流進(jìn)行處理 STL:用標(biāo)準(zhǔn)模板庫(STL)中的iostream類 VCL:用TStream類2022/8/453第53頁,共113頁。設(shè)計(jì)過程(二)-接口設(shè)計(jì)設(shè)計(jì)基本的流操作類接口請參看源代碼文件:FileStreamOpt.hFileStreamOpt.cpp2022/8/454第54頁,共113頁。設(shè)計(jì)過程(三)-利用多態(tài)VCL的TStream類繼承樹圖注意:接口設(shè)計(jì)中采用了TStream* 以利用多態(tài)2022/8/455第55頁,共113頁。設(shè)計(jì)過程(四)-數(shù)據(jù)結(jié)構(gòu)Struct VS Class2022/8/456
16、第56頁,共113頁。數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)結(jié)果2022/8/457第57頁,共113頁。設(shè)計(jì)過程(五)-數(shù)據(jù)對象的管理?OO軟件的顯著特點(diǎn)之一是如何管理對象C+技術(shù)難點(diǎn):=運(yùn)算符重載STL在數(shù)據(jù)結(jié)構(gòu)方面有強(qiáng)大的表達(dá)能力! vector VS list利用VCL的現(xiàn)有特性改善設(shè)計(jì)2022/8/458第58頁,共113頁。設(shè)計(jì)過程(六)-功能實(shí)現(xiàn)2022/8/459第59頁,共113頁。設(shè)計(jì)結(jié)果2022/8/460第60頁,共113頁。Key:先進(jìn)行非可視化功能類的設(shè)計(jì)設(shè)計(jì)過程中要綜合考慮各方面的要求,作出綜合平衡,然后才能形成可行的設(shè)計(jì)方案界面設(shè)計(jì)放在功能設(shè)計(jì)方案之后,它的目的是提供一個用戶接口以驅(qū)動功
17、能類的運(yùn)作.2022/8/461第61頁,共113頁。界面設(shè)計(jì)案例:界面與功能代碼的完全分離2022/8/462第62頁,共113頁。用戶界面設(shè)計(jì)(一)-窗體2022/8/463第63頁,共113頁。用戶界面設(shè)計(jì)(二)-靈活性用戶界面編碼的分層原則 :(1)不在控件的事件處理過程中書寫大量的代碼!(2)盡可能減少代碼對具體控件的依賴(3)重復(fù)使用的某種功能的控件應(yīng)被封裝成新的控件(4)考慮窗體間的相似性,巧妙利用窗體的OO特性:繼承,多態(tài)與重載一個復(fù)雜的控件原則上應(yīng)新建一個控制類以便于使用,這個控制類的接口成員應(yīng)是按邏輯來劃分而不是按技術(shù)來劃分的2022/8/464第64頁,共113頁。用戶界
18、面設(shè)計(jì)(三)-健壯性保證用戶界面層以正確的順序調(diào)用功能類 避免一個窗體過于復(fù)雜2022/8/465第65頁,共113頁。提高軟件健壯性每一個函數(shù)都盡可能地保證是獨(dú)立完備的、安全的。程序基本完成后,從最底層的類開始,逐步找出每個對外接口的前條件(前提)和后條件(結(jié)果),然后,判斷有無可能發(fā)生錯誤,并且決定這些錯誤應(yīng)該如何處理2022/8/466第66頁,共113頁。開發(fā)高容錯程序三原則預(yù)防所有可以預(yù)料和防止的錯誤;處理所有可以預(yù)料但不能防止的錯誤;捕獲所有不能預(yù)料的錯誤;代碼實(shí)例分析2022/8/467第67頁,共113頁。使用ROSE進(jìn)行正向代碼生成設(shè)計(jì)類接口新建一個組件將類賦與組件生成代碼2
19、022/8/468第68頁,共113頁。使用ROSE進(jìn)行正向代碼生成(1)設(shè)計(jì)類接口2022/8/469第69頁,共113頁。使用ROSE進(jìn)行正向代碼生成(2)新建一個組件2022/8/470第70頁,共113頁。使用ROSE進(jìn)行正向代碼生成(3)選定組件的語言2022/8/471第71頁,共113頁。使用ROSE進(jìn)行正向代碼生成(4)給組件分配類2022/8/472第72頁,共113頁。使用ROSE進(jìn)行正向代碼生成(5)分配了類的組件2022/8/473第73頁,共113頁。使用ROSE進(jìn)行正向代碼生成(6)生成代碼2022/8/474第74頁,共113頁。使用ROSE進(jìn)行逆向更新逆向更新的
20、目的是用更改后的代碼刷新系統(tǒng)模型文件,以保證系統(tǒng)文檔與真實(shí)代碼的一致性2022/8/475第75頁,共113頁。使用ROSE進(jìn)行逆向轉(zhuǎn)換選擇組件打開Ansi C+ specification窗口選擇文件生成模型2022/8/476第76頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(1)新建組件2022/8/477第77頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(2)打開ANSI C+參數(shù)設(shè)置窗口2022/8/478第78頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(3)加入C+頭文件和CPP文件2022/8/479第79頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(4)從菜單中選逆向工程命令2022/8/480第8
21、0頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(5)ROSE工程資源瀏覽器中新生成的類2022/8/481第81頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(6)新生成的類的屬性窗口2022/8/482第82頁,共113頁。用已有代碼進(jìn)行逆向轉(zhuǎn)換(7)在類圖中顯示逆向工程生成的類2022/8/483第83頁,共113頁。OOAD理論總結(jié)與思索2022/8/484第84頁,共113頁。軟件開發(fā)的最重要思維方式軟件開發(fā)的最重要思維方式是什么?抽象!軟件=對象+對象之間的關(guān)系結(jié)構(gòu)化編程時代程序=數(shù)據(jù)結(jié)構(gòu)+算法面向?qū)ο筌浖r代,軟件=?2022/8/485第85頁,共113頁。組件化時代的軟件設(shè)計(jì)什么是軟件組件?
22、注意:區(qū)分ROSE中的組件與軟件理論領(lǐng)域中的組件可以復(fù)用的,具備一定功能的類的組合。單個類不夠資格成為軟件組件!軟件組件可以以源代碼方式存在,也可以以二進(jìn)制形式存在2022/8/486第86頁,共113頁。組件化時代的軟件設(shè)計(jì)OOD設(shè)計(jì)師制定組件的規(guī)范,高級程序員實(shí)現(xiàn)這些可復(fù)用的組件現(xiàn)代軟件開發(fā)已成為組裝已有組件的過程,最典型的例子是Java與.net類庫2022/8/487第87頁,共113頁。設(shè)計(jì)模式大型系統(tǒng)中良好的設(shè)計(jì)是關(guān)鍵 為開發(fā)面向?qū)ο蟮能浖峁┮粋€架構(gòu)減少了軟件設(shè)計(jì)的復(fù)雜度為軟件設(shè)計(jì)方案的重用提供了可能性可以避免犯一些常規(guī)性的錯誤使設(shè)計(jì)獨(dú)立于語言建立了一套軟件架構(gòu)設(shè)計(jì)師的“通用語言
23、”在軟件開發(fā)周期中縮短了設(shè)計(jì)周期設(shè)計(jì)模式(Design patterns)2022/8/488第88頁,共113頁。使用設(shè)計(jì)模式熟悉模式才能知道如何使用模式用模式的最好方法就是設(shè)計(jì)時忘掉所有的模式名,只從實(shí)踐出發(fā)尋找可行的方案,必要時才去翻模式書以獲得靈感。我們用UML來描述模式,ROSE是畫圖工具2022/8/489第89頁,共113頁。設(shè)計(jì)模式經(jīng)典書籍四個老外權(quán)威:Gamma, Helm, Johnson and Vlissides“Gang of Four”四人幫Design Patterns, Elements of Reusable Object-Oriented Software
24、(Addison Wesley: 1995)提出23種設(shè)計(jì)模式創(chuàng)建型設(shè)計(jì)模式:解決如何創(chuàng)建對象的問題結(jié)構(gòu)型設(shè)計(jì)模式:解決類和對象間的結(jié)構(gòu)關(guān)系問題行為型設(shè)計(jì)模式:解決對象間的動態(tài)關(guān)系問題2022/8/490第90頁,共113頁。參考資料2022/8/491第91頁,共113頁。參考資料2022/8/492第92頁,共113頁。關(guān)于設(shè)計(jì)模式設(shè)計(jì)模式運(yùn)用時,心中要無模式;關(guān)鍵在于把握其思想。應(yīng)仔細(xì)研究成熟的設(shè)計(jì)模式,將其活學(xué)活用模式不是數(shù)學(xué)公式!2022/8/493第93頁,共113頁。結(jié)構(gòu)化編程與面向?qū)ο缶幊堂嫦驅(qū)ο蟮年P(guān)鍵是抽象面向?qū)ο蠓治鲈O(shè)計(jì)的成功實(shí)施要求更高,難度更大:在理解對象基本理論和開發(fā)
25、技術(shù)的前提下,加上豐富的程序開發(fā)實(shí)踐,才行。結(jié)構(gòu)化與面向?qū)ο蠓椒☉?yīng)該相輔相成,在合適的地方用合適的方法。2022/8/494第94頁,共113頁。結(jié)構(gòu)化編程與面向?qū)ο缶幊淘陬惖膬?nèi)部代碼實(shí)現(xiàn)上采用結(jié)構(gòu)化編程的方式:比如:將一個太長的函數(shù)按功能分解為若干個小函數(shù),做為類的私有函數(shù)只有在調(diào)試代碼清除BUG中,才發(fā)覺OO的妙處和軟件工程理論的無比正確!最重要的是兩點(diǎn):(1)代碼隔離;(2)控制模塊規(guī)模;2022/8/495第95頁,共113頁。對象的存儲對象的存儲不應(yīng)直接與數(shù)據(jù)庫打交道對象的管理通常都設(shè)計(jì)控制類采用STL容器進(jìn)行管理從數(shù)據(jù)庫記錄集生成對象,然后把對象放入STL容器中,是一個很好的設(shè)計(jì)方
26、案數(shù)據(jù)庫表的一對多關(guān)聯(lián),表現(xiàn)為對象之間的組合,多對多關(guān)聯(lián)如何處理?請思索!2022/8/496第96頁,共113頁。對象與關(guān)系數(shù)據(jù)庫對象實(shí)例的數(shù)據(jù)保存在數(shù)據(jù)庫表中,一般一條記錄對應(yīng)一個對象實(shí)例,盡量避免一個對象實(shí)例的數(shù)據(jù)分布在不同的表中,這樣就加大了移植的難度;對象與數(shù)據(jù)庫之間的關(guān)系問題是OOD與OOP必須解決的問題之一。2022/8/497第97頁,共113頁。數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)表的一對一關(guān)聯(lián)可直接映射到對象間的一對一關(guān)聯(lián)2022/8/498第98頁,共113頁。數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)一對多關(guān)聯(lián)2022/8/499第99頁,共113頁。數(shù)據(jù)庫表關(guān)聯(lián)與對象的對應(yīng)多對多關(guān)聯(lián)需拆成兩個一對
27、多的關(guān)聯(lián)2022/8/4100第100頁,共113頁。分而治之的設(shè)計(jì)方法“分而治之”是一個基本的方法,簡單地說,就是將一個復(fù)雜的系統(tǒng)劃分為幾個子系統(tǒng),然后,分別處理這些子系統(tǒng),最后再合成一個完整的系統(tǒng)。這是西方科學(xué)的主要思維方法之一:重視局部與細(xì)節(jié),用放大鏡去研究大象。2022/8/4101第101頁,共113頁。橫向與縱向可以利用多態(tài)、模板等機(jī)制簡化設(shè)計(jì)繼承是縱向的設(shè)計(jì)方案,STL是橫向的解決方案,繼承可以復(fù)用代碼,模板可以減少類的數(shù)量,相互配合才是良好的設(shè)計(jì)。基于組件的“搭積木”過程可以看成是將橫向與縱向設(shè)計(jì)相結(jié)合的典范2022/8/4102第102頁,共113頁。OOD的指導(dǎo)原則為特定問
28、題產(chǎn)生一個class,然后讓它在解決其他問題時,漸漸成長而成熟;設(shè)計(jì)Class及其接口,是OOD的主要任務(wù);開始寫程序,讓一部分先動起來,以驗(yàn)證設(shè)計(jì),或找出難點(diǎn)所在;保持類的小而簡潔,功能明確Thinking in Javap822022/8/4103第103頁,共113頁。OOAD的哲學(xué)方法論真學(xué)問把復(fù)雜的問題弄得簡單,它的目的是讓你能夠理解;偽學(xué)問把簡單的問題弄得復(fù)雜,它的目的是讓你感到神秘。不做就學(xué)不到2022/8/4104第104頁,共113頁。OOAD的哲學(xué)方法論一切都要從實(shí)際出發(fā),不迷信老外的一切,相信自己的直覺。采用“拿來主義”現(xiàn)在的OOD,大多是在采用已有的系統(tǒng)架構(gòu)基礎(chǔ)上修修補(bǔ)補(bǔ),以達(dá)到最大限度地利用現(xiàn)有資源的目的。所以,OOD不是獨(dú)立于語言與開發(fā)工具的。不存在界限分明的OOD
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版小餐飲店服務(wù)員試用期勞務(wù)合同范本3篇
- 2025版地質(zhì)災(zāi)害應(yīng)急土石方拉運(yùn)與救援合同3篇
- 南山區(qū)自主創(chuàng)新產(chǎn)業(yè)發(fā)展專項(xiàng)資金文化產(chǎn)業(yè)發(fā)展政策解讀課件2
- 2025版衛(wèi)生巾紙產(chǎn)品綠色認(rèn)證與環(huán)保標(biāo)簽使用合同3篇
- 2025年度個人合伙律師事務(wù)所退伙專業(yè)服務(wù)權(quán)轉(zhuǎn)移合同4篇
- 《社保及公積金培訓(xùn)》課件
- 2025版商業(yè)地產(chǎn)水電設(shè)施建設(shè)合同示范文本3篇
- 2025版室內(nèi)外景觀規(guī)劃設(shè)計(jì)服務(wù)費(fèi)用合同3篇
- 2025版小企業(yè)勞動合同標(biāo)準(zhǔn)文本與執(zhí)行要點(diǎn)6篇
- 2025版土地抵押資產(chǎn)證券化合同模板3篇
- 2025貴州貴陽市屬事業(yè)單位招聘筆試和高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年住院醫(yī)師規(guī)范化培訓(xùn)師資培訓(xùn)理論考試試題
- 2024年廣東省公務(wù)員錄用考試《行測》試題及答案解析
- 金蓉顆粒-臨床用藥解讀
- 法治副校長專題培訓(xùn)課件
- 《幼兒園健康》課件精1
- 汽車、電動車電池火災(zāi)應(yīng)對
- 中醫(yī)藥適宜培訓(xùn)-刮痧療法教學(xué)課件
- 免疫組化he染色fishish
- 新東方四級詞匯-正序版
- 借名購車位協(xié)議書借名購車位協(xié)議書模板(五篇)
評論
0/150
提交評論