7.1 面向?qū)ο蠡A(chǔ) —— 基本概念
1.Unified Modeling Language - UML,是面向?qū)ο蟮臉?biāo)準(zhǔn)建模語言,通過統(tǒng)一的語義與符號表示,使各種方法的建模過程和表示統(tǒng)一起來,現(xiàn)已成為面向?qū)ο蠼5墓I(yè)標(biāo)準(zhǔn)。
2.“好”系統(tǒng)的定義:應(yīng)從使用者(外部)和開發(fā)者(內(nèi)部)兩個角度來回答。從使用者觀點(diǎn)出發(fā),需要系統(tǒng)具有易學(xué)易用、界面友好、正確使用時能快速給出正確結(jié)果、效率高的等優(yōu)點(diǎn),還要求系統(tǒng)安全可靠等;從系統(tǒng)開發(fā)者和管理者角度出發(fā),要求系統(tǒng)易于修改和擴(kuò)充、易于理解、易于測試和重用、易于與其他系統(tǒng)兼容和管理等。雖然不同的系統(tǒng)所強(qiáng)調(diào)的特性可能不同,但上述所要求的系統(tǒng)特性是基本特性。
3.面向?qū)ο?= 對象(Object)+分類(Classification)+繼承(Inheritance)+通過消息的通信(Communication with Message)
4.面向?qū)ο蟮幕靖拍睢?/p>
對象
在面向?qū)ο蟮南到y(tǒng)中,對象是基本的運(yùn)行時的實(shí)體,它既包括數(shù)據(jù)(屬性),也包括作用于數(shù)據(jù)的操作(行為)。所以,一個對象把屬性和行為封裝為一個整體。
封裝是一種信息隱蔽技術(shù),它的目的是使對象的使用者和生產(chǎn)者分離,使對象的定義和實(shí)現(xiàn)分開。
從程序設(shè)計者來看,對象是一個程序模塊;從用戶來看,對象為他們提供了所希望的行為。
在對象內(nèi)的操作通常稱為方法。一個對象通常可由對象名、屬性和方法3不分組成。
消息
對象之間進(jìn)行通信的一種構(gòu)造叫做消息。當(dāng)一個消息發(fā)送給某個對象時,包含要求接收對象去執(zhí)行某些活動的信息。接收到信息的對象經(jīng)過解釋,然后予以響應(yīng)。這種通信機(jī)制稱為消息傳遞。
發(fā)送消息的對象不需要知道接收消息的對象如何對請求予以響應(yīng)。
類
一個類定義了一組大體上相似的對象。
一個類所包含的方法和數(shù)據(jù)描述一組對象的共同行為和屬性。把一組對象的共同特征加以抽象并存儲在一個類中是面向?qū)ο蠹夹g(shù)最重要的一點(diǎn)。
是否建立一個豐富的類庫,是衡量一個面向?qū)ο蟪绦蛟O(shè)計語言成熟與否的重要標(biāo)志。
類是在對象之上的抽象,對象是類的具體化,是類的實(shí)例(instance)。在分析和設(shè)計時,通常把注意力集中在類上。
類可以分為三種:實(shí)體類、接口類(邊界類)和控制類。
實(shí)體類的對象表示現(xiàn)實(shí)世界中真實(shí)的實(shí)體。
接口類(邊界類)的對象為用戶提供一種與系統(tǒng)合作交互的方式,分為人和系統(tǒng)兩大類,其中人的接口可以是顯示屏、窗口、Web窗體、對話框、菜單、列表框、其他顯示控制、條形碼、二維碼或者用戶與系統(tǒng)交互的其他方法。
系統(tǒng)接口涉及到把數(shù)據(jù)發(fā)送到其他系統(tǒng),或者從其他系統(tǒng)接收數(shù)據(jù)。
控制類的對象用來控制活動流,充當(dāng)協(xié)調(diào)者。
有些類之間存在一般和特殊關(guān)系。
通常,把一個類和這個類的所有對象稱為“類及對象”或?qū)ο箢悺?br> 繼承
繼承是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制。這是類之間的一種關(guān)系。
多態(tài)
在收到消息時,對象要予以響應(yīng)。不同的對象收到同一消息可以纏上完全不同的結(jié)果,這一現(xiàn)象稱為多態(tài)。在使用多態(tài)的時候,用戶可以發(fā)送一個通用的消息,而實(shí)現(xiàn)的細(xì)節(jié)則由接收對象自行決定。這樣,同一消息就可以調(diào)用不同的方法。
多態(tài)的實(shí)現(xiàn)受到繼承的支持,利用類的繼承的層次關(guān)系,把具有通用功能的消息存放在高層次,而不同的實(shí)現(xiàn)這一功能的行為放在較低層次,在這些低層次上生成的對象能夠給通用消息以不同的響應(yīng)。
多態(tài)有不同的形式,參數(shù)多態(tài)和包含多態(tài)稱為通用的多態(tài),過載多態(tài)和強(qiáng)制多態(tài)稱為特定的多態(tài)。
參數(shù)多態(tài)是應(yīng)用比較廣泛的多態(tài),被稱為最純的多態(tài)。
包含多態(tài)在許多語言中都存在,最常見的例子就是子類型化,即一個類型是另一個類型的子類型。
過載(Overloading)多態(tài)是同一個名字在不同上下文中所代表的含義不同。
動態(tài)綁定
綁定是一個把過程調(diào)用和響應(yīng)調(diào)用所需要執(zhí)行的代碼加以結(jié)合的過程。在一般的程序設(shè)計語言中,綁定是在編譯時金星的,叫做靜態(tài)綁定。動態(tài)綁定則是在運(yùn)行時進(jìn)行的,因此,一個給定的過程調(diào)用和代碼的結(jié)合指導(dǎo)調(diào)用發(fā)生時才進(jìn)行。
動態(tài)綁定是和類的繼承以及多態(tài)相聯(lián)系的。在繼承關(guān)系中,子類是父類的一個特例,所以父類對象可以出現(xiàn)的地方,子類對象也可以出現(xiàn)。因此在運(yùn)行過程中,當(dāng)一個對象發(fā)送消息請求服務(wù)時,要根據(jù)接收對象的具體情況將請求的操作與實(shí)現(xiàn)的方法進(jìn)行連接,即動態(tài)綁定。