【正文】
[ProductID].ToString()。 //入庫產(chǎn)品 public int Count?,F(xiàn)實世界中的實體對象,在軟件系統(tǒng)中,表現(xiàn)為需要處理的數(shù)據(jù)。在面向?qū)ο蟮南到y(tǒng)中,數(shù)據(jù)是用類來表示的,代表了現(xiàn)實世界實體對象在軟件系統(tǒng)中的抽象。聯(lián)創(chuàng)國際科技有限公司 UML建模 孫亞民 LINKAGE 什么是軟件? ?對現(xiàn)實世界的數(shù)字化模擬 ?所以 –按照現(xiàn)實世界的方式設(shè)計軟件 LINKAGE 現(xiàn)實世界的組成 ?物質(zhì) ?物質(zhì)的作用(運動) LINKAGE 軟件 ? 數(shù)據(jù)(結(jié)構(gòu)) ? 算法 ? 在面向?qū)ο蟮南到y(tǒng)中就是 – 對象 – 對象的交互 LINKAGE 課程目標 使用 對象 來構(gòu)建系統(tǒng) LINKAGE 課程安排 時間 第一天 第一天的目標,是了解面向?qū)ο蟮幕驹?,面向?qū)ο笙到y(tǒng)架構(gòu)的基本知識。從某種程度上來說, “ 軟件,就是數(shù)據(jù)結(jié)構(gòu)加算法 ” 的說法,是有一定意義的。 LINKAGE 完整的結(jié)構(gòu) LINKAGE 數(shù)據(jù)實體的表示 ? 應(yīng)用軟件系統(tǒng),從本質(zhì)上來說,是計算機對現(xiàn)實世界的模擬。 //入庫單明細 } public class FormDetail { public Product InProduct。 FormEntityDAO formDAO=new FormEntityDAO(true)。 ? 如果不考慮多種客戶端的情況,也不考慮分布式部署的問題,系統(tǒng)的模塊又很少,不會產(chǎn)生模塊間緊耦合的情況,那么,可以不使用業(yè)務(wù)外觀層,而讓用戶界面程序直接訪問業(yè)務(wù)功能。 ActorLINKAGE 角色關(guān)系 學(xué)生大學(xué)生 中學(xué)生 小學(xué)生LINKAGE Use Case 用例 ? 用例代表的是一個完整的功能 ? 是動作( Action)步驟的集合( Action:系統(tǒng)的一次執(zhí)行) ? 用例具有以下的特征: – 用例總由角色初始化 – 用例為角色提供值 – 用例具有完全性 Use CaseLINKAGE 用例的使用 ? 描述用例 – 用例的目標 – 用例是怎樣被啟動的 – 角色和用例之間的消息流 – 用例的多種執(zhí)行方案 – 用例怎樣才算完成并把值傳給了角色 – 用例模版 – 文字描述和圖形描述 LINKAGE 用例描述模版 ? 名稱 。 ? 后置條件 。參與者在用例中所遵循的主邏輯路徑。 4) Use Case是對系統(tǒng)行為的動態(tài)描述,它是 OO設(shè)計的起點,是類、對象、操作的來源,而通過邏輯視圖的設(shè)計,可以獲得軟件的靜態(tài)結(jié)構(gòu)。團隊成員之間互相信任 – 尊重。也可能根據(jù)用戶提出的修改意見,對軟件進行部分修改。 LINKAGE 活動圖 C u s t o m e r W i n d o w . P r i n t A l lC u s t o m e r s ( )S h o w m e ss a g e P r i n t i n t h e sc r e e nC r e a t e P S f il eD e l e t e t h e m e ss a g e b o x^ P r i n t e r . P r i n t ( fi le ) LINKAGE 組件圖( Component Diagram) ? 描述軟件組件及組件之間的關(guān)系 ? 顯示代碼的結(jié)構(gòu) ? 組件是邏輯架構(gòu)中定義的概念和功能 (類、對象、它們的關(guān)系、協(xié)作 )在物理架構(gòu)中的實現(xiàn),典型情況下組件是開發(fā)環(huán)境中的實現(xiàn)文件。 2) Use Case View與 Logical View應(yīng)該由明確的相關(guān)性。 ? 假設(shè) [可選 ]。參與者 訪問 此用例的頻率。 ? Solution:內(nèi)部各組成部分之間的協(xié)作。 } } LINKAGE 業(yè)務(wù)外觀層 ? 隔離系統(tǒng)功能的提供者和使用者 ? 作為后臺邏輯處理和前端用戶界面的緩沖區(qū) ? 將用戶界面和系統(tǒng)業(yè)務(wù)邏輯處理分開,當(dāng)業(yè)務(wù)邏輯發(fā)生變化時,不用修改客戶端程序 ? 使同一個業(yè)務(wù)邏輯能夠處理不同的客戶端請求。 ? Websharp 的 IEntityDAO 接口 public class CustomerEntityDAO:AbstractSingleTableDAO Customer customer=...... using(CustomerEntityDAO CDO=new CustomerEntityDAO()) { (customer)。 //數(shù)量 } 可以按照如下方法使用 Product類: Product p=new Product()。例如,在一個基于 Web的 JSP系統(tǒng)中,業(yè)務(wù)邏輯功能的客戶便是這些 JSP頁面。 ? 生成對象類的動、靜態(tài)模型(解決域)。有了前面的基礎(chǔ),使用一天的時間來講述 U M L 的基本圖例,聽眾是可以比較順利地接受的。 ? 數(shù)據(jù)的存取方式 如同上述所說,軟件系統(tǒng)處理的實體對象數(shù)據(jù)需要持久化保存數(shù)據(jù)庫中,因此,我們必須處理系統(tǒng)同數(shù)據(jù)庫的交互,以及數(shù)據(jù)的存取和轉(zhuǎn)換方式的問題。 ? 在考慮數(shù)據(jù)實體層的設(shè)計策略的時候,我們需要把握以下要點: – 一致的數(shù)據(jù)表示方式。 } public new FormDetail this[int nIndex] { get{ return (FormDetail)base[nIndex]。 (new TransactionManagedFunction(),product)。 ? 可重復(fù)使用。概述用例的幾句話。這是通過擴展用例向基用例的操作序列中插入附加的操作序列來實現(xiàn)的。關(guān)于用例的修改時間、修改原因和修改人的詳細信息。 ? 基于性能的考慮。通常由一個人或作為團隊相互協(xié)作的多個人來實現(xiàn)。就象一個人可以擔(dān)任許多職務(wù),一個人也可以擔(dān)任許多不同的角色 。當(dāng)類執(zhí)行一個接口,它就許諾聲明在那個接口中執(zhí)行所有的方法。如果存在,則為與此用例的開發(fā)相關(guān)的問題或操作項目的列表。 ? 被包含的用例 [可選 ]。與此用例相關(guān)的參與者列表。 LINKAGE Design Pattern 的作用 ? 主要作用:幫助設(shè)計者更快、更好地完成系統(tǒng)設(shè)計。 (new TransactionManagedFunction(),insertForm)。 采用這種方法,通常是直接把從數(shù)據(jù)庫查詢中獲取的數(shù)據(jù)集作為數(shù)據(jù)處理對象 LINKAGE J2EE的方法 ? EntityBean – BMP – CMP ? 使用 XML來映射數(shù)據(jù)庫 LINKAGE JDO的方法 ? 提供了一個相對 “ 輕量級 ” 的方案 ? 采用一般的做法,編寫實體類 ? 通過一些強化器對這些類進行強化,以使其符合JDO的規(guī)范 ? 通過 PersistenceManager來實現(xiàn)對象的持久化儲存 LINKAGE Websharp的方法 ? EntityData類 ? 通過 XML配置文件的方式同數(shù)據(jù)庫映射 ? 可以通過如下方式取得一個實體對象: EntityData Customer=EntityDataManager. GetEmptyEntity(“Customer”)。 – 因為數(shù)據(jù)通常是需要存儲到數(shù)據(jù)庫中,因此,良好的映射方法是必需的。有了上述的實體對象,以及對象的保存策略,就可以將這些對象組合起來,編寫我們的業(yè)務(wù)邏輯處理程序。先介紹 原理,然后結(jié)合 實際的案例來進行講述。 ? 生成業(yè)務(wù)對象的動、靜態(tài)模型和抽象類。 LINKAGE 應(yīng)用服務(wù)層的設(shè)計 ? 業(yè)務(wù)服務(wù)的提供方式 在我們完成系統(tǒng)的功能后,如何向客戶提供服務(wù),是我們需要考慮的問題。 //名稱 public decimal Price。 PersistenceManager PM=(…… )。 } finally { ()。 ? 保護復(fù)用:通過 Design Pattern在系統(tǒng)設(shè)計中的應(yīng)用,確保設(shè)計結(jié)果的可復(fù)用性,為以后的應(yīng)用復(fù)用提供基礎(chǔ)。指示用例的狀態(tài),通常為以下幾種之一:進行中、等待審查、通過審查或未通過審查。這總是使用帶有 include 的用例關(guān)聯(lián)來建模的。將這些決策記錄下來對于維護 團體記憶庫 (group memory) 是相當(dāng)重要的。 } LINKAGE 限定關(guān)聯(lián) ? 限定關(guān)聯(lián)用于一對多或多對多的關(guān)聯(lián)關(guān)系中 ? 使用限定詞將關(guān)聯(lián)中多的那一端的具體對象分成對象集 ? 不常用 LINKAGE 或關(guān)聯(lián) ? 對二個或更多個關(guān)聯(lián)附加的約束條件,使類中的對象一次只能應(yīng)用于一個關(guān)聯(lián)關(guān)系中 英語教師數(shù)學(xué)LINKAGE 有序關(guān)聯(lián) ? 對象與對象之間的連接可以具有一定的次序 LINKAGE 關(guān)聯(lián)類 ? 與一個關(guān)聯(lián)關(guān)系相連的類 LINKAGE 三元關(guān)聯(lián) ? 三個類之間有關(guān)聯(lián)關(guān)系 LINKAGE 聚合 ? 關(guān)聯(lián)的特例 ? 如果類與類之間的關(guān)系具有整體與部分的特點則把這樣的關(guān)聯(lián)稱為聚合 LINKAGE 狀態(tài)圖 ( State Diagram) ? 主要用來描述對象子系統(tǒng)系統(tǒng)的生命周期 ? 可以了解到一個對象所能到達的所有狀態(tài),以及對象收到的事件 (收到消息超時錯誤條件滿足 ), 對對象狀態(tài)的影響等。