版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
現(xiàn)代軟件工程
ModernSoftwareEngineering
第三章面向?qū)ο笈cUML西郵計(jì)算機(jī)學(xué)院
第三章面向?qū)ο笈cUMLPart1面向?qū)ο蠹夹g(shù)概述3·1傳統(tǒng)方法學(xué)的缺點(diǎn)3·2面向?qū)ο蠓椒▽W(xué)概述3·3面向?qū)ο蟮幕靖拍?·1傳統(tǒng)方法學(xué)的缺點(diǎn)傳統(tǒng)的生命周期方法學(xué)的本質(zhì),是通過需求分析預(yù)定義軟件需求,然后一個(gè)階段接著一個(gè)階段有條不紊的開發(fā)用戶所要求的軟件,實(shí)現(xiàn)預(yù)定義的軟件需求。
雖然生命周期方法較之傳統(tǒng)的軟件開發(fā)方法更為規(guī)范化,對(duì)實(shí)現(xiàn)軟件開發(fā)工程化起到了重要的促進(jìn)作用,部分緩解了軟件危機(jī),引起了軟件開發(fā)原理的一次重大變革。
但是,對(duì)于那些大的復(fù)雜的軟件系統(tǒng)而言,這種方法仍然顯得力不從心。一、瀑布模型的缺點(diǎn):僵化
生命周期各階段間存在嚴(yán)格的順序性與依賴性,因此其特別強(qiáng)調(diào)預(yù)先定義需求的重要性。要求預(yù)先定義并“凍結(jié)”軟件需求。 實(shí)踐表明:在系統(tǒng)建立起來很難僅僅依靠分析就能確定一套完整、準(zhǔn)確、一致、有效的應(yīng)用需求,而且該方法不適用與用戶需求不斷變化的情況: (1)某些類型的系統(tǒng)需求是模糊的。 (2)項(xiàng)目參與者之間存在通訊鴻溝。 (3)預(yù)先定義的需求可能是過時(shí)的。二、SA-SD-SP技術(shù)的缺點(diǎn) 本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過程為中心,而用戶的需求變化主要是針對(duì)功能的。這就使基于過程的設(shè)計(jì)不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。系統(tǒng)有明確的邊界定義,且系統(tǒng)結(jié)構(gòu)依賴于系統(tǒng)邊界的定義,系統(tǒng)不易擴(kuò)充和修改。數(shù)據(jù)與操作分開處理,可造成軟構(gòu)件對(duì)具體應(yīng)用環(huán)境的依賴,可重用性(reusability)較差.3·2面向?qū)ο蠓椒▽W(xué)概述一、傳統(tǒng)的軟件開發(fā)方法的缺點(diǎn): 特點(diǎn)是把軟件視為處理流,并定義成由一系列步驟構(gòu)成的算法。每一步驟都是帶有預(yù)定輸入和特定輸出的一個(gè)過程,把這些步驟串聯(lián)在一起可產(chǎn)生合理的穩(wěn)定的貫通于整個(gè)程序的控制流,最終產(chǎn)生一個(gè)簡單的具有靜態(tài)結(jié)構(gòu)的體系結(jié)構(gòu)。過程性開發(fā)模式側(cè)重建立構(gòu)成問題解決的處理流。數(shù)據(jù)抽象、數(shù)據(jù)結(jié)構(gòu)根據(jù)算法步驟的要求開發(fā),它貫穿于過程,提供過程所要求操作的信息。系統(tǒng)的狀態(tài)是一組全局變量,這組全局變量保存狀態(tài)的值,把它們從一個(gè)過程傳送到另一個(gè)過程。二、面向?qū)ο笏枷氲挠蓙韨鹘y(tǒng)的軟件開發(fā)方法—沒有直接而全面地反映問題的本質(zhì)
直接面對(duì)問題域中客觀存在的事物來進(jìn)行軟件開發(fā)—
面向?qū)ο笙M?、面向?qū)ο笏枷氲挠蓙?續(xù))對(duì)象表示現(xiàn)實(shí)世界中某個(gè)具體的事物。事物可分為兩大部分:物質(zhì)
:表達(dá)具體的事物意識(shí)
:描述抽象的概念解決問題方法:(OOObject-Oriented)現(xiàn)實(shí)問題空間面向?qū)ο蠼饪臻g物質(zhì)對(duì)象(客觀存在的)意識(shí)類(抽象的概念)三、對(duì)象、實(shí)體與類關(guān)系圖對(duì)象實(shí)體類抽象數(shù)據(jù)類計(jì)算機(jī)世界現(xiàn)實(shí)世界計(jì)算機(jī)邏輯的實(shí)現(xiàn)影射抽象實(shí)例化抽象四、面向?qū)ο蠓椒?OOM)特點(diǎn)
盡可能模擬人類習(xí)慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對(duì)象。這時(shí)程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨(dú)立的對(duì)象的集合。OOM舉例:郵局業(yè)務(wù)管理杭州北京Post-officeMessageSendbymethod對(duì)象ObjectObject=數(shù)據(jù)AttributeAttributes:location;employee;……+操作MethodMethods:send;sell;……注意:Object內(nèi)部的attributes不允許外部用戶直接改動(dòng),只有當(dāng)它提供了相應(yīng)的服務(wù)method時(shí),用戶才能通過發(fā)送message來提請它執(zhí)行。我想把郵局搬到我家門口,多加幾個(gè)郵遞員,24小時(shí)都開門……對(duì)不起,本郵局不提供此類服務(wù)唉,那就先送束花吧——Post_office.Send(request,payment)五、面向?qū)ο蟮亩x面向?qū)ο?對(duì)象+類+繼承+通信如果一個(gè)軟件系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則我們認(rèn)為這個(gè)軟件系統(tǒng)是面向?qū)ο蟮?。一個(gè)面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對(duì)象,計(jì)算是通過新的對(duì)象的建立和對(duì)象之間的通信來執(zhí)行的。面向?qū)ο笏囊兀海?)對(duì)象(2)類(3)繼承(4)消息六、面向?qū)ο笏囊亍獙?duì)象對(duì)象(Object)是面向?qū)ο蟮幕境煞荨C總€(gè)對(duì)象可用它本身的一組屬性和它可以執(zhí)行的一組操作來定義。屬性一般只能通過執(zhí)行對(duì)象的操作來改變。操作又稱為方法或服務(wù),它描述了對(duì)象執(zhí)行的功能,若通過消息傳遞,還可以為其它對(duì)象使用。六、面向?qū)ο笏囊亍愵悾–lass)是一組具有相同數(shù)據(jù)結(jié)構(gòu)和相同操作的對(duì)象的集合。類的定義包括一組數(shù)據(jù)屬性和在數(shù)據(jù)上的一組合法操作。類定義可以視為一個(gè)具有類似特性與共同行為的對(duì)象的模板,可用來產(chǎn)生對(duì)象。在一個(gè)類中,每個(gè)對(duì)象都是類的實(shí)例
(Instance),它們都可使用類中提供的函數(shù)。對(duì)象的狀態(tài)則包含在它的實(shí)例變量,即實(shí)例的屬性中。六、面向?qū)ο笏囊亍⑾ⅲ∕essage)是一個(gè)對(duì)象與另一個(gè)對(duì)象的通信單元,是要求某個(gè)對(duì)象執(zhí)行類中定義的某個(gè)操作的規(guī)格說明。發(fā)送給一個(gè)對(duì)象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對(duì)象。一個(gè)對(duì)象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。classPost_office//定義類{private:loc_typelocation;emp_typeemployee;……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);……};
main(){Post_officeMy_PO;//聲明類的示例:對(duì)象req_typeMy_request;money_typeMy_payment;……My_PO.Send(My_request,My_payment);//通訊……}OOM舉例:郵局業(yè)務(wù)管理六、面向?qū)ο笏囊亍^承繼承(Inheritance)是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改既存類。既存類可當(dāng)做基類來引用,則新類相應(yīng)地可當(dāng)做派生類來引用。例如,從一個(gè)既存的車輛類派生的四輪驅(qū)動(dòng)車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。七、面向?qū)ο笈c傳統(tǒng)方法比較①OOM與人類習(xí)慣的思維方法一致傳統(tǒng)方法:面向過程設(shè)計(jì),以計(jì)算為核心,數(shù)據(jù)與操作分離,不易理解。OOM:以object為核心,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法。“面向?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。Class:由特殊到一般的歸納(induction)
Inheritance:由一般到特殊的演繹(deduction)七、面向?qū)ο笈c傳統(tǒng)方法比較②OOM穩(wěn)定性好傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。OOM:以object模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,因?yàn)閷?shí)體相對(duì)穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。七、面向?qū)ο笈c傳統(tǒng)方法比較(續(xù))③OOM可重用性好傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場合的不同需要。
OOM:一個(gè)class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴(kuò)充而不影響其父類的使用。七、面向?qū)ο笈c傳統(tǒng)方法比較(續(xù))穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修改;面向?qū)ο蟮能浖容^容易修改:只要修改不涉及class的對(duì)外接口,則內(nèi)部修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴(kuò)充;易于測試和調(diào)試面向?qū)ο蟮能浖容^容易理解;④可維護(hù)性好傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問題。
OOM:從以下幾方面改善了可維護(hù)性——七、面向?qū)ο笈c傳統(tǒng)方法比較(續(xù))⑤較易開發(fā)大型軟件產(chǎn)品
采用00M,便于一個(gè)大型軟件產(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品來處理,這就不僅降低了開發(fā)的技術(shù)難度,而且也使得對(duì)開發(fā)工作的管理變得容易多了。
OOM并不一定減少了開發(fā)時(shí)間,而是通過提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容易程度等,從長遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。OOM與快速原型法結(jié)合使用效果好。八、噴泉模型
主要用于支持面向?qū)ο箝_發(fā)過程,體現(xiàn)了軟件創(chuàng)建所固有的迭代和無間隙的特征。3·3面向?qū)ο蟮幕靖拍頵1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出輸出1、對(duì)象Object:=ID+Method+Attribute+Message對(duì)象的基本特點(diǎn)①以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;②Object主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過message請求操作;③具有黑盒性:外部操作時(shí),無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;④具有并行性:不同object各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;⑤模塊獨(dú)立性好:內(nèi)聚強(qiáng)(①)、耦合松(③④)2、類Class:具有相同數(shù)據(jù)和相同操作的一組對(duì)象;3、實(shí)例Instance:某個(gè)class描述的具體對(duì)象;4、消息Message:=object_ID.method_ID(parameter(s));5、方法Method:object能做的操作,亦稱為service、responsibility,在
class中須定義相應(yīng)的代碼;6、屬性Attribute:object的固有數(shù)據(jù);7、繼承Inheritance:子類自動(dòng)共享父類attributes和methods,而不必重復(fù)定義。面向?qū)ο蟮幕靖拍?續(xù))面向?qū)ο蟮幕靖拍?續(xù))Class中國人中國人Attributes中國人Methods張山(instance)
Class中國人張山的AttributesClass杭州人(子類)杭州人Attributes杭州人Methods
Class中國人李士(instance)中國人李士的Attributes杭州人李士的Attributes
Class杭州人例:繼承的特點(diǎn):①低層性質(zhì)覆蓋高層性質(zhì):若杭州人的methods中有與中國人的同名,則李士執(zhí)行該method時(shí)以杭州人為準(zhǔn),不執(zhí)行中國人中定義的同名method。②傳遞性(transitivity):AB、BCAC
一個(gè)
class繼承了上層全部classes
的一切性質(zhì)。③一個(gè)子類只有一個(gè)父類稱為單繼承(singleinheritance),一個(gè)子類可有多個(gè)父類稱為多重繼承(multipleinheritance).例④修改與擴(kuò)充可以很容易地通過派生子類來完成。注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個(gè)父類中定義重名,但各具不同性質(zhì)。例:FemaleChineseScholarICardDeckGraphicalObjectGraphicalDeckMethod:Draw:=takeacardfromadeckMethod:Draw:=displayagraphicalobjectMethod:Draw:=?例:面向?qū)ο蟮幕靖拍?續(xù))8、多態(tài)性(Polymorphism):不同層次的classes可共享一個(gè)method名,但按各自的方式來實(shí)現(xiàn)這種method。 C++中定義了虛函數(shù)(virtualfunction)來實(shí)現(xiàn)這一功能。即一個(gè)method有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱為動(dòng)態(tài)聯(lián)編(dynamicbinding)或滯后聯(lián)編(latebinding)面向?qū)ο蟮幕靖拍?續(xù))doubleavg(constdoublea[],intsize);{doublesum=0.0;for(inti=0;i<size;++i)sum+=a[i];return(sum/size);}doubleavg(constinta[],intsize);{intsum=0;for(inti=0;i<size;++i)sum+=a[i];return((double)sum/size);}main(){intk[3]={1,2,3};doublex[3]={1.1,2.2,3.3};cout<<avg(k,3)<<“intaverage\n”;cout<<avg(x,3)<<“doubleaverage\n”;}9、重載Overloading⑴函數(shù)重載:不同函數(shù)共用一個(gè)名字,而調(diào)用參數(shù)的特征不同。例:面向?qū)ο蟮幕靖拍?續(xù))⑵運(yùn)算符重載Operatoroverloading:同一運(yùn)算符(operator)作用于不同類型的操作數(shù)(operand)上面。在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故意亦稱為靜態(tài)聯(lián)編
(staticbinding)或先前聯(lián)編
(earlybinding)。3·4面向?qū)ο蠼K^模型,就是為了理解事物而對(duì)事物作出的一種抽象,是對(duì)事物的一種無歧義的書面描述。通常,模型由一組圖示符號(hào)和組織這些符號(hào)的規(guī)則組成,利用它們來定義和描述問題域中的術(shù)語和概念。更進(jìn)一步講,模型是一種思考工具,利用這種工具可以把知識(shí)規(guī)范地表示出來。3·4面向?qū)ο蠼C嫦驅(qū)ο蟮拈_發(fā)方法Booch方法
Booch最先描述了面向?qū)ο蟮能浖_發(fā)的基礎(chǔ)問題,指出了面向?qū)ο箝_發(fā)方法是一種完全不同于傳統(tǒng)的功能分解的設(shè)計(jì)方法。面向?qū)ο蟮能浖纸夥椒ǜ咏藢?duì)客觀事物的理解,而功能分解只能通過問題空間的轉(zhuǎn)換獲得。
Booch方法包括各種模型,涉及軟件系統(tǒng)的對(duì)象、動(dòng)態(tài)及功能各方面,對(duì)類及繼承方面的描述特別值得借鑒。面向?qū)ο蟮拈_發(fā)方法(續(xù))Coad方法 1989年Coad與Yourdon提出的面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度國際物流運(yùn)輸服務(wù)合同14篇
- 2025版網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估與應(yīng)急預(yù)案合同4篇
- 二零二五年度木工機(jī)械操作人員勞務(wù)租賃合同4篇
- 2024年度陜西省公共營養(yǎng)師之四級(jí)營養(yǎng)師通關(guān)提分題庫及完整答案
- 2024年度陜西省公共營養(yǎng)師之四級(jí)營養(yǎng)師能力測試試卷A卷附答案
- 車間的現(xiàn)代化轉(zhuǎn)型與創(chuàng)新發(fā)展思考
- 2025年蘇教版選擇性必修3歷史下冊階段測試試卷含答案
- 2025年度橙子電商平臺(tái)運(yùn)營管理合同范本3篇
- 二零二五年度農(nóng)村電商支付結(jié)算服務(wù)合同范本2篇
- 二零二四年度幼兒園保育員培訓(xùn)與考核聘用合同2篇
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機(jī)器人在汽車制造中應(yīng)用案例分析報(bào)告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財(cái)務(wù)分析報(bào)告
- 無違法犯罪記錄證明申請表(個(gè)人)
- 大學(xué)生勞動(dòng)教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實(shí)施完整版
- 2023年Web前端技術(shù)試題
評(píng)論
0/150
提交評(píng)論