Java與UML面向?qū)ο蟪绦蛟O計 TP312JA316
Bruce E.Wampler
Chapter 2 對象的精髓object(對象)
面向?qū)ο蟮幕締挝弧ο笫且粋€擁有屬性、行為和標識符的實體。
對象是類的實例,對象的屬性和行為在類定義中定義。
class(類)
類是一組對象的描述,這一組對象有共同的屬性和行為。在概念上,類和非面向?qū)ο蟪绦蛟O計語言中的抽象數(shù)據(jù)類型比較相似,但是由于類同時包括數(shù)據(jù)結(jié)構(gòu)和行為,所以它更為全面。
類的定義描述了這個類的所有對象的屬性,也描述了實現(xiàn)該類對象的行為的類的方法。
面向?qū)ο蠹夹g(shù)是使用對象將真實世界的系統(tǒng)在軟件中建模的技巧,對象是核心概念,它是真實世界的實體或概念的軟件模型。
類是對所有該類的對象的特征的描述或定義;對象是類的一個實例或成員,當程序運行時,對象被創(chuàng)建并存在。
編寫成功的OO程序,必須堅持以對象的觀點思考!!!
2.1 什么是面向?qū)ο笙到y(tǒng)
object orientation(面向?qū)ο蠹夹g(shù))
一種軟件開發(fā)方法,包括利用對象進行抽象、封裝的類、通過消息進行通信、對象生命周期、類層次結(jié)構(gòu)和多態(tài)等技術(shù)。
2.1.1 面向?qū)ο笙到y(tǒng)的基本特性1. 利用對象進行抽象
abstraction(抽象) 真實世界的對象或概念的模型。
2. 封裝的類
Encapsulation(封裝) 向外界隱藏對象的所有內(nèi)部細節(jié)的過程。在Java中,通過在類定義里面來定義屬性和方法的方式,強制實現(xiàn)封裝過程。
attribute(屬性) 用于保持對象的狀態(tài)信息。屬性可以很簡單,只是一個布爾型變量記錄開或關;也可以是一個復雜的結(jié)構(gòu),比如說另一個對象。類的定義描述了類的屬性和操作(方法)。
behavior(行為) 外界可見的對象活動。它包括對象如何通過改變內(nèi)部狀態(tài),或向其它對象返回狀態(tài)信息來響應消息。
method(方法) 針對對象實施的操作或服務,作為類定義的一部分來定義。方法用來實現(xiàn)對象的行為。方法的同義詞包括成員函數(shù)、操作和服務等。
state(狀態(tài)) 狀態(tài)反映了給定對象所有屬性的當前值,是經(jīng)過一段時間的對象行為積累的結(jié)果。
3. 通過消息進行通信
消息是指對象是如何進行通信的。
用程序設計術(shù)語來說,發(fā)送消息是通過調(diào)用某個類的方法來實現(xiàn)的;收到消息是通過其它對象調(diào)用本對象的類的方法來實現(xiàn)的。
消息驅(qū)動的程序執(zhí)行流。
4. 對象生命周期
對象是動態(tài)的實體。一個對象(在程序運行過程中)被創(chuàng)建就稱為它被實例化,或受到類定義的約束。經(jīng)過實例化的類的成員稱為對象,或等價的稱為實例。
instantiation(實例化) 創(chuàng)建一個給定類的對象實例。實例化一個實例使它從沒有變?yōu)榇嬖凇?br />instance(實例) 某個特定的對象是一個類的實例。一個實例擁有特定的屬性、行為以及唯一的標識符。實例和對象這兩個詞經(jīng)常互換使用。
constructor(構(gòu)造方法) 創(chuàng)建對象并定義其初始狀態(tài)的操作。對于復雜對象來說,構(gòu)造方法可能是重要的活動,也可能去調(diào)用其它對象的構(gòu)造方法。
object lifetime(對象生存期) 對象存在的時間,從調(diào)用構(gòu)造方法實例化開始,直到對象不復存在,被Java垃圾收集器終結(jié)為止。對象何時被創(chuàng)建是由程序控制的,但是由于Java垃圾收集器工作的方式,應用程序是不能確定對象何時不復存在的。
identity(標識符) 對象具有的能將它與其它對象區(qū)分開來的特征或狀態(tài)。
reference(引用) 其值是一個地址的數(shù)據(jù)元素。在Java中,所有的對象都是通過引用來訪問的。任何對象變量都是對一個真實對象的引用,而非對象本身。
garbage collection(垃圾收集) 對不再使用的內(nèi)存的自動檢測和釋放。Java使用垃圾收集器,而不是像C++那樣使用顯式的析構(gòu)方法。
5. 類層次結(jié)構(gòu)
創(chuàng)建面向?qū)ο蟪绦蜃钪匾姆矫嬷皇菍㈩惏才诺蕉鄠€層次結(jié)構(gòu)中去。
association(關聯(lián)) 兩個類之間的一種關系。關聯(lián)表明類的對象之間的相互關系。
hierarchy(層次結(jié)構(gòu)) 類的一種次序。最常見的面向?qū)ο髮哟谓Y(jié)構(gòu)是繼承關系和聚合關系。
multiplicity(多重性) 確定對象間關聯(lián)數(shù)量的屬性。
第一種:整體/部分層次結(jié)構(gòu)
whole/part(整體/部分) 類之間的一種關系,一個類由其它類的對象組成或容納了其它類的對象。
has-a(擁有) 一種說明整體/部分關系的方式。整個對象擁有部分。
part-of(部分) 與has-a相反。組件是整體的一部分。
聚合關系中,部分一方的對象可以來去自由;組合關系中,對象是整體的不可缺少的部分。
aggregation(聚合) 一種整合/部分層次關系。一個聚合對象包括(擁有)其它對象,每個被包括的對象被認為是聚合對象的一部分。
composition(組合) 組合是聚合的一種形式,在這種情況下,沒有其它組成部分,整體就不能存在。
第二種:泛化/特殊化
實現(xiàn)泛/ 特層次結(jié)構(gòu)的主要機制稱為繼承。
generalization/specialization(泛化/特殊化) 一種繼承層次關系。對于更泛化的超類來說,每個子類都是它的特殊化的類。
is-a(是) 繼承層次結(jié)構(gòu)中使用的一個術(shù)語。總的來說,子類是(is a)更通用的超類的一種特殊化情況。
overriding(重載) 當子類為其超類的屬性和方法指定了新的定義時,它就重載了超類中的定義。重載有時也被稱為overloading。在Java中只能重載方法。
default behaviors(缺省行為) 在一個繼承層次結(jié)構(gòu)中,超類所定義的行為將缺省的被子類所使用,除非子類對這個行為進行了重載。
inheritance,single(單繼承) 當一個子類從單一超類派生而來時,稱為單繼承。
inheritance,multiple(多繼承) 當一個子類從多個超類派生而來時,稱為多重繼承。Java不支持多重繼承,作為替代方式,它提供了接口。
interface(接口) 在Java中,接口規(guī)定了一些方法,使用這個接口的類必須實現(xiàn)這些方法。接口只是一個規(guī)范,不定義任何實際代碼。
implements(實現(xiàn)) 在Java中,類實現(xiàn)接口所要求的代碼的一個明確化的過程。
is-a test(是測試) 一種簡單的測試,以確定繼承關系設計是正確的。如果你不能說子類是(is a)超類的一種,那么這種繼承關系可能是不正確的。
6. 多態(tài)性
多態(tài)是繼承關系的特點,它確保這種子類的實例執(zhí)行正確的行為。
Polymorphism(多態(tài)) 多態(tài)使得對任何對象自動調(diào)用其恰當?shù)姆椒ǔ蔀榭赡堋?br />
允許多態(tài)現(xiàn)象發(fā)生的機制稱為動態(tài)綁定。對一個指定的方法調(diào)用的綁定被推遲到運行時刻完成。
dynamic binding(動態(tài)綁定) 在運行時刻綁定定義。
posted on 2006-05-29 16:45
夜舞重金屬 閱讀(444)
評論(0) 編輯 收藏 引用 所屬分類:
面向?qū)ο蟪绦蛟O計