OOA:面向對象

見:https://baike.baidu.com/item/OOA/3659916?fr=aladdin


OOA:面向對象:

Object-Oriented Analysis(面向對象分析方法)是確定需求或者業務的角度,按照面向對象的思想來分析業務。例如:OOA只是對需求中描述的問題,進行模塊化的處理,描述問題的本質,區別每個問題的不同點相同點,確定問題中的對象。OOA與結構化分析有較大的區別。OOA所強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是對管理業務現狀和方法的分析。
中文名
面向對象分析方法
外文名
OOA
層????次
5個
全????名
Object-Oriented Analysis

組成

編輯

分析

OOA(面向對象的分析)模型由5個層次(主題層、對象類層、結構層、屬性層和服務層)和5個活動(標識對象類、標識結構、定義主題、定義屬性和定義服務)組成。在這種方法中定義了兩種對象類之間的結構,一種稱為分類結構,一種稱為組裝結構。分類結構就是所謂的一般與特殊的關系。組裝結構則反映了對象之間的整體與部分的關系。

定義屬性

OOA在定義屬性的同時,要識別實例連接。實例連接是一個實例與另一個實例的映射關系。
OOA在定義服務的同時要識別消息連接。當一個對象需要向另一對象發送消息時,它們之間就存在消息連接。
OOA 中的5個層次和5個活動繼續貫穿在OOD(面向對象的設計)過程中。OOD模型由4個部分組成。它們分別是設計問題域部分、設計人機交互部分、設計任務管理部分和設計數據管理部分。

主要原則

編輯

定義

(1)抽象:從許多事物中舍棄個別的、非本質的特征,抽取共同的、本質性的特征,就叫作抽象。抽象是形成概念的必須手段。
抽象原則有兩方面的意義:第一,盡管問題域中的事物是很復雜的,但是分析員并不需要了解和描述它們的一切,只需要分析研究其中與系統目標有關的事物及其本質性特征。第二,通過舍棄個體事物在細節上的差異,抽取其共同特征而得到一批事物的抽象概念。
抽象是面向對象方法中使用最為廣泛的原則。抽象原則包括過程抽象和數據抽象兩個方面。
過程抽象是指,任何一個完成確定功能的操作序列,其使用者都可以把它看作一個單一的實體,盡管實際上它可能是由一系列更低級的操作完成的。
數據抽象是根據施加于數據之上的操作來定義數據類型,并限定數據的值只能由這些操作來修改和觀察。數據抽象是OOA的核心原則。它強調把數據(屬性)和操作(服務)結合為一個不可分的系統單位(即對象),對象的外部只需要知道它做什么,而不必知道它如何做。
(2)封裝就是把對象的屬性和服務結合為一個不可分的系統單位,并盡可能隱蔽對象的內部細節。
(3)繼承:特殊類的對象擁有的其一般類的全部屬性與服務,稱作特殊類對一般類的繼承。
在OOA中運用繼承原則,就是在每個由一般類和特殊類形成的一般—特殊結構中,把一般類的對象實例和所有特殊類的對象實例都共同具有的屬性和服務,一次性地在一般類中進行顯式的定義。在特殊類中不再重復地定義一般類中已定義的東西,但是在語義上,特殊類卻自動地、隱含地擁有它的一般類(以及所有更上層的一般類)中定義的全部屬性和服務。繼承原則的好處是:使系統模型比較簡練也比較清晰。
(4)分類:就是把具有相同屬性和服務的對象劃分為一類,用類作為這些對象的抽象描述。分類原則實際上是抽象原則運用于對象描述時的一種表現形式。
(5)聚合:又稱組裝,其原則是:把一個復雜的事物看成若干比較簡單的事物的組裝體,從而簡化對復雜事物的描述。
(6)關聯:是人類思考問題時經常運用的思想方法:通過一個事物聯想到另外的事物。能使人發生聯想的原因是事物之間確實存在著某些聯系。
(7)消息通信:這一原則要求對象之間只能通過消息進行通信,而不允許在對象之外直接地存取對象內部的屬性。通過消息進行通信是由于封裝原則而引起的。在OOA中要求用消息連接表示出對象之間的動態聯系。
(8)粒度控制:一般來講,人在面對一個復雜的問題域時,不可能在同一時刻既能縱觀全局,又能洞察秋毫。因此需要控制自己的視野:考慮全局時,注意其大的組成部分,暫時不詳察每一部分的具體的細節;考慮某部分的細節時則暫時撇開其余的部分。這就是粒度控制原則。
(9)行為分析:現實世界中事物的行為是復雜的。由大量的事物所構成的問題域中各種行為往往相互依賴、相互交織。

分析模型

1、對象模型:對用例模型進行分析,把系統分解成互相協作的分析類,通過類圖/對象圖描述對象/對象的屬性/對象間的關系,是系統的靜態模型
2、動態模型:描述系統的動態行為,通過時序圖/協作圖描述對象的交互,以揭示對象間如何協作來完成每個具體的用例,單個對象的狀態變化/動態行為可以通過狀態圖來表達
3、功能模型(即用例模型à作為輸入)。

主要優點

(1)加強了對問題域和系統責任的理解;
(2)改進與分析有關的各類人員之間的交流;
(3)對需求的變化具有較強的適應性;
(4)支持軟件復用。
(5)貫穿軟件生命周期全過程的一致性。
(6)實用性;
(7)有利于用戶參與。

基本步驟

在用OOA具體地分析一個事物時,大致上遵循如下五個基本步驟:
第一步,確定對象和類。這里所說的對象是對數據及其處理方式的抽象,它反映了系統保存和處理現實世界中某些事物的信息的能力。類是多個對象的共同屬性和方法集合的描述,它包括如何在一個類中建立一個新對象的描述。
第二步,確定結構(structure)。結構是指問題域的復雜性和連接關系。類成員結構反映了泛化-特化關系,整體-部分結構反映整體和局部之間的關系。
第三步,確定主題(subject)。主題是指事物的總體概貌和總體分析模型。
第四步,確定屬性(attribute)。屬性就是數據元素,可用來描述對象或分類結構的實例,可在圖中給出,并在對象的存儲中指定。
第五步,確定方法(method)。方法是在收到消息后必須進行的一些處理方法:方法要在圖中定義,并在對象的存儲中指定。對于每個對象和結構來說,那些用來增加、修改、刪除和選擇一個方法本身都是隱含的(雖然它們是要在對象的存儲中定義的,但并不在圖上給出),而有些則是顯示的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450965.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450965.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450965.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DCT原型 ——傅里葉級數

傅里葉級數 法國數學家傅里葉發現,任何周期函數都可以用正弦函數和余弦函數構成的無窮級數來表示(選擇正弦函數與余弦函數作為基函數是因為它們是正交的),后世稱為傅里葉級數(法語:srie de Fourier&#xf…

c 遞歸算法

#include <stdio.h>double factorial(unsigned int i) {if(i < 1){return 1;}return i * factorial(i - 1); } int main() {int i 15;printf("%d 的階乘為 %f\n", i, factorial(i));return 0; } 轉載于:https://www.cnblogs.com/sea-stream/p/9822437.htm…

紅黑樹和B+樹

&#xff08;一&#xff09;紅黑樹 紅黑樹是一種自平衡二叉查找樹&#xff0c;也被稱為"對稱二叉B樹"&#xff0c;它可以在O(logn)時間內利用 O(logn)的空間來完成查找、插入、刪除操作。紅黑樹的讀操作與普通二叉查找樹相同&#xff0c;而插入和刪除操作可能會破壞…

策略模式、觀察者模式、代理模式、裝飾模式 應用場景和實現

有個大神寫的很好&#xff1a; 參考&#xff1a;設計模式學習筆記&#xff08;四&#xff1a;策略模式&#xff09; 參考&#xff1a;設計模式學習筆記&#xff08;二&#xff1a;觀察者模式&#xff09; 參考&#xff1a;設計模式學習筆記-代理模式 參考&#xff1a;設計模式-…

DQL、DML、DDL、DCL的概念與區別

http://blog.csdn.net/tomatofly/article/details/5949070 SQL語言的分類 SQL語言共分為四大類&#xff1a;數據查詢語言DQL&#xff08;Data Query Language&#xff09;&#xff0c;數據操縱語言DML&#xff0c;數據定義語言DDL(Data Definition Language)&#xff0c;數據…

python學習總結

1.python環境搭建方便&#xff0c;只需要安裝python解釋器 2.python把任意數據類型賦值給變量&#xff0c;不用定義類型 3.Python的整數浮點數沒有大小限制&#xff0c;不用擔心超過數值范圍。比如java的 int&#xff0c;long 4.python自帶最常用的list列表和dicitonary字典&am…

李國杰院士:國內開源社區的崛起需要一個過程

[CSDN.NET 付江/文]日前&#xff0c;在第二屆“龍芯杯”中國開源軟件設計大賽啟動儀式上&#xff0c;CSDN記者專訪了中國工程院院士、第三世界科學院院士李國杰。李國杰院士就國產基礎軟件現狀、面臨的機遇和挑戰、開源環境以及生態系統建設等話題分享了自己的看法。 打造自主…

SuperMap iObject入門開發系列之五管線屬性查詢

本文是一位好友“托馬斯”授權給我來發表的&#xff0c;介紹都是他的研究成果&#xff0c;在此&#xff0c;非常感謝。 管線屬性查詢功能針對單一管線圖層進行特定的條件查詢&#xff0c;然后將查詢結果輸出為列表&#xff0c;并添加點位閃爍功能&#xff0c;例如查詢污水管線中…

三類基于貪心思想的區間覆蓋問題

一、區間完全覆蓋問題 問題描述&#xff1a;給定一個長度為m的區間&#xff0c;再給出n條線段的起點和終點&#xff08;注意這里是閉區間&#xff09;&#xff0c;求最少使用多少條線段可以將整個區間完全覆蓋。 樣例&#xff1a;一個長度為8的區間&#xff0c;可選的線段有[2,…

ubuntu 常用軟件和命令

永久修改屏幕的分辨率   sudo gedit .profile 將下面的四句話加入。.profile文件的最后   cvt 1280 768   xrandr --newmode "1280x768_60.00" 79.50 1280 1344 1472 1664 768 771 781 798 -hsync vsync   xrandr --addmode Virtual1 "1280x768_60.00&q…

Eclipse搭建Android開發環境(安裝ADT,Android4.4.2)

見&#xff1a;http://blog.csdn.net/zht666/article/details/29837777 使用Eclipse做Android開發&#xff0c;需要先在Eclipse上安裝ADT&#xff08;Android Development Tools&#xff09;插件。 1.安裝JDK 1.7 JDK官網http://www.oracle.com/technetwork/java/javase/downlo…

C語言 位操作簡析

位運算 前面介紹的各種運算都是以字節作為最基本位進行的。 但在很多系統程序中常要求在位(bit)一級進行運算或處理。&#xff23;語言提供了位運算的功能&#xff0c; 這使得&#xff23;語言也能像匯編語言一樣用來編寫系統程序。 一、位運算符&#xff23;語言提供了六種位運…

算法:輸入一個鏈表,輸出該鏈表中倒數第k個結點。

算法&#xff1a;輸入一個鏈表&#xff0c;輸出該鏈表中倒數第k個結點。《劍指offer》 思路加到注釋里面了&#xff1b; 1&#xff1a;兩個if判斷是否返回值為空&#xff0c;首個為空&#xff0c;沒有第k個值&#xff1b; 2&#xff1a;for循環找到倒數第k個值&#xff0c;返回…

Spring事務那些事兒

&#xff08;一&#xff09;事務的隔離級別 大家都知道事務有四個屬性&#xff0c;即ACID&#xff08;原子性、一致性、隔離性、持久性&#xff09;。這四個里面稍微難理解點的是一致性和持久性。所謂的一致性是指&#xff1a;事務執行前后數據的一致性狀態&#xff0c;例如事…

Silverlight Blend動畫設計系列八:拖放(Drag-Drop)操作與拖放行為(DragBehavior)

Silverlight & Blend動畫設計系列八&#xff1a;拖放(Drag-Drop)操作與拖放行為(DragBehavior) 原文:Silverlight & Blend動畫設計系列八&#xff1a;拖放(Drag-Drop)操作與拖放行為(DragBehavior)在Silverlight中自身并沒有提供拖放功能的相關實現&#xff0c;要實現拖…

mysql查詢顯示行號

見&#xff1a;http://blog.csdn.net/muzizhuben/article/details/49449853 使用mysql查詢顯示行號&#xff0c;沒有像oracle這么方便。 不過也可以通過設定變量顯示行號&#xff0c;例如&#xff1a; -- 生成 行號 select r:r1 as rowno , a.* from my_tb a ,(select r:0) b …

scanf 用法大全

關于標準庫函數scanf論壇上很多人對scanf的不太了解&#xff0c;導致程序出錯&#xff0c;我想把scanf的具體用法貼出來&#xff0c;希望大家可以共同進步&#xff0c;有什么不對的地方可以提出來。int scanf(char *format&#xff0c;...);這應該是scanf的標準形式。先說說關于…

深入了解Spring IoC

IoC全稱Inversion of Control即控制反轉&#xff0c;它還有一個別名依賴注入。spring利用Ioc容器幫我們自動構建對象及注入依賴對象&#xff0c;減少了對象構建與業務代碼的耦合&#xff0c;使得我們能夠更加高效愉快的寫bug&#x1f41e;了(&#xffe3;▽&#xffe3;)"…

軟文營銷實戰記錄

最近拜讀了徐茂權老師的《 網絡營銷決勝武器(第2版)》&#xff0c;下面會梳理書中的內容&#xff0c;記錄下以后可能會用到的軟文營銷的技巧。 一、軟文載體 1、平面媒體軟文&#xff1a;報紙、期刊。 2、非正式出版的基于印刷、打印形式載體的軟文&#xff1a;企業印刷的宣傳冊…

oracle中rownum和row_number()的區別

見&#xff1a;http://www.jb51.net/article/65960.htm row_number()over(partition by col1 order by col2)表示根據col1分組&#xff0c;在分組內部根據col2排序&#xff0c;而此函數計算的值就表示每組內部排序后的順序編號&#xff08;組內連續的唯一的&#xff09;。 與ro…