這是前一陣《高級軟件工程》課堂上,老師隨堂出的一道討論題,隨手貼在這里:
ps: 今天是520,正好聊一些OoXx,關于愛的扯淡話題:)
題目:“雞生蛋,蛋孵雞”,世間萬物生生不息,如何用O-O中的類圖以盡可能接近現實的方式來描述?
參考答案:
解析:
1、Chicken是基類,Hen(母雞),Cock(公雞)從Chicken派生,
2、Hen與Egg是關聯關系,注意關聯關系中的“重數”表示,從Hen向Egg的方向看去,0..*表示1只母雞,可能下“0或多”個蛋,而反過來,1只蛋,卻只能由1只母雞所生
3、Egg與Chicken也是關聯關系,類似的,從Egg向Chicken的方向看去,0..1表示這只蛋,有可能孵化出1只雞(不論公母),也有可能孵不出來(這是1個悲慘的蛋)
4、Hen與Cock也有關聯關系,1只公雞可能與0或多個母雞OOXX,反過來也是類似的道理
5、虛線表示“關聯關系類(Association Class)”,Hen與Cock發生關系后,所生的蛋才能稱為受精蛋(愛的結晶),才有可能孵化出1只小雞,這也正好對應了解析中的第3點,但是我們也知道,這世上Hen單靠自己,也能下蛋,只不過孵不出小雞(個人覺得這是鳥類一個比較NB的功能)
注:
關聯關系類,技術層面講,就是建一個小類,記錄Hen,Cock這二個的ID
商城系統中,有很多類似的應用,比如Product(商品)與Category(商品分類),如果一個商品可按不同標準歸到多個類,通常會在database中新建一張小表,記錄Product與Category的ID映射,這張表對應的Class,就是關聯關系類
文章列表