軟件素養(yǎng)(2)報告-UML與設計模式_第1頁
軟件素養(yǎng)(2)報告-UML與設計模式_第2頁
軟件素養(yǎng)(2)報告-UML與設計模式_第3頁
軟件素養(yǎng)(2)報告-UML與設計模式_第4頁
軟件素養(yǎng)(2)報告-UML與設計模式_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、煙臺大學計算機與控制工程學院 軟件素養(yǎng)(2)煙 臺 大 學軟件素養(yǎng)(2)大作業(yè)題目:_專業(yè): 班級:_姓名: 學號: 指導教師:_成績:_2016.6.5目錄1.UML簡述1.1 UML的主要作用Unified Modeling Language (UML)又稱統(tǒng)一建模語言或標準建模語言,是始于1997年一個OMG標準,它是一個支持模型化和軟件系統(tǒng)開發(fā)的圖形化語言,為軟件開發(fā)的所有階段提供模型化和可視化支持,包括由需求分析到規(guī)格,到構造和配置。面向對象的分析與設計(OOA&D,OOAD)方法的發(fā)展在80年代末至90年代中出現了一個高潮,UML是這個高潮的產物。它不僅統(tǒng)一了Booch、R

2、umbaugh和Jacobson的表示方法,而且對其作了進一步的發(fā)展,并最終統(tǒng)一為大眾所接受的標準建模語言。1.2 UML中圖的種類UML規(guī)范用來描述建模的概念有,類(對象的)、對象、關聯、職責、行為、接口、用例、包、順序、協作,以及狀態(tài)。UML定義了5種類圖,10種模型圖,其中使用較為廣泛的有用例圖和類圖。用例圖:展示系統(tǒng)外部的各類執(zhí)行者與系統(tǒng)提供的各種用例之間的關系。類圖:展示系統(tǒng)中類的靜態(tài)結構。1.3 用例圖1.4 類圖 。2.面向對象設計原則2.1 面向對象的設計原則(1)單一職責原則:一個對象應該只包含單一的職責,并且該職責被完整地封裝在一個類中。(2)開閉原則:一個軟件實體應當對擴

3、展開放,對修改關閉。也就是說在設計一個模塊的時候,應當使這個模塊可以在不被修改的前提下被擴展,即實現在不修改源代碼的情況下改變這個模塊的行為。(3)里氏代換原則:如果對每一個類型為S的對象o1,都有類型為T的對象o2,使得以T定義的所有程序P在所有的對象o1都代換成o2時,程序P的行為沒有變化,那么類型S是類型T的子類型。通俗來說,就是所有引用基類(父類)的地方必須能透明地使用其子類的對象。(4)依賴倒轉原則:高層模塊不應該依賴低層模塊,它們都應該依賴抽象。抽象不應該依賴于細節(jié),細節(jié)應該依賴于抽象。(5)接口隔離原則:客戶端不應該依賴那些它不需要的接口,也就是說,一旦一個接口太大,則需要將它分

4、割成一些更細小的接口,使用該接口的客戶端僅需知道與之相關的方法即可。(6)合成復用原則:盡量使用對象組合,而不是用繼承來達到復用的目的(7)迪米特法則:每一個軟件單位對其他的單位都只有最少的知識,而且局限于那些與本單位密切相關的軟件單位。2.2 實例說明2.21 單一職責原則某基于Java的C/S系統(tǒng)的“登錄功能”通過如下登錄類(Login)實現:現使用單一職責原則對其進行重構:具體代碼實現:/*MainClass類*/public class MainClass public static void main(String args) LoginForm lf=new LoginForm()

5、;lf.Display();/*LoginForm類*/public class LoginForm private UserDao dao;public void init() void Display() public void Validate() /*UserDao類*/public class UserDao private DBUtil db;public boolean findUser(String userName, String userPassword) boolean flag = false;return flag;/*DBUtil類*/import java.sql

6、.Connection;public class DBUtil public Connection getConnection() Connection conn = null;return conn;2.22 開閉原則具體代碼實現:public class Test interface Light public void shine();/ 抽象類class WhiteLight implements Light public void shine() System.out.println("發(fā)白光!");class RedLight implements Light p

7、ublic void shine() System.out.println("發(fā)紅光!");class LedLight implements Light public void shine() System.out.println("發(fā)LED光!");class Base public void test(Light l) l.shine();2.23里氏代換原則具體代碼實現public class Test public static void main(String args) Hand hand = new Hand();hand.thing =

8、 new Door();hand.doThing();hand.thing = new Computer();hand.doThing();interface Thing public void doThing();class Door implements Thing public void doThing() class Computer implements Thing public void doThing() class Hand public Thing thing;public void doThing() thing.doThing();3.涉及模式介紹3.1 簡單工廠模式3.

9、11 定義簡單工廠模式(Simple Factory Pattern)屬于類的創(chuàng)新型模式,又叫靜態(tài)工廠方法模式(Static FactoryMethod Pattern),是通過專門定義一個類來負責創(chuàng)建其他類的實例,被創(chuàng)建的實例通常都具有共同的父類。3.12 模式動機對于系統(tǒng)中的某些類來說,只有一個實例很重要,例如,一個系統(tǒng)中可以存在多個打印任務,但是只能有一個正在工作的任務;一個系統(tǒng)只能有一個窗口管理器或文件系統(tǒng);一個系統(tǒng)只能有一個計時工具或ID(序號)生成器。3.13 優(yōu)缺點分析簡單工廠模式的優(yōu)點:工廠類含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產品類的實例,客戶端可以免除直接創(chuàng)建產

10、品對象的責任,而僅僅“消費”產品;簡單工廠模式通過這種做法實現了對責任的分割,它提供了專門的工廠類用于創(chuàng)建對象。客戶端無須知道所創(chuàng)建的具體產品類的類名,只需要知道具體產品類所對應的參數即可,對于一些復雜的類名,通過簡單工廠模式可以減少使用者的記憶量。通過引入配置文件,可以在不修改任何客戶端代碼的情況下更換和增加新的具體產品類,在一定程度上提高了系統(tǒng)的靈活性。簡單工廠模式的缺點:由于工廠類集中了所有產品創(chuàng)建邏輯,一旦不能正常工作,整個系統(tǒng)都要受到影響。使用簡單工廠模式將會增加系統(tǒng)中類的個數,在一定程序上增加了系統(tǒng)的復雜度和理解難度。系統(tǒng)擴展困難,一旦添加新產品就不得不修改工廠邏輯,在產品類型較多

11、時,有可能造成工廠邏輯過于復雜,不利于系統(tǒng)的擴展和維護。簡單工廠模式由于使用了靜態(tài)工廠方法,造成工廠角色無法形成基于繼承的等級結構。3.2 抽象工廠模式3.21 定義抽象工廠模式(Abstract Factory Pattern):提供一個創(chuàng)建一系列相關或相互依賴對象的接口,而無須指定它們具體的類。抽象工廠模式又稱為Kit模式,屬于對象創(chuàng)建型模式。3.22 模式動機在工廠方法模式中具體工廠負責生產具體的產品,每一個具體工廠對應一種具體產品,工廠方法也具有唯一性,一般情況下,一個具體工廠中只有一個工廠方法或者一組重載的工廠方法。但是有時候我們需要一個工廠可以提供多個產品對象,而不是單一的產品對象

12、。3.23 優(yōu)缺點分析抽象工廠模式的優(yōu)點:抽象工廠模式隔離了具體類的生成,使得客戶并不需要知道什么被創(chuàng)建。由于這種隔離,更換一個具體工廠就變得相對容易。所有的具體工廠都實現了抽象工廠中定義的那些公共接口,因此只需改變具體工廠的實例,就可以在某種程度上改變整個軟件系統(tǒng)的行為。另外,應用抽象工廠模式可以實現高內聚低耦合的設計目的,因此抽象工廠模式得到了廣泛的應用。當一個產品族中的多個對象被設計成一起工作時,它能夠保證客戶端始終只使用同一個產品族中的對象。這對一些需要根據當前環(huán)境來決定其行為的軟件系統(tǒng)來說,是一種非常實用的設計模式。增加新的具體工廠和產品族很方便,無須修改已有系統(tǒng),符合“開閉原則”。

13、抽象工廠模式的缺點:在添加新的產品對象時,難以擴展抽象工廠來生產新種類的產品,這是因為在抽象工廠角色中規(guī)定了所有可能被創(chuàng)建的產品集合,要支持新種類的產品就意味著要對該接口進行擴展,而這將涉及到對抽象工廠角色及其所有子類的修改,顯然會帶來較大的不便。開閉原則的傾斜性(增加新的工廠和產品族容易,增加新的產品等級結構麻煩)3.3 適配器模式3.31 定義適配器模式(Adapter Pattern) :將一個接口轉換成客戶希望的另一個接口,適配器模式使接口不兼容的那些類可以一起工作,其別名為包裝器(Wrapper)。適配器模式既可以作為類結構型模式,也可以作為對象結構型模式。3.32 模式動機適配器提

14、供客戶類需要的接口,適配器的實現就是把客戶類的請求轉化為對適配者的相應接口的調用。也就是說:當客戶類調用適配器的方法時,在適配器類的內部將調用適配者類的方法,而這個過程對客戶類是透明的,客戶類并不直接訪問適配者類。因此,適配器可以使由于接口不兼容而不能交互的類可以一起工作。3.33 優(yōu)缺點分析適配器模式的優(yōu)點:將目標類和適配者類解耦,增加了類的透明性和復用性,同時系統(tǒng)的靈活性和擴展性都非常好,更換適配器或者增加新的適配器都非常方便,符合“開閉原則”;適配器模式的缺點:適配器類在很多編程語言中不能同時適配多個適配者類,對象適配器模式的缺點是很難置換適配者類的方法。4.詳細的類圖設計畫出該設計代碼

15、中的類圖結構,注意需要特別說明哪一塊使用到了設計模式,使用的是何種模式。(注意使用starUML或者其他專業(yè)的UML繪圖工具畫)5.代碼列表將所做大作業(yè)的代碼羅列出來(代碼字體采用Arial Unicode字體,5號字)DBConnection:Import6.個人體會設計模式是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。毫無疑問,設計模式于己于他人于系統(tǒng)都是多贏的;設計模式使代碼編制真正工程化;設計模式是軟件工程的基石脈絡,是軟件開發(fā)過程中不可或缺的部分。使用了設計模式的思想進行編程后,極大的提高了程序代碼的復用性,訓練了編程開發(fā)的結構性的設計能力。通過這次課程設計使我們在鞏固了課堂所學知識的基礎上,又培養(yǎng)了靈活運用和組合集成所學過知識及

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論