對象模型是什么?
它是將整個地理空間視為一個空域,將地理現象和空間實體作為獨立的對象分布在空域中。
根據其空間特征,將其劃分為點、線、面、體四個基本對象,每個對象對應一組相關屬性。對象也可以由其他分離的對象來維護,例如點、線、面和體積的拓撲關系。
對象模型技術是GE對象模型技術提出的一套系統開發技術?;诿嫦驅ο蟮乃枷?,通過對問題的抽象,構造了一組相關的模型。這些模型描述了現實世界中的“類與對象”以及它們之間的關系,表示了目標系統的靜態數據結構,從而全面地捕獲了問題空間的信息。
對象模型的特點如下
對象模型技術將分析中接收到的信息構造為三種模型,即對象模型、功能模型和動態模型。這三個模型從不同的角度對系統進行了描述,分別著眼于系統的一個方面,并結合起來形成了一個完整的系統描述。形象地說,功能模型定義“做什么”,狀態模型定義“什么時候做”,對象模型定義“向誰做”。
c++的幾種對象模型
面向對象的模型
對象模型表示了靜態的、結構化的系統數據性質,描述了系統的靜態結構,它是從客觀世界實體的對象關系角度來描述,表現了對象的相互關系。該模型主要關心系統中對象的結構、屬性和操作,它是分析階段三個模型的核心,是其他兩個模型的框架。
⒈對象和類
⑴對象。
對象建模的目的就是描述對象。
⑵ 類。
通過將對象抽象成類,我們可以使問題抽象化,抽象增強了模型的歸納能力。
⑶ 屬性。
屬性指的是類中對象所具有的性質(數據值)。
⑷ 操作和方法。
操作是類中對象所使用的一種功能或變換。類中的各對象可以共享操作,每個操作都有一個目標對象作為其隱含參數。
方法是類的操作的實現步驟。
⒉關聯和鏈
關聯是建立類之間關系的一種手段,而鏈則是建立對象之間關系的一種手段。
⑴ 關聯和鏈的含義。
鏈表示對象間的物理與概念聯結,關聯表示類之間的一種關系,鏈是關聯的實例,關聯是鏈的抽象。
⑵ 角色。
角色說明類在關聯中的作用,它位于關聯的端點。
⑶ 受限關聯。
受限關聯由兩個類及一個限定詞組成,限定詞是一種特定的屬性,用來有效的減少關聯的重數,限定詞在關聯的終端對象集中說明。
限定提高了語義的精確性,增強了查詢能力,在現實世界中,常常出現限定詞。
⑷ 關聯的多重性。
關聯的多重性是指類中有多少個對象與關聯的類的一個對象相關。重數常描述為“一”或“多”。
⒊類的層次結構
⑴ 聚集關系。
聚集是一種“整體-部分”關系。在這種關系中,有整體類和部分類之分。聚集最重要的性質是傳遞性,也具有逆對稱性。
聚集可以有不同層次,可以把不同分類聚集起來得到一顆簡單的聚集樹,聚集樹是一種簡單表示,比畫很多線來將部分類聯系起來簡單得多,對象模型應該容易地反映各級層次。
⑵一般化關系。
一般化關系是在保留對象差異的同時共享對象相似性的一種高度抽象方式。它是“一般---具體”的關系。一般化類稱為你類,具體類又能稱為子類,各子類繼承了父類的性質,而各子類的一些共同性質和操作又歸納到你類中。因此,一般化關系和繼承是同時存在的。一般化關系的符號表示是在類關聯的連線上加一個小三角形。
⒋對象模型
⑴模板。模板是類、關聯、一般化結構的邏輯組成。
⑵對象模型。
對象模型是由一個或若干個模板組成。模板將模型分為若干個便于管理的子塊,在整個對象模型和類及關聯的構造塊之間,模板提供了一種集成的中間單元,模板中的類名及關聯名是唯一的。 動態模型是與時間和變化有關的系統性質。該模型描述了系統的控制結構,它表示了瞬間的、行為化的系統控制
性質,它關心的是系統的控制,操作的執行順序,它表示從對象的事件和狀態的角度出發,表現了對象的相互行為。
該模型描述的系統屬性是觸發事件、事件序列、狀態、事件與狀態的組織。使用狀態圖作為描述工具。它涉及到事件、狀態、操作等重要概念。
⒈事件
事件是指定時刻發生的某件事。
⒉狀態
狀態是對象屬性值的抽象。對象的屬性值按照影響對象顯著行為的性質將其歸并到一個狀態中去。狀態指明了對象對輸入事件的響應。
⒊狀態圖
狀態圖是一個標準的計算機概念,他是有限自動機的圖形表示,這里把狀態圖作為建立動態模型的圖形工具。
狀態圖反映了狀態與事件的關系。當接收一事件時,下一狀態就取決于當前狀態和所接收的該事件,由該事件引起的狀態變化稱為轉換。
狀態圖是一種圖,用結點表示狀態,結點用圓圈表示;圓圈內有狀態名,用箭頭連線表示狀態的轉換,上面標記事件名,箭頭方向表示轉換的方向。 功能模型描述了系統的所有計算。功能模型指出發生了什么,動態模型確定什么時候發生,而對象模型確定發生的客體。功能模型表明一個計算如何從輸入值得到輸出值,它不考慮計算的次序。功能模型由多張數據流圖組成。數據流圖用來表示從源對象到目標對象的數據值的流向,它不包含控制信息,控制信息在動態模型中表示,同時數據流圖也不表示對象中值的組織,值的組織在對象模型中表示。
數據流圖中包含有處理、數據流、動作對象和數據存儲對象。
⒈處理
數據流圖中的處理用來改變數據值。最低層處理是純粹的函數,一張完整的數據流圖是一個高層處理。
⒉數據流
數據流圖中的數據流將對象的輸出與處理、處理與對象的輸入、處理與處理聯系起來。在一個計算機中,用數據流來表示一中間數據值,數據流不能改變數據值。
⒊動作對象
動作對象是一種主動對象,它通過生成或者使用數據值來驅動數據流圖。
⒋數據存儲對象
數據流圖中的數據存儲是被動對象,它用來存儲數據。它與動作對象不一樣,數據存儲本身不產生任何操作,它只響應存儲和訪問的要求。 面向對象分析的目的是對客觀世界的系統進行建模。本節以上面介紹的模型概念為基礎,結合“銀行網絡系統”的具體實例來構造客觀世界問題的準確、嚴密的分析模型。
分析模型有三種用途:用來明確問題需求;為用戶和開發人員提供明確需求;為用戶和開發人員提供一個協商的基礎,作為后繼的設計和實現的框架。
(一) 面向對象的分析
系統分析的第一步是:陳述需求。分析者必須同用戶一塊工作來提煉需求,因為這樣才表示了用戶的真實意圖,其中涉及對需求的分析及查找丟失的信息。下面以“銀行網絡系統”為例,用面向對象方法進行分析。
銀行網絡系統問題陳述:設計支持銀行網絡的軟件,銀行網絡包括人工出納站和分行共享的自動出納機。每個分理處用分理處計算機來保存各自的帳戶,處理各自的事務;各自分理處的出納站與分理處計算機通信,出納站錄入帳戶和事務數據;自動出納機與分行計算機通信,分行計算機與撥款分理處結帳,自動出納機與用戶接口接受現金卡,與分行計算機通信完成事務,發放現金,打印收據;系統需要記錄保管和安全措施;系統必須正確處理同一帳戶的并發訪問;每個分處理為自己的計算機準備軟件,銀行網絡費用根據顧客和現金卡的數目分攤給各分理處。
(二)建立對象模型
首先標識和關聯,因為它們影響了整體結構和解決問題的方法,其次是增加屬性,進一步描述類和關聯的基本網絡,使用繼承合并和組織類,最后操作增加到類中去作為構造動態模型和功能模型的副產品。
⒈確定類
構造對象模型的第一步是標出來自問題域的相關的對象類,對象包括物理實體和概念。所有類在應用中都必須有意義,在問題陳述中,并非所有類都是明顯給出的。有些是隱含在問題域或一般知識中的。
按圖10-19所示的過程確定類
查找問題陳述中的所有名詞,產生如下的暫定類。
軟件 銀行網絡 出納員 自動出納機 分行
分處理 分處理計算機 帳戶事務出納站
事務數據 分行計算機 現金卡 用戶 現金
收據 系統 顧客 費用 帳戶數據
訪問 安全措施 記錄保管
根據下列標準,去掉不必要的類和不正確的類。
⑴ 冗余類:若兩個類表述了同一個信息 ,保留最富有描述能力的類。如用戶和顧客就是重復的描述,因為顧客最富有描述性,因此保留它。
⑵ 不相干的類:除掉與問題沒有關系或根本無關的類。例如,攤派費用超出了銀行網絡的范圍。
⑶ 模糊類:類必須是確定的,有些暫定類邊界定義模糊或范圍太廣,如記錄保管就模糊類,它是事務中的一部分。
⑷ 屬性:某些名詞描述的是其他對象的屬性,則從暫定類中刪除。如果某一性質的獨立性很重要,就應該把他歸屬到類,而不把它作為屬性。
⑸ 操作:如果問題陳述中的名詞有動作含義,則描述的操作就不是類。但是具有自身性質而且需要獨立存在的操作應該描述成類。如我們只構造電話模型,撥號就是動態模型的一部分而不是類,但在電話撥號系統中,撥號是一個重要的類,它日期、時間、受話地點等屬性。
在銀行網絡系統中,模糊類是系統、安全措施、記錄保管、銀行網絡等。屬于屬性的有:帳戶數據、收據、現金、事務數據。屬于實現的如:訪問、軟件等。這些均應除去。
⒉準備數據字典
為所有建模實體準備一個數據字典。準確描述各個類的精確含義,描述當前問題中的類的范圍,包括對類的成員、用法方面的假設或限制。
⒊確定關聯
兩個或多個類之間的相互依賴就是關聯。一種依賴表示一種關聯,可用各種方式來實現關聯,但在分析模型中應刪除實現的考慮,以便設計時更為靈活。關聯常用描述性動詞或動詞詞組來表示,其中有物理位置的表示、傳導的動作、通信、所有者關系、條件的滿足等。從問題陳述中抽取所有可能的關聯表述,把它們記下來,但不要過早去細化這些表述。
下面是銀行網絡系統中所有可能的關聯,大多數是直接抽取問題中的動詞詞組而得到的。在陳述中,有些動詞詞組表述的關聯是不明顯的。最后,還有一些關聯與客觀世界或人的假設有關,必須同用戶一起核實這種關聯,因為這種關聯在問題陳述中找不到。
銀行網絡問題陳述中的關聯:
·銀行網絡包括出納站和自動出納機;
·分行共享自動出納機;
·分理處提供分理處計算機;
·分理處計算機保存帳戶;
·分理處計算機處理帳戶支付事務;
·分理處擁有出納站;
·出納站與分理處計算機通信;
·出納員為帳戶錄入事務;
·自動出納機接受現金卡;
·自動出納機與用戶接口;
·自動出納機發放現金;
·自動出納機打印收據;
·系統處理并發訪問;
·分理處提供軟件;
·費用分攤給分理處。
隱含的動詞詞組:
·分行由分理處組成;
·分理處擁有帳戶;
·分行擁有分行計算機;
·系統提供記錄保管;
·系統提供安全;
·顧客有現金卡。
基于問題域知識的關聯:
·分理處雇傭出納員;
·現金卡訪問帳戶。
使用下列標準去掉不必要和不正確的關聯:
⑴ 若某個類已被刪除,那么與它有關的關聯也必須刪除或者用其它類來重新表述。在例中,我們刪除了銀行網絡,相關的關聯也要刪除。
⑵ 不相干的關聯或實現階段的關聯:刪除所有問題域之外的關聯或涉及實現結構中的關聯。如系統處理并發訪問就是一種實現的概念。
⑶ 動作:關聯應該描述應用域的結構性質而不是瞬時事件,因此應刪除自動出納機接受現金卡,自動出納機與用戶接口等。
⑷ 派生關聯:省略那些可以用其他關聯來定義的關聯。因為這種關聯是冗余的。銀行網絡系統的初步對象圖如圖10-20所示。其中含有關聯。
⒋確定屬性
屬性是個體對象的性質,屬性通常用修飾性的名詞詞組來表示.形容詞常常表示具體的可枚舉的屬性值,屬性不可能在問題陳述中完全表述出來,必須借助于應用域的知識及對客觀世界的知識才可以找到它們。只考慮與具體應用直接相關的屬性,不要考慮那些超出問題范圍的屬性。首先找出重要屬性,避免那些只用于實現的屬性,要為各個屬性取有意義的名字。按下列標準刪除不必要的和不正確的屬性:
⑴對象:若實體的獨立存在比它的值重要,那么這個實體不是屬性而是對象。如在郵政目錄中,城市是一個屬性,然而在人口普查中,城市則被看作是對象。在具體應用中,具有自身性質的實體一定是對象。
⑵ 定詞:若屬性值取決于某種具體上下文,則可考慮把該屬性重新表述為一個限定詞。
⑶ 名稱:名稱常常作為限定詞而不是對象的屬性,當名稱不依賴于上下文關系時,名稱即為一個對象屬性,尤其是它不惟一時。
⑷標識符:在考慮對象模糊性時,引入對象標識符表示,在對象模型中不列出這些對象標識符,它是隱含在對象模型中,只列出存在于應用域的屬性。
⑸ 內部值:若屬性描述了對外不透明的對象的內部狀態,則應從對象模型中刪除該屬性。
⑹ 細化:忽略那些不可能對大多數操作有影響的屬性。
⒌使用繼承來細化類
使用繼承來共享公共機構,以次來組織類,可以用兩種方式來進行。
⑴ 自底向上通過把現有類的共同性質一般化為父類,尋找具有相似的屬性,關系或操作的類來發現繼承。例如遠程事務和出納事務是類似的,可以一般化為事務。有些一般化結構常常是基于客觀世界邊界的現有分類,只要可能,盡量使用現有概念。對稱性常有助于發現某些丟失的類。
⑵ 自頂向下將現有的類細化為更具體的子類。具體化常??梢詮膽糜蛑忻黠@看出來。應用域中各枚舉字情況是最常見的具體化的來源。例如:菜單,可以有固定菜單,頂部菜單,彈出菜單,下拉菜單等,這就可以把菜單類具體細化為各種具體菜單的子類。當同一關聯名出現多次且意義也相同時,應盡量具體化為相關聯的類,例如事務從出納站和自動出納機進入,則錄入站就是出納站和自動出納站的一般化。在類層次中,可以為具體的類分配屬性和關聯。各屬性和都應分配給最一般的適合的類,有時也加上一些修正。
應用域中各枚舉情況是最常見的具體化的來源。
⒍完善對象模型
對象建模不可能一次就能保證模型是完全正確的,軟件開發的整個過程就是一個不斷完善的過程。模型的不同組成部分多半是在不同的階段完成的,如果發現模型的缺陷,就必須返回到前期階段去修改,有些細化工作是在動態模型和功能模型完成之后才開始進行的。
⑴ 幾種可能丟失對象的情況及解決辦法:
·同一類中存在毫無關系的屬性和操作,則分解這個類,使各部分相互關聯;
·一般化體系不清楚,則可能分離扮演兩種角色的類
·存在無目標類的操作,則找出并加上失去目標的類;
·存在名稱及目的相同的冗余關聯,則通過一般化創建丟失的父類,把關聯組織在一起。
⑵ 查找多余的類。
類中缺少屬性,操作和關聯,則可刪除這個類。
⑶查找丟失的關聯。
丟失了操作的訪問路徑,則加入新的關聯以回答查詢。
⑷ 網絡系統的具體情況作如下的修改:
①現金卡有多個獨立的特性。把它分解為兩個對象:卡片權限和現金卡。
a.卡片權限:它是銀行用來鑒別用戶訪問權限的卡片,表示一個或多個用戶帳戶的訪問權限;各個卡片權限對象中可能具有好幾個現金卡,每張都帶有安全碼,卡片碼,它們附在現金卡上,表現銀行的卡片權限。
b.現金卡:它是自動出納機得到表示碼的數據卡片,它也是銀行代碼和現金卡代碼的數據載體。
②事務不能體現對帳戶之間的傳輸描述的一般性,因它只涉及一個帳戶,一般來說,在每個帳戶中,一個事務包括一個或多個更新,一個更新是對帳戶的一個動作,它們是取款,存款,查詢之一。一個更新中所有更新應該是一個原子操作。
③分理處和分離處理機之間,分行和分行處理機之間的區別似乎并不影響分析,計算機的通信處理實際上是實現的概念,將分理處計算機并入到分理處,將分行計算機并入到分行。
(三)建立動態模型
⒈準備腳本
動態分析從尋找事件開始,然后確定各對象的可能事件順序。在分析階段不考慮算法的執行,算法是實現模型的一部分。
⒉確定事件
確定所有外部事件。事件包括所有來自或發往用戶的信息、外部設備的信號、輸入、轉換和動作,可以發現正常事件,但不能遺漏條件和異常事件。
⒊準備事件跟蹤表
把腳本表示成一個事件跟蹤表,即不同對象之間的事件排序表,對象為表中的列,給每個對象分配一個獨立的列。
⒋構造狀態圖
對各對象類建立狀態圖,反映對象接收和發送的事件,每個事件跟蹤都對應于狀態圖中一條路徑。
(四)建立功能建模
功能模型用來說明值是如何計算的,表明值之間的依賴關系及相關的功能,數據流圖有助于表示功能依賴關系,其中的處理應于狀態圖的活動和動作,其中的數據流對應于對象圖中的對象或屬性。
⒈確定輸入值、輸出值
先列出輸入、輸出值,輸入、輸出值是系統與外界之間的事件的參數。
⒉建立數據流圖
數據流圖說明輸出值是怎樣從輸入值得來的,數據流圖通常按層次組織。
(五)確定操作
在建立對象模型時,確定了類、關聯、結構和屬性,還沒有確定操作。只有建立了動態模型和功能模型之后,才可能最后確定類的操作。
簡述三種面向對象模型的主要功能。
本文發布于:2023-02-28 19:09:00,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/167760072853035.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:對象模型(對象模型圖怎么畫).doc
本文 PDF 下載地址:對象模型(對象模型圖怎么畫).pdf
| 留言與評論(共有 0 條評論) |