更新時(shí)間:2022-05-27 10:19:28 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1842次
面向?qū)ο蟮母拍?/span>和應(yīng)用已超越了程序設(shè)計(jì)和軟件開(kāi)發(fā),擴(kuò)展到如數(shù)據(jù)庫(kù)系統(tǒng),交互式界面,分布式系統(tǒng),網(wǎng)絡(luò)管理結(jié)構(gòu)和人工智能等領(lǐng)域。面向?qū)ο蟮募夹g(shù)已成為軟件開(kāi)發(fā)的一種新方法,新技術(shù)。
面向?qū)ο蟮拈_(kāi)發(fā)方法——OOSD法是一種把面向?qū)ο蟮乃枷霊?yīng)用于軟件開(kāi)發(fā)過(guò)程,指導(dǎo)開(kāi)發(fā)活動(dòng)的系統(tǒng)方法。
問(wèn)題空間——軟件系統(tǒng)所涉及到的應(yīng)用領(lǐng)域和業(yè)務(wù)范圍(現(xiàn)實(shí)世界)。
解空間——用于解決某些問(wèn)題的軟件系統(tǒng)。
(1)軟件開(kāi)發(fā)過(guò)程
(2)傳統(tǒng)軟件開(kāi)發(fā)方法存在的問(wèn)題
1)傳統(tǒng)軟件開(kāi)發(fā)方法無(wú)法實(shí)現(xiàn)從問(wèn)題空間到解空間的直接映射。
2)傳統(tǒng)軟件開(kāi)發(fā)方法無(wú)法實(shí)現(xiàn)高效的軟件復(fù)用。
原因是:傳統(tǒng)軟件開(kāi)發(fā)方法數(shù)據(jù)與代碼(操作)分離。
3)傳統(tǒng)軟件開(kāi)發(fā)方法難以實(shí)現(xiàn)從分析到設(shè)計(jì)的直接過(guò)渡。
(3)面向?qū)ο蠹夹g(shù)的特點(diǎn)
1)對(duì)軟件開(kāi)發(fā)過(guò)程所有階段進(jìn)行綜合考慮。使問(wèn)題空間與解空間具有一致性,降低復(fù)雜性。
2)軟件生存期各階段所使用的方法、技術(shù)具有高度的連續(xù)性,用符合人類(lèi)認(rèn)識(shí)世界的思維方式來(lái)分析、解決問(wèn)題。
3)將OOA(面向?qū)ο蠓治?、OOD(面向?qū)ο笤O(shè)計(jì))、OOP(面向?qū)ο缶幊?有機(jī)地集成在一起。有利于系統(tǒng)的穩(wěn)定性。
以對(duì)象為中心各種構(gòu)造系統(tǒng),而不是以功能為中心,能很好地適應(yīng)需求變化。
4)具有良好的可重用性
由于對(duì)象所具有的封裝性和信息隱蔽,具有很強(qiáng)的獨(dú)立性。
理解面向?qū)ο蟮幕靖拍顚?duì)于學(xué)習(xí)和掌握面向?qū)ο蟮拈_(kāi)發(fā)方法十分重要。
(1)對(duì)象
對(duì)象(Object)是客觀事物或概念的抽象表述,即對(duì)客觀存在的事物的描述統(tǒng)稱(chēng)為對(duì)象。
對(duì)象可以是事、物、或抽象概念 ,是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過(guò)程封裝在一起的實(shí)體。
屬性(attribute)—對(duì)象本身的性質(zhì)。
操作(operation)—給對(duì)象定義一組運(yùn)算。
對(duì)象將它自身的屬性及運(yùn)算“包裝起來(lái)”,稱(chēng)為“封裝”(encapsulation)。
對(duì)象的最基本的特征是封裝性和繼承性。
(2)類(lèi)
類(lèi)又稱(chēng)對(duì)象類(lèi)(Object Class),是一組具有相同屬性和相同操作的對(duì)象的集合。
在一個(gè)類(lèi)中,每個(gè)對(duì)象都是類(lèi)的實(shí)例(instance) ,它們都可以使用類(lèi)中提供的函數(shù)。
類(lèi)具有屬性,用數(shù)據(jù)結(jié)構(gòu)來(lái)描述類(lèi)的屬性,
類(lèi)具有操作,它是對(duì)象的行為的抽象,操作實(shí)現(xiàn)的過(guò)程稱(chēng)為方法(method),方法有方法名,方法體和參數(shù)。
由于對(duì)象是類(lèi)的實(shí)例,在進(jìn)行分析和設(shè)計(jì)時(shí),通常把注意力集中在類(lèi)上,而不是具體的對(duì)象上。
對(duì)象和類(lèi)的描述:類(lèi)和對(duì)象一般采用“**名字”、“屬性”和“運(yùn)算”**來(lái)描述。
(3)繼承
繼承是使用現(xiàn)存的定義作為基礎(chǔ),建立新定義的技術(shù)。是父類(lèi)和子類(lèi)之間共享數(shù)據(jù)結(jié)構(gòu)和方法的機(jī)制,這是類(lèi)之間的一種關(guān)系。
繼承性分:
單重繼承:一個(gè)子類(lèi)只有一個(gè)父類(lèi)。即子類(lèi)只繼承一個(gè)父類(lèi)的數(shù)據(jù)結(jié)構(gòu)和方法。
多重繼承:一個(gè)子類(lèi)可有多個(gè)父類(lèi)。繼承多個(gè)父類(lèi)的數(shù)據(jù)結(jié)構(gòu)和方法。
(4)消息
消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求(互相聯(lián)系、協(xié)同工作等)。對(duì)象之間的聯(lián)系可表示為對(duì)象間的消息傳遞,即對(duì)象間的通訊機(jī)制。
一個(gè)消息應(yīng)該包含以下信息:消息名、接收消息對(duì)象的標(biāo)識(shí)、服務(wù)標(biāo)識(shí) 、消息和方法、輸入信息、回答信息。
在對(duì)象的操作中當(dāng)一個(gè)消息發(fā)送給某個(gè)對(duì)象時(shí),消息包含接收對(duì)象去執(zhí)行某種操作的消息。
(5)多態(tài)性和動(dòng)態(tài)綁定
多態(tài)性(Polymorphism)是指相同的操作或函數(shù)、過(guò)程作用于不同的對(duì)象上并獲得不同的結(jié)果。
動(dòng)態(tài)綁定(dynamic binding)是在運(yùn)行時(shí)根據(jù)對(duì)象接收的消息動(dòng)態(tài)地確定要連接的服務(wù)代碼。
使用虛函數(shù)可實(shí)現(xiàn)動(dòng)態(tài)聯(lián)編,不同聯(lián)編可以選擇不同的實(shí)現(xiàn),這便是多態(tài)性。
繼承是動(dòng)態(tài)聯(lián)編的基礎(chǔ),虛函數(shù)是動(dòng)態(tài)聯(lián)編的關(guān)鍵。
實(shí)現(xiàn)多態(tài)性的基本步驟:
1)在基類(lèi)中,定義成員函數(shù)為虛函數(shù)(virtual);
2)定義基類(lèi)的公有(public)派生類(lèi);
3)在基類(lèi)的公有派生類(lèi)中“重載”該虛函數(shù);
4)定義指向基類(lèi)的指針變量,它指向基類(lèi)的公有派生類(lèi)的對(duì)象。
注意:重載虛函數(shù)不是一般的重載函數(shù),它要求函數(shù)名、返回類(lèi)型、參數(shù)個(gè)數(shù)、參數(shù)類(lèi)型和順序完全相同
(6)永久對(duì)象
永久對(duì)象是指生存期可以超越程序的執(zhí)行時(shí)間而長(zhǎng)期存在的對(duì)象。
大多數(shù) OOPL(面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言)不支持永久對(duì)象,如果一個(gè)對(duì)象要長(zhǎng)期保存,必須依靠于文件系統(tǒng)或數(shù)據(jù)庫(kù)管理系統(tǒng)實(shí)現(xiàn),程序員需要作對(duì)象與文件系統(tǒng)或數(shù)據(jù)庫(kù)之間數(shù)據(jù)格式的轉(zhuǎn)換,以及保存和恢復(fù)所需的操作等煩瑣的工作。(需要有許多額外的工作)
為了實(shí)現(xiàn)永久對(duì)象,使上述煩瑣工作由系統(tǒng)自動(dòng)完成,需要較強(qiáng)的技術(shù)支持;需要一個(gè)基于永久對(duì)象管理系統(tǒng)OMS(object management system),能夠描述和處理永久對(duì)象的編程語(yǔ)言。
OOA的目標(biāo)是完成對(duì)所求解問(wèn)題的分析,確定系統(tǒng)“做什么”,并建立系統(tǒng)的模型。
基本概念:
問(wèn)題域:被開(kāi)發(fā)系統(tǒng)的應(yīng)用領(lǐng)域。
系統(tǒng)責(zé)任:所開(kāi)發(fā)的系統(tǒng)應(yīng)具備的職能。
(1)需求中存在的問(wèn)題
1)確定問(wèn)題域和系統(tǒng)責(zé)任困難
2)充分交流的問(wèn)題解決得不好
3)很難適應(yīng)需求的不斷變化
4)難以滿足復(fù)用要求
(2)OOA的特點(diǎn)
1)有利于對(duì)問(wèn)題及系統(tǒng)責(zé)任的理解;
2)有利于人員之間的交流;
3)對(duì)需求變化有較強(qiáng)的適應(yīng)性;
4)支持軟件復(fù)用。
運(yùn)用面向?qū)ο蟮姆椒ǎ瑢?duì)問(wèn)題域和系統(tǒng)責(zé)任進(jìn)行分析和理解,建立分析模型。
(1)分析問(wèn)題域,確定類(lèi)和對(duì)象;
(2)定義類(lèi)或?qū)ο髮傩院筒僮鳎_定其結(jié)構(gòu);
(3)建立系統(tǒng)中類(lèi)或?qū)ο笾g的靜態(tài)聯(lián)系和動(dòng)態(tài)聯(lián)系。
基本模型:是一個(gè)類(lèi)圖,以直觀的方式表達(dá)系統(tǒng)最重要的信息。OOA基本模型的三個(gè)層次分別描述:對(duì)象(哪幾類(lèi))、屬性(內(nèi)部構(gòu)成)、運(yùn)算(對(duì)象與外部的關(guān)系)。
主題:又稱(chēng)為子系統(tǒng),是將一些聯(lián)系密切的類(lèi)組織在一起的類(lèi)的集合。按照粒度控制原則,將系統(tǒng)組成幾個(gè)主題,便于理解。
交互圖:Use case與系統(tǒng)成分之間的對(duì)照?qǐng)D。
主題圖和交互圖又稱(chēng)為補(bǔ)充模型。
詳細(xì)說(shuō)明:按照分析方法所要求的格式,對(duì)分析模型進(jìn)行說(shuō)明和解釋。主要以文字為主。
OOD是面向?qū)ο蠓椒ㄔ谲浖O(shè)計(jì)階段應(yīng)用與擴(kuò)展的結(jié)果。
將OOA所創(chuàng)建的分析模型轉(zhuǎn)換為設(shè)計(jì)模型,解決如何作的問(wèn)題。OOD與OOA沒(méi)有明顯的分界,采用相同的符號(hào)。
(1)系統(tǒng)設(shè)計(jì)
將分析模型劃分為若干子系統(tǒng),子系統(tǒng)應(yīng)該具有良好的接口,子系統(tǒng)內(nèi)的類(lèi)相互協(xié)作。標(biāo)識(shí)問(wèn)題本身的并發(fā)性,為子系統(tǒng)分配處理器。
子系統(tǒng)的分解是關(guān)鍵,可以有分層和分塊:
分層:將軟件系統(tǒng)組織為層次結(jié)構(gòu),每層是一個(gè)子系統(tǒng)。分層結(jié)構(gòu)又分為封閉式和開(kāi)放式。
分塊:垂直分塊是將系統(tǒng)分解為若干個(gè)相對(duì)獨(dú)立的、弱耦合的子系統(tǒng)。每個(gè)子系統(tǒng)相當(dāng)于一個(gè)塊,每塊實(shí)現(xiàn)一類(lèi)服務(wù)。
常常使用分層和分塊的混合結(jié)構(gòu)。
(2)對(duì)象設(shè)計(jì)
在面向?qū)ο蟮南到y(tǒng)中,模塊、數(shù)據(jù)結(jié)構(gòu)及接口等都集中體現(xiàn)在對(duì)象和對(duì)象層次結(jié)構(gòu)中。
對(duì)象設(shè)計(jì)是為每個(gè)類(lèi)的屬性和操作進(jìn)行詳細(xì)設(shè)計(jì),包括屬性和操作,它們的數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)算法。
(3)消息設(shè)計(jì)
設(shè)計(jì)連接類(lèi)與它的協(xié)作者之間的消息規(guī)約。
(4)優(yōu)化及復(fù)審
主要考慮提高效率和建立良好的繼承結(jié)構(gòu)。
面向?qū)ο笤O(shè)計(jì)準(zhǔn)則:
(1)模塊化
(2)抽象
(3)信息隱藏
(4)弱耦合
(5)強(qiáng)內(nèi)聚
(6)可重用
幾種典型的面向?qū)ο蟮拈_(kāi)發(fā)方法:Coda方法,,Booch方法和 OMT方法。
隨著面向?qū)ο箝_(kāi)發(fā)方法的發(fā)展,逐漸形成了幾種主要的流派:
Coda方法
Booch方法
OMT方法
OOSE方法
Coda/Yourdon方法 — 由OOA,OOD構(gòu)成
建立問(wèn)題域的分析模型。該模型由5個(gè)層次組成:即主題層、對(duì)象層、結(jié)構(gòu)層、屬性層和服務(wù)層。
要建立4個(gè)組元的設(shè)計(jì)模型:?jiǎn)栴}域組元、人機(jī)交互組元、任務(wù)管理組元和數(shù)據(jù)管理組元。
該方法的特點(diǎn)是:簡(jiǎn)單、易學(xué),對(duì)于對(duì)象、結(jié)構(gòu)、服務(wù)的認(rèn)定較系統(tǒng)、完整、可操作性強(qiáng)。
(1)Coda方法的OOA
在Coda方法中,構(gòu)造和評(píng)審OOA概念模型的順序由五個(gè)層次組成:類(lèi)與對(duì)象、屬性、服務(wù)、結(jié)構(gòu)和主題。(這五個(gè)層次表示分析的不同側(cè)面。)
(2)Coda方法的OOD
Coda方法的OOD模型是在OOA模型5個(gè)層次基礎(chǔ)上,建立系統(tǒng)的4類(lèi)組元。
Booch方法的開(kāi)發(fā)模型包括靜態(tài)模型和動(dòng)態(tài)模型,靜態(tài)模型分為邏輯模型和物理模型,描述了系統(tǒng)的構(gòu)成和結(jié)構(gòu),動(dòng)態(tài)模型分為狀態(tài)圖和時(shí)序圖。
(1)Booch方法的基本模型
1)類(lèi)圖
類(lèi)圖
2)對(duì)象圖
對(duì)象圖由對(duì)象和消息組成。
3)狀態(tài)圖
狀態(tài)圖
4)時(shí)序圖
時(shí)序圖
5)模塊圖
模塊圖
6)進(jìn)程圖
進(jìn)程圖
(2)面向?qū)ο蟮慕<夹g(shù)(OMT)
面向?qū)ο蟮姆椒▽W(xué)又稱(chēng)對(duì)象模型技術(shù)。OMT是一種軟件工程方法學(xué),支持整個(gè)軟件生存周期,覆蓋問(wèn)題構(gòu)成、分析、設(shè)計(jì)和實(shí)現(xiàn)等階段。
OMT方法使用了建模的思想,討論如何建立一個(gè)實(shí)際的應(yīng)用模型。從3個(gè)不同而又相關(guān)的角度建立了三類(lèi)模型:對(duì)象模型、動(dòng)態(tài)模型和函數(shù)模型,OMT為每一個(gè)模型提供了圖形表示。
1)對(duì)象模型技術(shù)的基本概念
OMT方法討論的核心就是建立三類(lèi)模型:
對(duì)象模型描述了由對(duì)象和相應(yīng)實(shí)體構(gòu)成的系統(tǒng)靜態(tài)結(jié)構(gòu),描述了系統(tǒng)中對(duì)象的標(biāo)識(shí)、屬性、操作及對(duì)象的相互關(guān)系。
動(dòng)態(tài)模型根據(jù)事件和狀態(tài)描述了系統(tǒng)的控制結(jié)構(gòu),系統(tǒng)中與時(shí)間和操作順序有關(guān)的內(nèi)容。
函數(shù)模型描述系統(tǒng)中與值的轉(zhuǎn)換有關(guān)的問(wèn)題,如函數(shù)、映射、約束和函數(shù)作用等。
三類(lèi)模型描述角度不同,卻又相互聯(lián)系。
2)建立對(duì)象模型
對(duì)象模型描述系統(tǒng)的靜態(tài)模型。
構(gòu)成對(duì)象模型的基本元素有:對(duì)象(類(lèi))、他們之間的關(guān)系。
類(lèi)之間、對(duì)象之間的關(guān)系
關(guān)聯(lián)與鏈
①二元關(guān)聯(lián)、三元關(guān)聯(lián)
②受限關(guān)聯(lián)
③鏈屬性和角色進(jìn)一步描述。
繼承性
繼承性通常又稱(chēng)為概括,表示基類(lèi)與子類(lèi)的關(guān)系。
聚集
表整體與部分的關(guān)系。
(3)建立動(dòng)態(tài)模型
動(dòng)態(tài)模型著重于系統(tǒng)的邏輯結(jié)構(gòu);描述某時(shí)刻對(duì)象及其聯(lián)系的改變。包括狀態(tài)圖和事件追綜圖。
1)事件和狀態(tài)
狀態(tài)—對(duì)象所具有的屬性值,具有時(shí)間性和持續(xù)性。
事件—對(duì)于對(duì)象的觸發(fā)行為,指從一個(gè)對(duì)象到另一個(gè)對(duì)象的信息的單向傳遞。
腳本—在系統(tǒng)的某一執(zhí)行期間內(nèi)的一系列事件。
在系統(tǒng)中具有屬性值、鏈路的對(duì)象,可能相互激發(fā),引起狀態(tài)的一系列變化。
有的事件傳遞的是簡(jiǎn)單信號(hào),有的事件則傳遞的是數(shù)據(jù)值。由事件傳送的數(shù)據(jù)值稱(chēng)為“屬性”。
狀態(tài)圖
狀態(tài)圖是一個(gè)狀態(tài)和事件的網(wǎng)絡(luò),側(cè)重于描述每一類(lèi)對(duì)象的動(dòng)態(tài)行為,狀態(tài)的遷移。
動(dòng)態(tài)模型由多個(gè)狀態(tài)圖組成,每個(gè)有重要行為的類(lèi)都有一個(gè)狀態(tài)圖。各狀態(tài)圖可并發(fā)地執(zhí)行及獨(dú)立改變狀態(tài)。
2)事件追蹤圖
事件追蹤圖側(cè)重描述系統(tǒng)執(zhí)行過(guò)程中的一個(gè)特定的“場(chǎng)景(Scenarios)”。場(chǎng)景有時(shí)也叫“腳本”,是完成系統(tǒng)某個(gè)功能的一個(gè)事件序列。即是描述多個(gè)對(duì)象的集體行為。
腳本—系統(tǒng)某一次特定運(yùn)行時(shí)期內(nèi)發(fā)生的事件序列。
3)建立功能模型
功能模型著重于系統(tǒng)內(nèi)部數(shù)據(jù)的傳遞與處理。定義“做什么?”的問(wèn)題,表明值之間的依賴關(guān)系及其相關(guān)的功能。
描述手段為分層數(shù)據(jù)流圖,DFD圖有助于表示功能的依賴關(guān)系,其中的處理對(duì)應(yīng)于狀態(tài)圖的活動(dòng)和動(dòng)作,數(shù)據(jù)流對(duì)應(yīng)于對(duì)象圖中的對(duì)象或?qū)傩浴=⒐δ苣P偷牟襟E為:
確定輸入、輸出值
先列出輸入、輸出值,輸入輸出值是系統(tǒng)與外部世界之間的事件的參數(shù)。
建立數(shù)據(jù)流圖
通常按層次組織
描述處理
當(dāng)數(shù)據(jù)流圖已細(xì)化到一定程度后,對(duì)各處理進(jìn)行描述,描述方法用自然語(yǔ)言、偽碼及判定樹(shù)等。
(4)面向?qū)ο蟮能浖こ?OOSE)
OOSE將面向?qū)ο蟮乃枷霊?yīng)用于軟件工程中,建立五類(lèi)模型:
OOSE的開(kāi)發(fā)活動(dòng)主要分為三類(lèi):分析、構(gòu)造和測(cè)試。
OOSE的核心—最大貢獻(xiàn),是建立了Use Case 模型。
用例(Use case)是OOSE中的重要概念,在開(kāi)發(fā)各種模型時(shí),用例貫穿了OOSE活動(dòng)的核心,描述了系統(tǒng)的需求及功能。
分析模型:use case模型通過(guò)分析來(lái)構(gòu)造。
設(shè)計(jì)模型:use case模型通過(guò)設(shè)計(jì)來(lái)具體化。
實(shí)現(xiàn)模型:該模型依據(jù)具體化的設(shè)計(jì)來(lái)實(shí)現(xiàn)use case模型。
測(cè)試模型:用來(lái)測(cè)試具體化的use case模型。
模型是對(duì)系統(tǒng)的抽象表示,建模是在不同層次上對(duì)系統(tǒng)的描述。
鑒于軟件,尤其是大型軟件所具有的復(fù)雜性,以及人們對(duì)復(fù)雜問(wèn)題理解的局限性,建立一種共同的建模語(yǔ)言,推動(dòng)面向?qū)ο蠓椒ǖ陌l(fā)展是十分必要的。
以上就是關(guān)于“面向?qū)ο蟮脑O(shè)計(jì)方法概述”,如果大家想了解更多相關(guān)知識(shí),不妨來(lái)關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java在線學(xué)習(xí),里面的課程內(nèi)容從入門(mén)到精通,細(xì)致全面,很適合沒(méi)有基礎(chǔ)的小伙伴學(xué)習(xí),希望對(duì)大家能夠有所幫助。
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)