《軟件工程(第六章面向?qū)ο蠓椒ǜ攀?》由會員分享,可在線閱讀,更多相關(guān)《軟件工程(第六章面向?qū)ο蠓椒ǜ攀?(23頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、單擊此處編輯母版標(biāo)題樣式,單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,軟 件 工 程,第17講:,面向?qū)ο蠓椒?主講人:陽王東,Email:,主要內(nèi)容,編程的沉思,什么是面向?qū)ο?面向?qū)ο蟮奶卣?對象之間的關(guān)系,編程的沉思,編程存在重復(fù)勞動嗎,機(jī)器替代了人手工的重復(fù)勞動,程序則替代了人腦的重復(fù)性勞動,編程無重復(fù),程序中的世界,經(jīng)典的公式:數(shù)據(jù)結(jié)構(gòu)+算法,面向?qū)ο笳J(rèn)為軟件功能是通過一個個對象的行為來完成的。,庖丁解牛的三重境界,眼中全牛,心中無牛,心中解牛,心中全牛,面向?qū)ο蟮幕靖拍?對象的定義,對象是具有相同狀態(tài)的一組操作的集合。,對象是對業(yè)務(wù)系統(tǒng)中某個東西的抽象,這種抽象
2、反映了系統(tǒng)保存有關(guān)這個東西的信息或與它交互的能力。,對象是封裝了數(shù)據(jù)結(jié)構(gòu)及可以施加在這些數(shù)據(jù)結(jié)構(gòu)上的操作的封裝體,對象是一臺自動機(jī)。,對象=,其中,ID是對象的標(biāo)識或名字,MS是對象中的操作集合,DS是對象的數(shù)據(jù)結(jié)構(gòu),MI是對象受理的消息名集合(即對外接口),對象(Object)是類(Class)的一個實(shí)例(Instance)。,面向?qū)ο蟮幕靖拍睿ɡm(xù)),類的定義,對具有相同數(shù)據(jù)和相同操作的一組相似對象的定義。,類是對象的程序描述,對象是該程序運(yùn)行時所創(chuàng)建的實(shí)例。,對象比作房子,那么類就是房子的設(shè)計圖紙。,對象比作一個個活人,則人類則是對人這類動物的特征和行為的描述。,對象比作一條條活狗,則狗
3、類則是對狗這類動物的特征和行為的描述。,面向?qū)ο蟪绦蛟O(shè)計的重點(diǎn)是類的設(shè)計,而不是對象的設(shè)計。,面向?qū)ο蟮幕靖拍睿ɡm(xù)),消息,就是要求某個對象執(zhí)行在定義它的那個類中所定義的某個操作的規(guī)格說明。通常,一個消息由下述三部分組成:,接收消息的對象;,消息選擇符(也稱為方法名);,零個或多個參數(shù)值。,對象A向?qū)ο驜發(fā)送消息f就是對象A調(diào)用對象B的方法f,面向?qū)ο蟮奶卣?以數(shù)據(jù)為中心,抑或以行為為中心,分別用上述兩種方式來描述人,封裝性,繼承性,多態(tài)性,封裝性,封裝性是把對象的屬性和方法結(jié)合成一個獨(dú)立的單元,并盡可能蔭蔽對象的內(nèi)部細(xì)節(jié)。,Public,private,protected,避免訪問內(nèi)部數(shù)據(jù)
4、,盡量通過方法訪問,優(yōu)點(diǎn),數(shù)據(jù)獨(dú)立(每個對象都對應(yīng)于一個獨(dú)立的地址空間),具有隱藏性和安全性,易于維護(hù)(由于數(shù)據(jù)獨(dú)立,易于發(fā)現(xiàn)問題),缺點(diǎn),需要較多的輸入輸出函數(shù),超市銷售系統(tǒng),倉庫,屬性,服務(wù),價格表,物品列表,帳單,提供物品,帳單,入庫、出庫,抽象,商品,屬性,服務(wù),商標(biāo),型號,計量單位、價格、數(shù)量,入庫、銷售、折扣、查詢數(shù)量等,抽象,繼承性,繼承是事物之間存在的共性,子類自動地共享基類中定義的數(shù)據(jù)和方法的機(jī)制。,基類與派生類,單繼承與多重繼承,繼承的優(yōu)點(diǎn),減少原代碼,即代碼可重用。,代碼的相互獨(dú)立性。,易于維護(hù)。,體現(xiàn)自然界之間的關(guān)系。,繼承性(續(xù)),車輛的繼承關(guān)系,動物科目劃分的一種繼
5、承關(guān)系,非機(jī)動車,客車,卡車,車輛,拖拉機(jī),機(jī)動車,自行車,人力車,翼手目,貓科,哺乳動物,靈長目,食肉目,鯨目,人科,猴科,犬科,人,猩猩,狗,狼,狐,貓,虎,豹,繼承性(續(xù)),不要濫用繼承,如果類A和類B毫不相關(guān),不可以為了使B的功能更多些而讓B繼承A的功能。人想擁有狗鼻子的靈敏問題。,若在邏輯上A是B的“一部分”(a part of),則不允許B繼承A的功能,而是要用A和其它東西組合出B。頭與眼睛、鼻子、耳朵、嘴巴的關(guān)系。,盡量避免使用多重繼承。,繼承的層次不宜太多,多態(tài)性,對不同的消息表現(xiàn)出不同的行為,覆蓋與重載,虛方法,參數(shù)重載,參數(shù)數(shù)目不同,參數(shù)類型不同,參數(shù)類型順序不同,抽象類和
6、接口,實(shí)現(xiàn)與繼承,類與對象的描述,(a)是表示類&對象的圖形符號,(b)是表示類的圖形符號。,對象之間的關(guān)系,歸納關(guān)系,組合關(guān)系,關(guān)聯(lián)關(guān)系。,歸納關(guān)系,歸納關(guān)系就是“一般特珠”關(guān)系,它反映了一個類與若干個互不相容的子類之間的分類關(guān)系。高層類(即基類)說明一般性的屬性,低層類(即派生類)說明特殊屬性。低層類對象是某種特殊的高層類對象,它繼承了在高層類中定義的屬性和服務(wù)。,歸納關(guān)系體現(xiàn)為一種繼承關(guān)系,歸納關(guān)系(續(xù)),組合關(guān)系,組合關(guān)系就是“整體部分”關(guān)系,它反映了對象之間的構(gòu)成關(guān)系。組合關(guān)系也稱為聚集關(guān)系。,組合關(guān)系具有的最重要的性質(zhì)是傳遞性。也就是說,如果A是B的一部分,B是C的一部分,則A也是C的一部分,組合關(guān)系(續(xù)),關(guān)聯(lián)關(guān)系,關(guān)聯(lián)關(guān)系反映對象之間相互依賴、相互作用的關(guān)系。通常把兩類對象之間的二元關(guān)系再細(xì)分為一對一(11)、一對多(1M)和多對多(MN)等三種,基本類型,類型的劃分依據(jù)參與關(guān)聯(lián)的對象的數(shù)目,關(guān)聯(lián)關(guān)系(續(xù)),鏈屬性。關(guān)聯(lián)鏈可以通過關(guān)聯(lián)類來實(shí)現(xiàn),對象模型實(shí)例,作業(yè),利用面向?qū)ο蟮姆椒▽椖康念}目進(jìn)行初步業(yè)務(wù)對象分析和描述。,