天天看點

UML類圖應該怎麼看?

止境,精益求精

十年河東,十年河西,莫欺少年窮

學曆代表你的過去,能力代表你的現在,學習代表你的将來

我每次寫博基本都是這樣開頭,除了激勵自己,每句話也都挺有道理!

呵呵,今天是陰曆2017年我工作的最後一天,後天就可以開車回家了!心情還是蠻不錯滴!

閑來無事,寫寫部落格其實蠻好的!

依稀記得前不久阿裡巴巴商業項目智能機器人對外招收開發人員。我也很榮幸被法本資訊(外包公司,亦是上市的外包公司,據說蠻牛的)的招聘人員看中,并緻電給我。

當時接到電話,自己還是蠻興奮的,雖說是外包公司緻電,但畢竟也是阿裡巴巴項目。

于是跟招聘人員天南海北闊談高論了一段時間,不過讓我印象比較深的是:招聘人員問我是否能看的懂UML類圖,是否會設計模式并舉例,是否了解多線程及異步線程開發,是否...等

總之,一般的招聘人員都是了解對方的意願,目前情況,在職離職等資訊。

從外包公司招聘人問我的問題,可以看出阿裡對招聘開發人員的技術要求是有一定高度的!不過,很榮幸,我通過了招聘人員的‘人事面試’。

于是耐心的等待正宗阿裡巴巴的面試官電話...

其實,那時的我心裡也挺沖突,畢竟我是在蘇州發展且在職,有家有孩子,我自認為我在蘇州目前的情況也非常不錯,總之,我對自己崇拜的阿裡巴巴的召喚并沒有那麼強大的向往,再說了,外包又不屬于阿裡巴巴的正式員工。

三天後,我的電話鈴聲響起...

那時晚上的八點左右,來電方是一個固定電話,顯示的歸屬地為杭州。

接起電話,對方亮明了他的身份:我是阿裡巴巴面試官X某某,你好,是陳XX先生嗎?

就這樣,一個電話面試開始了...

對方直接開門見山,我的問題不多,就兩個!第一個題目是:請您給我解釋下委托與事件的關聯與差別?

我也随之進行了回答:事件是一種特殊的委托,事件可通過訂符号+ 來訂閱一個事件,取消一個事件訂閱可通過符号 - 來進行,委托和事件都類似于C++中的指針,他們都允許把函數作為參數來進行傳遞,以及介紹了C#2.0 3.5 4.0 4.5 等架構委托的發展史,也就是說:微軟最先推出委托,後來有了匿名表達式,再後來有發展成Lambda表達式,到現在我們熟知的Linq表達式等都和委托有着關聯。

第一道面試題回答完畢。

對方:很好,我的第二道面試題是:請您解釋下MVC中的路由機制?

我也随之進行了回答:傳統的asp也好還是aspx也罷,他們的通路路徑都是直接映射了他們的實體路徑。在MVC中是通過配置Route檔案來映射路徑的,主要通過Controller 和 Action 來控制,就是說:來了一個URL,首先去比對對應的Controller,然後找到對應的Action,如果URL路徑中帶有參數,最後再去比對參數。

第二道面試題回答完畢。

随之,他說:您現在居住在蘇州是吧,招聘人員說你目前在職對吧,等等

針對這些問題,我知道我回答的他還算滿意,但我确實沒打算...總之,問完所有問題後,他說如果合适,會電話通知來杭州進行筆試。

漫長的等待,直到今天也沒有電話了,看樣子我被阿裡面試官否決了!

呵呵,這個挺遺憾的,但也沒什麼遺憾的,自己就沒打算去阿裡鍍層金啊!原因吧,我并非單身,呵呵!

OK,今天真是鬼扯太多,還是進入咱們今天的話題吧!

之前看大話設計模式一書時,把UML類圖也簡單了解了下,但自己并沒有深入研究,更不知道大公司這麼看中UML類圖。

1、問:在UML類圖中如何表示一個類?

      答:通常用一個三層結構的矩形來表示一個類

如下圖:

UML類圖應該怎麼看?

第一層:類的名稱,如果類的名稱為斜體,則該類為抽象類

第二層:類的屬性,比如人類有年齡、性别、身高,體重等,注意:如果屬性前邊用 + 号辨別,則意味着該屬性為共有屬性(Public)。用 - 号辨別,則該屬性為私有屬性(Private)。用 # 号辨別,則該屬性為保護的(Protected)

第三層:類的操作、方法或行為,比如人類可以吃飯,也會睡覺,還會說話等,注意:如果行為前邊用 + 号辨別(Public)。則意味着該行為為共有屬性(Private)。用 - 号辨別,則該行為為私有屬性(Protected)

2、如果表示類與類之間的繼承關系?

      答:用空心三角加實線來表示

UML類圖應該怎麼看?

鳥繼承動物抽象類

UML類圖應該怎麼看?

3、問:類和類之間的依賴關系用什麼表示?

      答:用帶有箭頭的虛線來表示

UML類圖應該怎麼看?

如上圖所示:動物無論是新陳代謝還是繁殖都需要依賴氧氣、水、食物等

依賴關系代碼展示(動物依賴氧氣和水):

UML類圖應該怎麼看?

4、問:類和類之間的關聯關系用什麼表示?

      答:用帶有箭頭的實線來表示

 如下圖:

UML類圖應該怎麼看?

企鵝是特殊的鳥,不會飛會遊泳,而且随着氣候的變化,他們要進行集體遷徒,也就是說,當氣候發生變化時,他們就會長途跋涉到另一個地方,是以:企鵝是和氣候是有關聯的!

人類何嘗和錢沒有關聯,當地上有100W時,想必大多數人都會彎腰撿錢(馬雲除外)

關聯關系代碼展示:

UML類圖應該怎麼看?

企鵝繼承鳥類,但企鵝和大雁等都和氣候相關,是以,在關聯關系中,我們可以把被關聯的類對象寫成私有的!畢竟并不是所有的鳥都随着氣候變化而長途跋涉‘’;

5、問:如何表示類繼承/實作接口?

       答:用空心三角加虛線來表示

UML類圖應該怎麼看?

大雁都會飛,是以,大雁可以實作飛翔接口

代碼如下:

UML類圖應該怎麼看?
UML類圖應該怎麼看?

大雁實作 IFly 接口

6、問:如何展示一個接口?

      答:展示接口圖示有以下兩種

頂端有<<interface>>辨別的矩形

UML類圖應該怎麼看?
UML類圖應該怎麼看?

棒棒糖展示法

UML類圖應該怎麼看?

 代碼如下:

UML類圖應該怎麼看?

7、問:如何展示類與類之間的聚合關系?

      答:用空心的菱形加帶有箭頭的實線來表示

UML類圖應該怎麼看?

所謂聚合關系,在此說明一下:聚合關系表示一種弱的‘擁有’關系,展現的是 A 對象可以包含 B 對象,但是 B 對象不是 A 對象的一部分。

比如:大雁是群居動物,一個大雁群可以有很多隻大雁。類似于這種情況,即可視為他們之間擁有聚合關系。

UML類圖應該怎麼看?

8、問:如何展示類與類之間的組合關系?

      答:用實心的菱形加帶有箭頭的實線來表示

UML類圖應該怎麼看?

所謂組合關系和聚合關系可了解為:聚合關系多你一個不多,少你一個不少。組合關系是有嚴格的整體,缺一不可!

是以:大雁群衆少一個大雁無傷大雅,但鳥沒有了翅膀就不行了!是以,組合關系可了解為嚴格的整體,缺一不可!

是以,在建構鳥類時,也一定要完成翅膀的建構,

代碼如下:、

UML類圖應該怎麼看?

至此,UML基本類圖就說完了!

 關于更複雜的類圖,大家可自行參考其他資料!

 最後,貼出一張完成的類圖

UML類圖應該怎麼看?

看懂上述類圖的所有條條框框,類圖基本就學會了!

 呵呵,下班啦。

 拜~

@陳卧龍的部落格

評論中有人說我裝逼,奈何,我并沒有裝逼,有圖為證:

UML類圖應該怎麼看?

繼續閱讀