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