iT邦幫忙

DAY 24
6

程式設計心法系列 第 24

程式設計心法:23.物件導向設計的步驟

  • 分享至 

  • xImage
  •  

物件導向設計的方式,強調的是直覺易懂的方式,貼近實際的狀況。所以在命名的時候,多以貼近實際的名稱來做為物件的命名。

當然,如果要討論到 UML,則超出本系列與本人的層級了。更何況,沒有像 Rational Rose 或 ALM(Application Life-Cycle Management)之類的物件導向建構工具,UML 也只是流於紙上作業,或許對分析上有用處,但並沒有享受到整體開發上的好處。(僅個人觀點)

所以,本篇要介紹的,一樣是相當基本的建構步驟。
.決定物件及其屬性
要決定系統中要有哪些物件,首先要瞭解我們要解決什麼問題,以及會面對的對象(可能是員工、客戶、帳單等等)。決定好物件之後,我們要賦予每個物件的內部屬性(屬性是指我們會用到的資訊,如果不知道怎麼下手,那把帳單拿來看一下吧!)。如:帳款總額、客戶姓名、帳單日期等等),多練習幾次,就可以漸入佳境。

.決定物件的動作
例如帳單金額的結算、更改帳單地址、列印帳單等等,這些都是我們決定物件動作的一些思考方式,動作定義出來,就可以依據屬性的內容進行相關的運算動作,並將結果記錄到另外的屬性中,這都是物件設計時常會運用的方式。

.決定物件間的關係
如果我們設計的只是單一物件,那麼也不需要做什麼管理,直接拿來使用即可。但是,如果我們定義了很多物件,而個物件之間又有其相關性時,物件之間的管理,則就顯得重要了。利用開方工具提供的 Class Diagram 來管理物件,是一個不錯的方式,而且可以看出物件之間的交互關係。

.決定物件可公開的資訊
決定物件所提供的公開資訊(宣告成 Public),可以保護內部資料不會受到外界的干擾,或只能透過公開的界面與內部資料溝通。對於使用物件的人來說,則不用負擔過多的資訊,達到 Information Hiding 的目的。

.決定每個物件的界面
這部份其實是最難的部份了,因為不好定義。還好以目前的程式語言,是可以忽略掉這一段的。因為如果我們沒有定義 Interface,Compiler 會自動幫我們產生 Interface 的定義出來,我們的程式,基本上都是實際的 Implement。

物件的設計,並不是一次就到位的,他可能隨著程式的發展,或需求的變更,不斷的演進或更動其內容,重點就是貼近真實的情況。也比較不會有系統發展到最後,跟原來的樣貌差距很大的情況發生。

本系列文章


上一篇
程式設計心法:22.物件?了了沒?
下一篇
程式設計心法:24.練習曲
系列文
程式設計心法31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
pantc328
iT邦高手 1 級 ‧ 2009-10-30 09:54:21

你這有順序關係嗎?
我的順序:
1.決定物件的介面.一個介面訂出來.就會產生很多相關功能的物件.就會產生程式多型.元件抽換,程式降偶...很多很好玩,有趣的事發生.這也是決定一個系統分系師好不好的地方.而這屬於設計階段.這個設計完,才會有其他實作的Class出來.

2.建空白的Class.並命名它.

3.決定Class間的關係.

4.決定Class的屬性.為什麼其他的先做.比如很多時候如訂單.他裡面的客戶資料並不只有客戶名稱,它還有客戶地址,客戶信用率...資訊.你在這裡的屬性就不是三個欄位.而是只有一個客戶欄位.然後由客戶屬性去抓姓名跟住址資訊.由客戶屬性在經客戶屬性的會計屬性去抓信用資訊.

5.決定公開屬性.所有屬性設好,決定哪些公開.有些屬性只有這個Class內部使用就用private掉.這達到二個目的:1.讓Class更安全.2.達到封裝的效果.如果屬性是給本身使用或繼承類別使用就用protected.最後是公開屬性.目前以我熟的.net.一種是public 給其他class使用.一種是[DataMember],是件WebService.讓遠端程式,物件使用.

jamesjan iT邦高手 1 級 ‧ 2009-10-30 12:22:50 檢舉

這沒有順序關係的,而且會不斷的重複修改

0
海綿寶寶
iT邦大神 1 級 ‧ 2009-10-30 12:02:17

"也比較不會有系統發展到最後,跟原來的樣貌差距很大的情況發生。"

我好希望能夠在自己的專案中體會到這句話... ^_^

0
pantc328
iT邦高手 1 級 ‧ 2009-10-30 12:37:31

跟原貌差很多的.應該在設計階段.還不到這實作的階段.
以我的想法.
需求訪談後.就要做系統分析.
分析經確認後.就要做系統設計.系統設計就會產生範本.這範本包含UI範本.
這UI範本要經使用者確認.包含哪些資料.怎麼操作..
這邊如果過了,"跟原來的樣貌差距很大",機會就降低很多.
接著是實作.依UI範本的欄位.不管先設計Class再用工具轉DB.或DB轉Class都沒差.
最後把範本換成實體產品就可以去測試了.

我要留言

立即登入留言