官术网_书友最值得收藏!

1.5 建立面向對象思維

本節將通過簡單、通俗的案例來闡釋對象建模的基本概念,使讀者初步認識UML模型,并在開闊視野的基礎上,輕松建立面向對象的思維,同時使讀者掌握用面向對象方法分析問題的要領,為學習對象建模方法“熱身”。

在學習案例前,我們先區分幾個概念:對象技術、建模和UML。作為一種軟件開發思想,對象技術是理論基礎。引入對象技術的目的是能夠有效地分析和設計軟件系統,這個過程就是建模(關于建模的概念,將在第2章中做詳細介紹)。為了表達建模結果,開發人員需要一種語言作為工具,這個工具就是統一建模語言(Unified Modeling Language, UML)??偟膩碚f,建模是最終目的,對象技術是一種建模理論,而UML是一種體現面向對象思維的建模語言,它是將對象理論轉換為實踐的工具。

為了更好地理解面向對象思維方式,先來看一段個人簡介:tanHuobin是類OOTeacher的一個實例,這個類是基于beiHangUniversity的softwareSchool的工作;類GraduateStudent的所有實例都可以通過Course類的對象OOTechnology建立關聯,并可發送phone消息或email消息。

在該個人簡介中,我們看到了類、實例、關聯、消息等面向對象的詞匯,這是建立面向對象思維的基礎。當然,在實際應用中,這些概念并不是一次就能夠定義清楚的,它需要經歷一個分析和設計的過程。在本節的最后,我們將利用面向對象思維方式描述一件在日常生活中發生的事情,并借此引入后面將要學習的各種UML模型。

1.5.1 引入案例

我的一位朋友結婚了

這是人們日常生活中一件很普通的事情,但這只是事情的結果,結果背后還隱藏著很多活動和過程。這就需要經過有效地分析和設計過程來描述,下面我們將從不同的角度進行探討。

A.這里面有什么事物?

要分析問題,首先要找到問題中所包含的事物。在本案例中,可能存在月老、小伙、姑娘、戀人、玫瑰花等各種人/物或事件。

B.每個事物看上去是什么樣的?

找到這些事物后,本步就要分析每個事物的特征,以認識和理解事物本質。在本案例中,每個事物可能的特征為:月老——看上去有些年紀了、挺熱心;小伙——看上去很強壯、很誠實;姑娘——看上去很漂亮,還很溫柔;戀人——看上去很黏糊,最終結婚了;玫瑰花——火紅火紅的。

C.每個事物能做什么?

認識這些事物后,本步要分析這些事物的能力,以完成特定的事情。在本案例中,每個事物的能力有:月老——牽線搭橋,介紹兩人認識;小伙——獻花追求,表達愛意;姑娘——仰慕傾情,以身相許;戀人——交往,結婚;玫瑰花——令姑娘心動,傳情示愛。

D.這些事物都在什么地方?

分析完這些事物本身的特征和能力后,本步就要安排這些事物出場,為此還要定義每個事物所處的位置。在本案例中,月老可能在婚介所或交友網站;小伙可能在軟件園工作;姑娘可能在醫院工作;而戀人則可能出現在電影院;玫瑰花可以在花店,也可以在小伙或姑娘的手中。

E.這些事物之間有什么關系?

安排好所有事物后,為了能夠有效地完成事情,還需要分析他們彼此之間的關系,以便彼此合作。在本案例中,可能的關系如表1-1所示。

表1-1 各元素之間的關系

F.這些事物是怎么完成整件事情的?

最后就是我們的重頭戲——要利用前面的那些事物及事物之間的關系,完成整件事情。完成本案例的過程如下所示。

(1)月老牽線搭橋,介紹小伙和姑娘認識。

(2)姑娘和小伙一見鐘情,成為一對戀人。

(3)一對戀人開始交往。

(4)小伙用獻花表達對姑娘的愛意。

(5)姑娘收到999朵紅玫瑰,心情無比激動。

(6)小伙真心求婚,姑娘以身相許。

(7)一對戀人終于走入婚姻殿堂。

1.5.2 用面向對象思維分析案例

第1.5.1小節中用通俗的語言展示了分析問題的6個方面(A~F)。而在面向對象的方法中,分析問題的思路還是一樣的,只是引入了相應的術語來表達分析維度。

A.這里面有什么事物?(類和對象)

本案例中的類為:小伙、姑娘、月老、戀人、玫瑰花。

B.每個事物看上去是什么樣的?(類的屬性)

每個類都有自己的屬性,每個對象都有一個相應的屬性值。小伙屬性:體格,屬性值:強壯;姑娘屬性:性情,屬性值:溫柔;月老屬性:年紀,屬性值:較大;戀人屬性:關系,屬性值:初戀。玫瑰花:顏色;屬性值:紅色。

C.每個事物能做什么?(類的操作)

每個類都具備操作功能,而其對象利用這些操作完成相應的行為。小伙:追求、送花、娶親;姑娘:愛慕、相許、出嫁;月老:牽線搭橋;玫瑰花:示愛。

D.這些事物都在什么地方?(類的狀態、部署)

每個類的對象都會有它合理的或者必需的空間位置和邏輯位置。尤其當這些位置對對象的行為造成重要影響的時候,表明它們的位置極其重要。在本案例中,列出的位置對故事主要情節沒有太大的影響,系統可以不予考慮。

E.這些事物之間有什么關系?(類之間的關聯)

類之間的關系非常多,根據面向對象的觀點,一般將類之間的關系主要分為三類:協作關系(關聯),甲會對乙做什么(如月老和小伙、姑娘的關系,小伙和玫瑰的關系,小伙和姑娘的關系);整體—部分關系(聚合和組合),甲是乙的一個組成部分(如戀人和小伙的關系,戀人和姑娘的關系);抽象—具體關系(泛化),甲是乙的一個特例(如人和小伙的關系,人和月老的關系,人和姑娘的關系)。

F.這些事物是怎么完成整件事情的?(類之間的交互)

每個類都會盡量利用伙伴的能力;類之間分工協作,互通信息,共同完成整體的目標,這是面向對象的分析和設計的核心。第1.5.3小節我們將通過特定的工具(UML)表達整個完成事件的過程。

1.5.3 利用UML表達分析結果

前面兩小節是通過文字的形式呈現了分析問題的過程。而在面向對象的方法中,還有更好的方式呈現這個過程,這就是建模——采用UML進行建模。

◆ 為了描述整個系統中的靜態關系,采用UML類圖。圖1-12中的類圖則代表了完整故事情節的靜態模型。

圖1-12 反映結婚過程的靜態類圖

◆ 為了理解整個事情的業務流程,可以采用UML活動圖。圖1-13中的活動圖描述了整個事情的發生經過。

圖1-13 反映結婚過程的活動圖

◆ 為了對每個活動的細節進行詳細分析,可以采用UML順序圖。圖1-14中的順序圖描述了初次見面的情節。

圖1-14 初次見面的順序圖

◆ 為了能夠理解在活動系統中各個參與對象之間的關系,可以采用UML通信圖。圖1-15中的通信圖還是描述了初次見面的情節,不過它更關注參與對象之間的協作。

圖1-15 初次見面的通信圖

◆ 為了了解某個對象內在的變化過程,可以采用UML狀態圖。圖1-16的狀態圖展示了戀人關系的發展歷程。

圖1-16 戀人關系發展的狀態機圖

主站蜘蛛池模板: 卢湾区| 宁南县| 顺昌县| 绵竹市| 石门县| 如东县| 定结县| 德江县| 河源市| 卫辉市| 康定县| 砀山县| 广灵县| 凤翔县| 松江区| 上林县| 启东市| 云南省| 汉沽区| 秦皇岛市| 中山市| 阿勒泰市| 简阳市| 临洮县| 铜山县| 南和县| 通河县| 平度市| 桂平市| 建水县| 拉萨市| 霍邱县| 慈利县| 雅安市| 乌苏市| 武强县| 抚松县| 海门市| 同德县| 通道| 泗水县|