類圖中的六種關係
類圖中,類與類之間一般會有六種關係,他們分別是繼承(generalization)、實現(
implements
)、組合(
composition
)、聚合(
aggressgation
)、依賴(
dependency
)、關聯(
association)
繼承(generalization)
在這裡teacher和
student
類分別是繼承了
person
類,自動擁有了
person
類的公共屬性和操作。同時他們分別擴充套件了自己獨有的操作
teach
和listen
。繼承關係用乙個實線空箭頭的連線來表示,箭頭指向父類
實現(implements)
實現的概念和繼承有些類似。但是介面中不會有已經寫好的操作或者方法,介面中宣告的操作都需要再實現類中實現。實現關係如下圖所示
在這裡superman類一樣繼承了
person
類,因為超人還有乙個特性是會飛,所以他還實現了乙個
fly的介面。實現關係用乙個虛線空心箭頭的連線來表示,箭頭指向介面。
組合(composition)
組合表示的是兩個物件之間一種強「擁有
」的關係,如果
b組合成為
a,那麼b是
a的乙個整體,b和
a的生命週期是一樣的。例如是一種部分與整體的關係,部分與整體之間的生命週期是一樣的。組合關係用乙個乙個帶箭頭的連線表示,尾巴上有實心的菱形,箭頭指向被擁有的物件。上面的數字表示兩者之間的數量關係。如下圖所示
在這裡,hand和
person
是組合關係,
hand
是person
的部分,
person
擁有hand
,而且hand
的生命週期依賴
person
的生命週期。也就是說
person
沒有了,
person
的hand
也沒有了。在這裡表示乙個
hand
一定歸宿乙個
person
而乙個person
可能有0
個或者多個
hand
。因為剛剛有報道說乙個人長了
3隻腳,所以乙個人也可能長出多條手哈
聚合(aggressgation)
聚合也表示兩個物件之間的一種擁有關係,但是這個關係是一種弱的擁有關係。兩者的生命週期是不依賴的。這是和組合的乙個重要區別。聚合關係用乙個帶箭頭的連續表示,尾巴帶乙個空心的菱形,箭頭指向被擁有的物件。上面的數字表示兩個物件之間的數量關係。如下圖所示
這裡classess是由
teacher
和student
聚合而成,他們之間是一種擁有關係,但是
classes
消亡,並不代表
teacher
和student
的消亡,他們的生命週期是不依賴的。這是和組合的重要區別。這幅圖裡面聚合關係上的數字表示乙個
teacher
可以在0
或者多個
classes
中,而乙個班級可以由
0到多個
teacher
。classes
和student
之間聚合關係上的的數量表示的是同樣的含義。
依賴(dependency)
如果乙個物件的活動中要依賴另乙個物件,則兩者之間是依賴關係。例如學生上課依賴課程物件,老師教課也依賴課程物件。依賴關係用乙個虛線箭頭表示,箭頭指向被依賴的物件。在**中一般體現為操作的引數。如下圖所示
關聯關係(association)
如果乙個物件需要知道另乙個物件,則物件之間是一種關聯的關係。關聯可以是單向的,即乙個物件知道另乙個物件,而另乙個物件不知道該物件,也可以是雙向的,即兩個物件相互知道。關聯式用一條實現表示,單向關聯帶乙個箭頭,指向被知道的物件,雙向關聯無箭頭。例如學生需要了解考試物件的情況,考試物件需要了解學生的情況,這是一種雙向關聯關係。如下圖所示。
類與物件的關係
類是一種抽象的資料型別,他是對某一類事物的描述 定義,但是不能代替某乙個具體事物 例如 動物 職務 手機等 person類 pet類 car類等,這些類都是用來描述 定義某一類具體事務應該具備的特點和行為。物件是抽象 概念的具體例項 張三就是人的乙個具體例項,張三家裡的狗就是乙個狗的具體例項。能夠體...
核心物件與控制代碼的關係
一 乙個物件是不是核心物件,通常可以看建立此物件api的引數中是否需要 psecurity attributes 型別的引數。三 每個程序中有乙個控制代碼表 handle table 這個控制代碼表僅供核心物件使用,如下圖 四 解開此中的秘密 比如呼叫建立乙個執行緒的api handle hthre...
XML 與DataSet 物件的關係
在.net framework 中,經常使用xml 作為儲存和傳輸各種資料的格式。dataset 中的資料可以轉換成xml 的形式來表示和儲存。我們可以使用xml 物件同步和轉換dataset 的資料,而dataset 也可以儲存和傳輸xml 格式的資料。xml 與 dataset 的關係如下圖所示...