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