更新時間:2022-05-27 10:19:28 來源:動力節(jié)點 瀏覽2319次
面向對象的概念和應用已超越了程序設計和軟件開發(fā),擴展到如數(shù)據(jù)庫系統(tǒng),交互式界面,分布式系統(tǒng),網(wǎng)絡管理結構和人工智能等領域。面向對象的技術已成為軟件開發(fā)的一種新方法,新技術。
面向對象的開發(fā)方法——OOSD法是一種把面向對象的思想應用于軟件開發(fā)過程,指導開發(fā)活動的系統(tǒng)方法。
問題空間——軟件系統(tǒng)所涉及到的應用領域和業(yè)務范圍(現(xiàn)實世界)。
解空間——用于解決某些問題的軟件系統(tǒng)。
(1)軟件開發(fā)過程

(2)傳統(tǒng)軟件開發(fā)方法存在的問題
1)傳統(tǒng)軟件開發(fā)方法無法實現(xiàn)從問題空間到解空間的直接映射。

2)傳統(tǒng)軟件開發(fā)方法無法實現(xiàn)高效的軟件復用。
原因是:傳統(tǒng)軟件開發(fā)方法數(shù)據(jù)與代碼(操作)分離。
3)傳統(tǒng)軟件開發(fā)方法難以實現(xiàn)從分析到設計的直接過渡。

(3)面向對象技術的特點
1)對軟件開發(fā)過程所有階段進行綜合考慮。使問題空間與解空間具有一致性,降低復雜性。
2)軟件生存期各階段所使用的方法、技術具有高度的連續(xù)性,用符合人類認識世界的思維方式來分析、解決問題。

3)將OOA(面向對象分析)、OOD(面向對象設計)、OOP(面向對象編程)有機地集成在一起。有利于系統(tǒng)的穩(wěn)定性。
以對象為中心各種構造系統(tǒng),而不是以功能為中心,能很好地適應需求變化。
4)具有良好的可重用性
由于對象所具有的封裝性和信息隱蔽,具有很強的獨立性。
理解面向對象的基本概念對于學習和掌握面向對象的開發(fā)方法十分重要。
(1)對象
對象(Object)是客觀事物或概念的抽象表述,即對客觀存在的事物的描述統(tǒng)稱為對象。
對象可以是事、物、或抽象概念 ,是將一組數(shù)據(jù)和使用該數(shù)據(jù)的一組基本操作或過程封裝在一起的實體。
屬性(attribute)—對象本身的性質。
操作(operation)—給對象定義一組運算。
對象將它自身的屬性及運算“包裝起來”,稱為“封裝”(encapsulation)。
對象的最基本的特征是封裝性和繼承性。
(2)類
類又稱對象類(Object Class),是一組具有相同屬性和相同操作的對象的集合。
在一個類中,每個對象都是類的實例(instance) ,它們都可以使用類中提供的函數(shù)。
類具有屬性,用數(shù)據(jù)結構來描述類的屬性,
類具有操作,它是對象的行為的抽象,操作實現(xiàn)的過程稱為方法(method),方法有方法名,方法體和參數(shù)。
由于對象是類的實例,在進行分析和設計時,通常把注意力集中在類上,而不是具體的對象上。
對象和類的描述:類和對象一般采用“**名字”、“屬性”和“運算”**來描述。
(3)繼承
繼承是使用現(xiàn)存的定義作為基礎,建立新定義的技術。是父類和子類之間共享數(shù)據(jù)結構和方法的機制,這是類之間的一種關系。
繼承性分:
單重繼承:一個子類只有一個父類。即子類只繼承一個父類的數(shù)據(jù)結構和方法。
多重繼承:一個子類可有多個父類。繼承多個父類的數(shù)據(jù)結構和方法。

(4)消息
消息就是向對象發(fā)出的服務請求(互相聯(lián)系、協(xié)同工作等)。對象之間的聯(lián)系可表示為對象間的消息傳遞,即對象間的通訊機制。
一個消息應該包含以下信息:消息名、接收消息對象的標識、服務標識 、消息和方法、輸入信息、回答信息。
在對象的操作中當一個消息發(fā)送給某個對象時,消息包含接收對象去執(zhí)行某種操作的消息。
(5)多態(tài)性和動態(tài)綁定
多態(tài)性(Polymorphism)是指相同的操作或函數(shù)、過程作用于不同的對象上并獲得不同的結果。
動態(tài)綁定(dynamic binding)是在運行時根據(jù)對象接收的消息動態(tài)地確定要連接的服務代碼。
使用虛函數(shù)可實現(xiàn)動態(tài)聯(lián)編,不同聯(lián)編可以選擇不同的實現(xiàn),這便是多態(tài)性。
繼承是動態(tài)聯(lián)編的基礎,虛函數(shù)是動態(tài)聯(lián)編的關鍵。
實現(xiàn)多態(tài)性的基本步驟:
1)在基類中,定義成員函數(shù)為虛函數(shù)(virtual);
2)定義基類的公有(public)派生類;
3)在基類的公有派生類中“重載”該虛函數(shù);
4)定義指向基類的指針變量,它指向基類的公有派生類的對象。
注意:重載虛函數(shù)不是一般的重載函數(shù),它要求函數(shù)名、返回類型、參數(shù)個數(shù)、參數(shù)類型和順序完全相同
(6)永久對象
永久對象是指生存期可以超越程序的執(zhí)行時間而長期存在的對象。
大多數(shù) OOPL(面向對象程序設計語言)不支持永久對象,如果一個對象要長期保存,必須依靠于文件系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)實現(xiàn),程序員需要作對象與文件系統(tǒng)或數(shù)據(jù)庫之間數(shù)據(jù)格式的轉換,以及保存和恢復所需的操作等煩瑣的工作。(需要有許多額外的工作)
為了實現(xiàn)永久對象,使上述煩瑣工作由系統(tǒng)自動完成,需要較強的技術支持;需要一個基于永久對象管理系統(tǒng)OMS(object management system),能夠描述和處理永久對象的編程語言。
OOA的目標是完成對所求解問題的分析,確定系統(tǒng)“做什么”,并建立系統(tǒng)的模型。
基本概念:
問題域:被開發(fā)系統(tǒng)的應用領域。
系統(tǒng)責任:所開發(fā)的系統(tǒng)應具備的職能。
(1)需求中存在的問題
1)確定問題域和系統(tǒng)責任困難
2)充分交流的問題解決得不好
3)很難適應需求的不斷變化
4)難以滿足復用要求
(2)OOA的特點
1)有利于對問題及系統(tǒng)責任的理解;
2)有利于人員之間的交流;
3)對需求變化有較強的適應性;
4)支持軟件復用。
運用面向對象的方法,對問題域和系統(tǒng)責任進行分析和理解,建立分析模型。
(1)分析問題域,確定類和對象;
(2)定義類或對象屬性和操作,確定其結構;
(3)建立系統(tǒng)中類或對象之間的靜態(tài)聯(lián)系和動態(tài)聯(lián)系。


基本模型:是一個類圖,以直觀的方式表達系統(tǒng)最重要的信息。OOA基本模型的三個層次分別描述:對象(哪幾類)、屬性(內部構成)、運算(對象與外部的關系)。
主題:又稱為子系統(tǒng),是將一些聯(lián)系密切的類組織在一起的類的集合。按照粒度控制原則,將系統(tǒng)組成幾個主題,便于理解。
交互圖:Use case與系統(tǒng)成分之間的對照圖。
主題圖和交互圖又稱為補充模型。
詳細說明:按照分析方法所要求的格式,對分析模型進行說明和解釋。主要以文字為主。
OOD是面向對象方法在軟件設計階段應用與擴展的結果。
將OOA所創(chuàng)建的分析模型轉換為設計模型,解決如何作的問題。OOD與OOA沒有明顯的分界,采用相同的符號。
(1)系統(tǒng)設計
將分析模型劃分為若干子系統(tǒng),子系統(tǒng)應該具有良好的接口,子系統(tǒng)內的類相互協(xié)作。標識問題本身的并發(fā)性,為子系統(tǒng)分配處理器。

子系統(tǒng)的分解是關鍵,可以有分層和分塊:
分層:將軟件系統(tǒng)組織為層次結構,每層是一個子系統(tǒng)。分層結構又分為封閉式和開放式。
分塊:垂直分塊是將系統(tǒng)分解為若干個相對獨立的、弱耦合的子系統(tǒng)。每個子系統(tǒng)相當于一個塊,每塊實現(xiàn)一類服務。
常常使用分層和分塊的混合結構。

(2)對象設計
在面向對象的系統(tǒng)中,模塊、數(shù)據(jù)結構及接口等都集中體現(xiàn)在對象和對象層次結構中。
對象設計是為每個類的屬性和操作進行詳細設計,包括屬性和操作,它們的數(shù)據(jù)結構和實現(xiàn)算法。
(3)消息設計
設計連接類與它的協(xié)作者之間的消息規(guī)約。
(4)優(yōu)化及復審
主要考慮提高效率和建立良好的繼承結構。
面向對象設計準則:
(1)模塊化
(2)抽象
(3)信息隱藏
(4)弱耦合
(5)強內聚
(6)可重用
幾種典型的面向對象的開發(fā)方法:Coda方法,,Booch方法和 OMT方法。
隨著面向對象開發(fā)方法的發(fā)展,逐漸形成了幾種主要的流派:
Coda方法
Booch方法
OMT方法
OOSE方法
Coda/Yourdon方法 — 由OOA,OOD構成
建立問題域的分析模型。該模型由5個層次組成:即主題層、對象層、結構層、屬性層和服務層。
要建立4個組元的設計模型:問題域組元、人機交互組元、任務管理組元和數(shù)據(jù)管理組元。
該方法的特點是:簡單、易學,對于對象、結構、服務的認定較系統(tǒng)、完整、可操作性強。
(1)Coda方法的OOA
在Coda方法中,構造和評審OOA概念模型的順序由五個層次組成:類與對象、屬性、服務、結構和主題。(這五個層次表示分析的不同側面。)
(2)Coda方法的OOD
Coda方法的OOD模型是在OOA模型5個層次基礎上,建立系統(tǒng)的4類組元。
Booch方法的開發(fā)模型包括靜態(tài)模型和動態(tài)模型,靜態(tài)模型分為邏輯模型和物理模型,描述了系統(tǒng)的構成和結構,動態(tài)模型分為狀態(tài)圖和時序圖。
(1)Booch方法的基本模型
1)類圖
類圖

2)對象圖
對象圖由對象和消息組成。

3)狀態(tài)圖
狀態(tài)圖

4)時序圖
時序圖

5)模塊圖
模塊圖

6)進程圖
進程圖

(2)面向對象的建模技術(OMT)
面向對象的方法學又稱對象模型技術。OMT是一種軟件工程方法學,支持整個軟件生存周期,覆蓋問題構成、分析、設計和實現(xiàn)等階段。
OMT方法使用了建模的思想,討論如何建立一個實際的應用模型。從3個不同而又相關的角度建立了三類模型:對象模型、動態(tài)模型和函數(shù)模型,OMT為每一個模型提供了圖形表示。
1)對象模型技術的基本概念
OMT方法討論的核心就是建立三類模型:
對象模型描述了由對象和相應實體構成的系統(tǒng)靜態(tài)結構,描述了系統(tǒng)中對象的標識、屬性、操作及對象的相互關系。
動態(tài)模型根據(jù)事件和狀態(tài)描述了系統(tǒng)的控制結構,系統(tǒng)中與時間和操作順序有關的內容。
函數(shù)模型描述系統(tǒng)中與值的轉換有關的問題,如函數(shù)、映射、約束和函數(shù)作用等。
三類模型描述角度不同,卻又相互聯(lián)系。
2)建立對象模型
對象模型描述系統(tǒng)的靜態(tài)模型。
構成對象模型的基本元素有:對象(類)、他們之間的關系。

類之間、對象之間的關系
關聯(lián)與鏈
①二元關聯(lián)、三元關聯(lián)
②受限關聯(lián)
③鏈屬性和角色進一步描述。
繼承性
繼承性通常又稱為概括,表示基類與子類的關系。
聚集
表整體與部分的關系。
(3)建立動態(tài)模型
動態(tài)模型著重于系統(tǒng)的邏輯結構;描述某時刻對象及其聯(lián)系的改變。包括狀態(tài)圖和事件追綜圖。
1)事件和狀態(tài)
狀態(tài)—對象所具有的屬性值,具有時間性和持續(xù)性。
事件—對于對象的觸發(fā)行為,指從一個對象到另一個對象的信息的單向傳遞。
腳本—在系統(tǒng)的某一執(zhí)行期間內的一系列事件。
在系統(tǒng)中具有屬性值、鏈路的對象,可能相互激發(fā),引起狀態(tài)的一系列變化。
有的事件傳遞的是簡單信號,有的事件則傳遞的是數(shù)據(jù)值。由事件傳送的數(shù)據(jù)值稱為“屬性”。
狀態(tài)圖
狀態(tài)圖是一個狀態(tài)和事件的網(wǎng)絡,側重于描述每一類對象的動態(tài)行為,狀態(tài)的遷移。

動態(tài)模型由多個狀態(tài)圖組成,每個有重要行為的類都有一個狀態(tài)圖。各狀態(tài)圖可并發(fā)地執(zhí)行及獨立改變狀態(tài)。
2)事件追蹤圖
事件追蹤圖側重描述系統(tǒng)執(zhí)行過程中的一個特定的“場景(Scenarios)”。場景有時也叫“腳本”,是完成系統(tǒng)某個功能的一個事件序列。即是描述多個對象的集體行為。
腳本—系統(tǒng)某一次特定運行時期內發(fā)生的事件序列。
3)建立功能模型
功能模型著重于系統(tǒng)內部數(shù)據(jù)的傳遞與處理。定義“做什么?”的問題,表明值之間的依賴關系及其相關的功能。
描述手段為分層數(shù)據(jù)流圖,DFD圖有助于表示功能的依賴關系,其中的處理對應于狀態(tài)圖的活動和動作,數(shù)據(jù)流對應于對象圖中的對象或屬性。建立功能模型的步驟為:
確定輸入、輸出值
先列出輸入、輸出值,輸入輸出值是系統(tǒng)與外部世界之間的事件的參數(shù)。
建立數(shù)據(jù)流圖
通常按層次組織
描述處理
當數(shù)據(jù)流圖已細化到一定程度后,對各處理進行描述,描述方法用自然語言、偽碼及判定樹等。
(4)面向對象的軟件工程(OOSE)
OOSE將面向對象的思想應用于軟件工程中,建立五類模型:
OOSE的開發(fā)活動主要分為三類:分析、構造和測試。
OOSE的核心—最大貢獻,是建立了Use Case 模型。
用例(Use case)是OOSE中的重要概念,在開發(fā)各種模型時,用例貫穿了OOSE活動的核心,描述了系統(tǒng)的需求及功能。
分析模型:use case模型通過分析來構造。
設計模型:use case模型通過設計來具體化。
實現(xiàn)模型:該模型依據(jù)具體化的設計來實現(xiàn)use case模型。
測試模型:用來測試具體化的use case模型。
模型是對系統(tǒng)的抽象表示,建模是在不同層次上對系統(tǒng)的描述。
鑒于軟件,尤其是大型軟件所具有的復雜性,以及人們對復雜問題理解的局限性,建立一種共同的建模語言,推動面向對象方法的發(fā)展是十分必要的。
以上就是關于“面向對象的設計方法概述”,如果大家想了解更多相關知識,不妨來關注一下動力節(jié)點的Java在線學習,里面的課程內容從入門到精通,細致全面,很適合沒有基礎的小伙伴學習,希望對大家能夠有所幫助。