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

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

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

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

4、割成一些更細(xì)小的接口,使用該接口的客戶端僅需知道與之相關(guān)的方法即可。(6)合成復(fù)用原則:盡量使用對(duì)象組合,而不是用繼承來(lái)達(dá)到復(fù)用的目的(7)迪米特法則:每一個(gè)軟件單位對(duì)其他的單位都只有最少的知識(shí),而且局限于那些與本單位密切相關(guān)的軟件單位。2.2 實(shí)例說(shuō)明2.21 單一職責(zé)原則某基于Java的C/S系統(tǒng)的“登錄功能”通過如下登錄類(Login)實(shí)現(xiàn):現(xiàn)使用單一職責(zé)原則對(duì)其進(jìn)行重構(gòu):具體代碼實(shí)現(xiàn):/*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 開閉原則具體代碼實(shí)現(xiàn):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里氏代換原則具體代碼實(shí)現(xiàn)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 簡(jiǎn)單工廠模式3.

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論