Java面向?qū)ο蟪绦蛟O(shè)計(jì)第7章_面向?qū)ο蟮膸讉€(gè)基本原則_第1頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第7章_面向?qū)ο蟮膸讉€(gè)基本原則_第2頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第7章_面向?qū)ο蟮膸讉€(gè)基本原則_第3頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第7章_面向?qū)ο蟮膸讉€(gè)基本原則_第4頁
Java面向?qū)ο蟪绦蛟O(shè)計(jì)第7章_面向?qū)ο蟮膸讉€(gè)基本原則_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2010-1-101Java面向?qū)ο蟪绦蛟O(shè)計(jì)面向?qū)ο蟪绦蛟O(shè)計(jì) 第第7章章配合例子源代碼一起使用例子源代碼一起使用Power point 制作:耿祥義 張躍平面向?qū)ο蟮膸讉€(gè)基本原則 2010-1-102主要內(nèi)容主要內(nèi)容UML類圖簡介類圖簡介面向抽象原則面向抽象原則開開-閉原則閉原則多用組合少用繼承原則多用組合少用繼承原則高內(nèi)聚高內(nèi)聚-低耦合原則低耦合原則難點(diǎn)難點(diǎn)開開-閉原則閉原則導(dǎo)讀導(dǎo)讀 本章給出面向?qū)ο笤O(shè)計(jì)的幾個(gè)基本原則,了解這些基本原則,有助于知道如何使用面向?qū)ο笳Z言編寫出易維護(hù)、易擴(kuò)展和易復(fù)用的程序代碼。 2010-1-1037.1 UML類圖簡介類圖簡介 UML(Unified Mode

2、ling Language)類圖類圖(Class Diagram)屬屬于結(jié)構(gòu)圖,常被用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。于結(jié)構(gòu)圖,常被用于描述一個(gè)系統(tǒng)的靜態(tài)結(jié)構(gòu)。 2010-1-1047.1.1 類的類的UMLUML圖圖 在類的在類的UML圖中,使用一圖中,使用一個(gè)長方形描述一個(gè)類的主要構(gòu)個(gè)長方形描述一個(gè)類的主要構(gòu)成,將長方形垂直地分為三層。成,將長方形垂直地分為三層。第第1 1層是名字層層是名字層 第第2 2層是變量層,也稱屬性層,層是變量層,也稱屬性層,列出類的成員變量及類型,格列出類的成員變量及類型,格式是式是“變量名字:類型變量名字:類型”。 第第3 3層是方法層,也稱操作層,層是方法層,也稱

3、操作層,列出類的方法及返回類型,格列出類的方法及返回類型,格式是式是“方法名字(參數(shù)列表):方法名字(參數(shù)列表):類型類型”。 2010-1-1057.1.2 接口(接口(InterfaceInterface) 表示接口的表示接口的UMLUML圖使用一個(gè)長圖使用一個(gè)長方形描述一個(gè)接口的主要構(gòu)成,方形描述一個(gè)接口的主要構(gòu)成,將長方形垂直地分為三層。將長方形垂直地分為三層。 頂 部 第頂 部 第 1 1 層 是 名 字 層 , 用層 是 名 字 層 , 用interface修飾名字。修飾名字。第第2 2層是常量層,列出接口中層是常量層,列出接口中的常量及類型,格式是的常量及類型,格式是“常量名常量

4、名字:類型字:類型”。 第第3 3層是方法層,也稱操作層,層是方法層,也稱操作層,列出接口中的方法及返回類型,列出接口中的方法及返回類型,格式是格式是“方法名字(參數(shù)列表):方法名字(參數(shù)列表):類型類型”。 2010-1-1067.1.3 泛化關(guān)系(泛化關(guān)系(GeneralizationGeneralization) 對于面向?qū)ο笳Z言,對于面向?qū)ο笳Z言,UMLUML中中所說的泛化關(guān)系就是指類的所說的泛化關(guān)系就是指類的繼承關(guān)系。繼承關(guān)系。 如果一個(gè)類是另一個(gè)類的如果一個(gè)類是另一個(gè)類的子類,那么子類,那么UMLUML通過使用一個(gè)通過使用一個(gè)實(shí)線連接兩個(gè)類的實(shí)線連接兩個(gè)類的UMLUML圖來表圖來表

5、示二者之間的繼承關(guān)系,實(shí)示二者之間的繼承關(guān)系,實(shí)線的起始端是子類的線的起始端是子類的UMLUML圖,圖,終點(diǎn)端是父類的終點(diǎn)端是父類的UMLUML圖,但終圖,但終點(diǎn)端使用一個(gè)空心的三角形點(diǎn)端使用一個(gè)空心的三角形表示實(shí)線的結(jié)束。表示實(shí)線的結(jié)束。2010-1-1077.1.4 關(guān)聯(lián)關(guān)系(關(guān)聯(lián)關(guān)系(AssociationAssociation) 如果如果A A類中成員變量是用類中成員變量是用B B類(接口)來聲明的變量,類(接口)來聲明的變量,那么那么A A和和B B的關(guān)系是關(guān)聯(lián)關(guān)系,的關(guān)系是關(guān)聯(lián)關(guān)系,稱稱A A關(guān)聯(lián)于關(guān)聯(lián)于B B。 如果如果A A關(guān)聯(lián)于關(guān)聯(lián)于B B,那么那么UMLUML通通過使用一個(gè)

6、實(shí)線連過使用一個(gè)實(shí)線連A A和和B B的的UMLUML圖,實(shí)線的起始端是圖,實(shí)線的起始端是A A的的UMLUML圖,終點(diǎn)端是圖,終點(diǎn)端是B B的的UMLUML圖,但圖,但終點(diǎn)端使用一個(gè)指向終點(diǎn)端使用一個(gè)指向B B的的UMLUML圖的方向箭頭表示實(shí)線的結(jié)圖的方向箭頭表示實(shí)線的結(jié)束。束。 2010-1-1087.1.5 依賴關(guān)系(依賴關(guān)系(DependencyDependency) 如果如果A A類中某個(gè)方法的參數(shù)用類中某個(gè)方法的參數(shù)用B B類(接口)來聲明的類(接口)來聲明的變量或某個(gè)方法返回的數(shù)據(jù)類型是變量或某個(gè)方法返回的數(shù)據(jù)類型是B B類型的,那么類型的,那么A A和和B B的關(guān)系是依賴關(guān)系

7、,稱的關(guān)系是依賴關(guān)系,稱A A依賴于依賴于B B。如果如果A A依賴于依賴于B B,那么那么UMLUML通過使用一個(gè)虛線連通過使用一個(gè)虛線連A A和和B B的的UMLUML圖,虛線的起圖,虛線的起始端是始端是A A的的UMLUML圖,終點(diǎn)端是圖,終點(diǎn)端是B B的的UMLUML圖,但終點(diǎn)端使用圖,但終點(diǎn)端使用一個(gè)指向一個(gè)指向B B的的UMLUML圖的方向箭頭表示虛線的結(jié)束。圖的方向箭頭表示虛線的結(jié)束。 2010-1-1097.1.6 實(shí)現(xiàn)關(guān)系(實(shí)現(xiàn)關(guān)系(RealizationRealization) 如果一個(gè)類實(shí)現(xiàn)如果一個(gè)類實(shí)現(xiàn)了一個(gè)接口,那么了一個(gè)接口,那么類類和接口的關(guān)系是實(shí)現(xiàn)和接口的關(guān)系是

8、實(shí)現(xiàn)關(guān)系關(guān)系,稱類實(shí)現(xiàn)接口稱類實(shí)現(xiàn)接口。UMLUML通過使用虛線連通過使用虛線連接類和它所實(shí)現(xiàn)的接接類和它所實(shí)現(xiàn)的接口,虛線起始端是類,口,虛線起始端是類,虛線的終點(diǎn)端是它實(shí)虛線的終點(diǎn)端是它實(shí)現(xiàn)的接口,但終點(diǎn)端現(xiàn)的接口,但終點(diǎn)端使用一個(gè)空心的三角使用一個(gè)空心的三角形表示虛線的結(jié)束。形表示虛線的結(jié)束。 2010-1-10107.1.7 注釋(注釋(AnnotationAnnotation) UMLUML使用注釋為類圖提供附加的說明。使用注釋為類圖提供附加的說明。 UML UML在一個(gè)帶卷角的長方形中顯示給出的注釋,在一個(gè)帶卷角的長方形中顯示給出的注釋,并使用虛線將這個(gè)帶卷角的長方形和所它所注釋的

9、并使用虛線將這個(gè)帶卷角的長方形和所它所注釋的實(shí)體連接起來。實(shí)體連接起來。 2010-1-10117.2 面向抽象原則面向抽象原則 7.2.1 抽象類和接口抽象類和接口 在這里我們提煉一些抽象類和接口二者最重要的在這里我們提煉一些抽象類和接口二者最重要的知識(shí)點(diǎn),以便使讀者更加容易的理解面向抽象的原則。知識(shí)點(diǎn),以便使讀者更加容易的理解面向抽象的原則。1 1 抽象(抽象(abstractabstract)類具有如下特點(diǎn):類具有如下特點(diǎn):抽象類中可以有抽象類中可以有abstractabstract方法,也可以有非方法,也可以有非abstractabstract方法。方法。抽象類不能用抽象類不能用new

10、new運(yùn)算符創(chuàng)建對象。運(yùn)算符創(chuàng)建對象。如果一個(gè)非抽象類是某個(gè)抽象類的子類,那么它必須重寫父類的如果一個(gè)非抽象類是某個(gè)抽象類的子類,那么它必須重寫父類的abstractabstract方法。方法。抽象類聲明的對象做上轉(zhuǎn)型對象。抽象類聲明的對象做上轉(zhuǎn)型對象。 A.java,B.javaA.java,B.java,Application.javaApplication.java 2 2接口(接口(interfaceinterface)具有如下特點(diǎn):具有如下特點(diǎn):接口中只可以有接口中只可以有publicpublic權(quán)限的權(quán)限的abstractabstract方法,不能有非方法,不能有非abstract

11、abstract方法。方法。接口由類去實(shí)現(xiàn),即一個(gè)類如果實(shí)現(xiàn)一個(gè)接口,那么它必須重寫接口中接口由類去實(shí)現(xiàn),即一個(gè)類如果實(shí)現(xiàn)一個(gè)接口,那么它必須重寫接口中的的abstractabstract方法。方法。接口回調(diào)。接口回調(diào)。 Com.java,ComImp.java,Application.javaCom.java,ComImp.java,Application.java 2010-1-10127.2.2 面向抽象面向抽象 所謂面向抽象編程,是指當(dāng)設(shè)計(jì)一個(gè)類時(shí),不所謂面向抽象編程,是指當(dāng)設(shè)計(jì)一個(gè)類時(shí),不讓該類面向具體的類,而是面向抽象類或接口,讓該類面向具體的類,而是面向抽象類或接口,即所設(shè)計(jì)類中

12、的重要數(shù)據(jù)是抽象類或接口聲明的即所設(shè)計(jì)類中的重要數(shù)據(jù)是抽象類或接口聲明的變量,而不是具體類聲明的變量。變量,而不是具體類聲明的變量。 Circle.java,Pillar.java Circle.java,Pillar.java Geometry.java,Pillar.java,Circle.java,Rectangle.java ,Application.java Geometry.java,Pillar.java,Circle.java,Rectangle.java ,Application.java 2010-1-10137.3 開開- -閉原則閉原則 所謂所謂 “ “開開- -閉原則

13、閉原則”(Open-Closed Open-Closed PrinciplePrinciple)就是讓你的設(shè)計(jì)應(yīng)當(dāng)對擴(kuò)展開放,就是讓你的設(shè)計(jì)應(yīng)當(dāng)對擴(kuò)展開放,對修改關(guān)閉。對修改關(guān)閉。 2010-1-10147.4 多用組合少用繼承原則多用組合少用繼承原則 方法復(fù)用的兩種最常用的技術(shù)就是方法復(fù)用的兩種最常用的技術(shù)就是類繼承和類繼承和對象組合。對象組合。 2010-1-10157.4.1 繼承與復(fù)用繼承與復(fù)用 子類繼承父類的方法作為自己的一個(gè)方法,子類繼承父類的方法作為自己的一個(gè)方法,就好像它們是在子類中直接聲明一樣,可以被子就好像它們是在子類中直接聲明一樣,可以被子類中自己聲明的任何實(shí)例方法調(diào)用。

14、也就是說,類中自己聲明的任何實(shí)例方法調(diào)用。也就是說,父類的方法可以被子類父類的方法可以被子類以繼承的方式復(fù)用以繼承的方式復(fù)用。 2010-1-10167.4.2 組合與復(fù)用組合與復(fù)用 一個(gè)類可以把對象作為自己的成員變量,如一個(gè)類可以把對象作為自己的成員變量,如果用這樣的類創(chuàng)建對象,那么該對象中就會(huì)有其果用這樣的類創(chuàng)建對象,那么該對象中就會(huì)有其它對象,也就是說該對象將其他對象作為自己的它對象,也就是說該對象將其他對象作為自己的組成部分(這就是人們常說的組成部分(這就是人們常說的Has-AHas-A),),或者說或者說該該對象是由幾個(gè)對象組合而成對象是由幾個(gè)對象組合而成。 2010-1-10177.4.3 多用組合多用組合 少用繼承少用繼承 之所以提倡多用組合,少用繼承,是因?yàn)樵谥蕴岢嘤媒M合,少用繼承,是因?yàn)樵谠S多設(shè)計(jì)中,人們希望系統(tǒng)的類之間盡量是低耦許多設(shè)計(jì)中,人們希望系統(tǒng)的類之間盡量是低耦合的關(guān)系,而不希望是強(qiáng)偶合關(guān)系。合的關(guān)系,而不希望是強(qiáng)偶合關(guān)系。 2010-1-10187.5 高內(nèi)聚高內(nèi)聚-

溫馨提示

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

評(píng)論

0/150

提交評(píng)論