新員工培訓(xùn)-面向?qū)ο蠡靖拍頮第1頁
新員工培訓(xùn)-面向?qū)ο蠡靖拍頮第2頁
新員工培訓(xùn)-面向?qū)ο蠡靖拍頮第3頁
新員工培訓(xùn)-面向?qū)ο蠡靖拍頮第4頁
新員工培訓(xùn)-面向?qū)ο蠡靖拍頮第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蠡靖拍羁傮w設(shè)計部 石宏峰2004.021面向?qū)ο蟾攀?開篇語復(fù)雜性是軟件系統(tǒng)本質(zhì)的一部分。沒有什么抽象處理能夠消除軟件系統(tǒng)的復(fù)雜性,然而,能夠生成一種機(jī)制來管理這些復(fù)雜性。并且,有些困難不是“偶然的”,是軟件建造的方法所引起的。改變建造軟件的方式將改善這些所謂“偶然的”困難。3造成軟件復(fù)雜性的主因軟件開發(fā)工作的現(xiàn)狀:軟件越來越龐大,各軟件組件之間的互聯(lián)很復(fù)雜軟件開發(fā)由個人的創(chuàng)造性活動轉(zhuǎn)變?yōu)橛薪M織的團(tuán)隊活動,交流協(xié)調(diào)工作加劇傳統(tǒng)的結(jié)構(gòu)化分析設(shè)計和模塊化編程導(dǎo)致系統(tǒng)低內(nèi)聚、高耦合,使系統(tǒng)不靈活也不易維護(hù) 造成軟件的復(fù)雜性的真正原因:軟件的大小不能決定軟件復(fù)雜程度高度耦合、低內(nèi)聚才是造成軟

2、件復(fù)雜性的主要原因4面向?qū)ο?Object-Orientation)面向?qū)ο蟮母拍钭畛跏窃谏蟼€世紀(jì)60年代后期由使用SIMULA語言的研究人員提出真正的面向?qū)ο蟪绦蛟O(shè)計是在Smalltalk語言中實現(xiàn)的,“面向?qū)ο蟆边@個詞也是Smalltalk首先提出的 面向?qū)ο蠓椒▽W(xué)認(rèn)為:客觀世界由各種“對象”所組成,任何事物都是對象每一個對象都有自己的運動規(guī)律和內(nèi)部狀態(tài)不同對象的組合及相互作用就構(gòu)成了我們要研究、分析和構(gòu)造的客觀系統(tǒng)5OO方法與結(jié)構(gòu)化方法差異(1)結(jié)構(gòu)化方法:將一個系統(tǒng)化分為兩部分:數(shù)據(jù)(使用數(shù)據(jù)模型建模)和功能(使用過程模型建模)。導(dǎo)致數(shù)據(jù)與設(shè)計模型和系統(tǒng)實現(xiàn)(即程序)中的行為分離。OO

3、方法:將系統(tǒng)定義為一組正在交互的對象。對象可以完成一些事情(功能),也知道一些事情(數(shù)據(jù))。6OO方法與結(jié)構(gòu)化方法差異(2)7面向?qū)ο蟮能浖到y(tǒng)構(gòu)造8面向?qū)ο蠓椒ê芏喑绦騿T將面向?qū)ο缶幊蹋∣OP)技術(shù)和面向?qū)ο螅∣O)技術(shù)混淆面向?qū)ο蟛粌H是一種技術(shù),面向?qū)ο蠹夹g(shù)是一門博大精深的學(xué)問,它是一種方法論或者說是一種世界觀人們對面向?qū)ο蠓椒ǖ难芯颗c運用,不再局限于編程階段,而是從系統(tǒng)分析和系統(tǒng)設(shè)計階段就開始采用面向?qū)ο蠓椒嫦驅(qū)ο蠓椒ㄒ呀?jīng)發(fā)展成一種完整的方法論和系統(tǒng)化的思想體系面向?qū)ο蟛粌H適用于軟件設(shè)計開發(fā),也適用于解決硬件、組織結(jié)構(gòu)、商業(yè)模型等多種領(lǐng)域的問題 9“練器”與“練氣”會使用面向?qū)ο蟮木幊?/p>

4、工具并不等于就掌握了面向?qū)ο蟮乃枷牒头椒ǔ绦蛟O(shè)計語言僅僅提供一個方法學(xué)的表示,而真正的方法是從生活、工作、學(xué)習(xí)等中提升而來的,這個也真是程序設(shè)計語言所做不到的 有人即使選擇了面向?qū)ο蟮睦?,也無法成為真正的高手。因為他看重的是“器”的好壞,忽略的是“氣”的修煉掌握面向?qū)ο蟮乃枷肴缤@得練氣的真諦,它的重要性往往勝過了對編程語言的選擇練器雖易,但難成高手。練氣雖好,但見效緩慢。內(nèi)外兼修,終成正果10面向?qū)ο蠡靖拍?1總述對象類實例類的基本關(guān)系(繼承、關(guān)聯(lián)、聚合)接口封裝多態(tài)性12對象(Object)對象指的是一個獨立的、異步的、并發(fā)的實體,它能“理解一些事情”(即存儲數(shù)據(jù))、“做一些工作”(即

5、提供服務(wù)),并“與其它對象協(xié)同”(通過交換消息) 對象是對問題域中某個實體(任何有明確邊界和意義的東西包括具體的物理實體和人為的概念)的抽象軟件系統(tǒng)中的對象對象是一個接收和發(fā)送消息的黑盒子對象包含編碼(CODE)和數(shù)據(jù)(DATA)CODE是一段有序的計算機(jī)指令,決定對象的行為DATA是指令要操作的信息,即對象的內(nèi)容CODE與DATA在對象內(nèi)部是分離的對象是數(shù)據(jù)結(jié)構(gòu)及其上的操作的封裝體 13類(Class)相似對象(具有相同屬性和行為)的一種分類是一張制造對象的藍(lán)圖,對象通過類來定義。類名屬性方法屬性(Attribute):類知道的事情;一些數(shù)據(jù)或信息(內(nèi)容)方法(Method):類完成的事情;

6、一個操作或成員函數(shù)(行為),有參數(shù)和返回值14實例(Instance)實例:按照類“樣板”建立的具體對象,就是實例。實例是一個具體的對象(“對象”這個術(shù)語有泛指的含義) 實例化:創(chuàng)建對象的過程15類、實例與對象的聯(lián)系與區(qū)別類是一個模板、藍(lán)圖實例和對象都是根據(jù)類模板創(chuàng)造出來的實例指的是一個具體的實例對象是泛指實例,并不指出是哪個具體的實例16類關(guān)系繼承(1) (inheritance)繼承:表示兩個類之間是“is a”、“is like ”或“is kind of”的關(guān)系子類(subclass):如果類B繼承自類A,B就是A的子類父類(superclass):如果類B繼承自類A, A 就是B的父

7、類類A類B屬性繼承、方法繼承17類關(guān)系繼承(2)單繼承(single inheritance):一個類僅從另外一個類中繼承多重繼承(multiple inheritance):一個類從另外的一個以上的類中繼承覆蓋(override):在子類中重新定義屬性和方法抽象類(abstract class):不能實例化的類18類關(guān)系 關(guān)聯(lián)(1) (association)類A類B基數(shù)A基數(shù)B標(biāo)簽關(guān)聯(lián):一個類知道(knows)另一個類:表示兩端連接的類存在關(guān)聯(lián)關(guān)系:表示關(guān)聯(lián)的方向基數(shù):表示兩端關(guān)聯(lián)的對象數(shù)(0.1, 1, 0.*, 1.*, n, 0.n, 1.n)標(biāo)簽:對關(guān)聯(lián)的描述,一般說明關(guān)聯(lián)發(fā)生的前

8、提。(可選)19類關(guān)系 關(guān)聯(lián)(2) 雙向關(guān)聯(lián):兩個類互相知道類A基數(shù)A基數(shù)B標(biāo)簽類B遞歸關(guān)聯(lián):一個類中的對象之間存在關(guān)聯(lián)關(guān)系類A基數(shù)A基數(shù)B標(biāo)簽多關(guān)聯(lián):兩個類之間存在關(guān)多種聯(lián)關(guān)系類A基數(shù)A基數(shù)B標(biāo)簽1類B基數(shù)a基數(shù)b標(biāo)簽220類關(guān)系 聚合 (aggregation) 聚合:是一種特殊的關(guān)聯(lián)。表示兩個類之間是is part of 的關(guān)聯(lián)。類A類B基數(shù)組合(composition):是一種強(qiáng)聚合。表示“整體”與各“組成部分”共存。類A類B基數(shù)21接口(1)(interface)接口好比一種模板,這種模板定義了對象必須實現(xiàn)的方法,其目的就是讓這些方法可以作為接口實例被引用。接口不能被實例化一個對象僅

9、能通過其接口才會被其它對象所了解類可以實現(xiàn)多個接口并且通過這些實現(xiàn)的接口被索引接口是一個對象在對其它的對象進(jìn)行調(diào)用時所知道的方法集合對象的接口描繪了對象能夠完成的工作接口是實現(xiàn)插件化(pluggability)的關(guān)鍵22接口(2)Method1M2M3M4Method1M2M3M4DataLogicInterfaceClass接口是對類的輪廓的抽象接口不變類被使用方式不變將實現(xiàn)拋開(在沒有具體實現(xiàn)的情況下,就確定如何使用類),留下擴(kuò)展空間23封裝和信息隱藏(encapsulation & information hiding)封裝將操作和數(shù)據(jù)變量同放于一個類(或?qū)ο螅┲?,并使對?shù)據(jù)的訪問只可通

10、過該類(或?qū)ο螅┍旧淼牟僮鱽磉M(jìn)行,外部不能直接作用于該類(或?qū)ο螅┑臄?shù)據(jù),類(或?qū)ο螅┑耐ㄓ嵵荒芡ㄟ^明確的消息來進(jìn)行封裝是把類或?qū)ο蟮倪吙蛲亢诘淖龇?。目的是為了做信息隱藏信息隱藏:將對象私有信息隱藏,使之不能被外部類直接引用。隱藏對象知道什么和能做什么的實現(xiàn)方法,即隱藏對象是如何工作的目的就是限制外部對屬性和內(nèi)部方法的訪問。面向?qū)ο缶幊痰囊粭l基本原則對象的使用者永遠(yuǎn)不需要去看對象(黑盒子)的內(nèi)部24多態(tài)性(polymorphism)一個對象能夠有多種形式,其他的對象能夠與這個對象相互作用而不必知道它具有的確切形式 Figrue:抽象類“圖形”draw():畫圖方法Circle、Square、R

11、etangle繼承Figrue,并重置(或?qū)崿F(xiàn))draw() 方法。Figure.draw() 的輸出?25面向?qū)ο蠓椒偨Y(jié)區(qū)別于傳統(tǒng)的結(jié)構(gòu)化方法。傳統(tǒng)的軟件觀點:主動的應(yīng)用程序操作被動的數(shù)據(jù)結(jié)構(gòu);OO的軟件觀點:相互影響的對象集合將現(xiàn)實世界中的實體看成是一個個對象,分析對象之間存在著的聯(lián)系;把這些映射到系統(tǒng)模型中,建立一個基于相互作用的對象的系統(tǒng)模型 使用面向?qū)ο蠹夹g(shù)開發(fā)出來的軟件結(jié)構(gòu)是建立在現(xiàn)實世界的實體或?qū)ο蟮幕A(chǔ)上的,它把軟件的功能分散到各個對象中間建立在客觀系統(tǒng)的事物和抽象概念基礎(chǔ)上的對象實現(xiàn)了從問題域到解題域直接映射 。使得分析設(shè)計過程更加直觀自然分布式處理:每個對象將功能和狀態(tài)封裝于自身的內(nèi)部結(jié)構(gòu)中,同時對象的工作也是自治的,不受時間、地點影響,因而使系統(tǒng)在運算處理上具有分布性 高度的重用性:對象、方法等可重復(fù)利用 功能的共享性:通過對象的繼承機(jī)制使系統(tǒng)的處理能力得到充分發(fā)揮 26面向?qū)ο蠓椒ǖ囊饬x面向?qū)ο蟮姆椒ㄔ诩夹g(shù)和管理兩個層面均提供了決定軟件質(zhì)量的諸多要素,包括可復(fù)用性、可靠性、健壯性、可擴(kuò)展性、分布性和可存儲性等面向?qū)ο笾苯訉?dǎo)致軟件系統(tǒng)的強(qiáng)內(nèi)聚和松耦合,使軟件系統(tǒng)易

溫馨提示

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

評論

0/150

提交評論