--
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
用oo來寫程式,來開發系統有什麼好處?oo大師booch在其大作
Object-oriented analysis and design with applications
提及,人類對付複雜系統的最好方式就是將其抽象化(abstraction)
,而class 正是拿來實作這種抽象化的方法.
再請問一下,那麼所謂的抽象化又是什麼呢?class是包括演算法嗎?
--
booch說abstraction focuses upon the essential characteristics
of some object ,relative to the perspective of the viewer
又說a key abstraction is a class or object that forms part
of the vocabulary of the problem domain .
舉個書上例子來說好了,當我們寫一個溫室控制系統,我們要考量的因素
有很多,溫度,濕度,肥沃度,等等,這時候我們從這個系統的problem domain裏,
取出一個叫sensor 的概念,有溫度的sensor,濕度的sensor等等,這時候你是
願意寫一堆function 來實作整個系統,還是寫一些sensor 的class來產生object,
他們有其自身的狀態值(data),行為(method),來幫助你管理整個系統(比如
說,溫度過高有回報值等)......
基本上class的method 就是由演算法構成....
心跳 <Dale...@cis.nctu.edu.tw> 次寫入到主題
<3TORj4$3...@bbs.cis.nctu.edu.tw>...
> ==> 在 qpwoeiru@cis_nctu (Talk__戰將) 的文章中提到:
> > ==> 在 Dalee@cis_nctu (心跳) 的文章中提到:
> > 用oo來寫程式,來開發系統有什麼好處?oo大師booch在其大作
> > Object-oriented analysis and design with applications
> > 提及,人類對付複雜系統的最好方式就是將其抽象化(abstraction)
> > ,而class 正是拿來實作這種抽象化的方法.
>
> 再請問一下,那麼所謂的抽象化又是什麼呢?class是包括演算法嗎?
> --
對於抽象化這一個名詞, 我的心得是:
當你要對一個事情或一個東西進行抽象化的動作時, 你就是所看到的部分
認為對你是重要的部分找出來,而不重要或不需要的部分則加以忽略.這就是
抽象化所要進行的工作.
譬如:如果今天叫你對杯子進行抽象化, 寫出杯子的類別出來.這時你會如
何做呢? 自己先想想十分鐘一下 .........
有些人可能會找出杯子的屬性是容量, 顏色, 有沒有握把, 材質等等, 而其
method可能是設定這些屬性的函式. 當然我想你可能會找出更多不同的花樣
出來. 但是如果今天你寫的是超商貨物管理系統,你的杯子屬性可能變成
價格, 庫存量等等, 由於在不同的角度下, 著重的重點不同, 抽象化的結果也
就不同, 因此在進行抽象化的工作時, 要先考量你要的重點, 方向是什麼?
然後才萃取出這事情或東西中, 對你有意義的屬性及method出來.
以上是我對抽象化的小小認知.
柯仁傑
p.s. 至於class的定義你可參考侯先生在'虛擬與多型'一書內的介紹
david <dav...@iii.org.tw> 次寫入到主題
<01be6b64$9a5f6fc0$4c8c5c8c@david>...
>
>
> 心跳 <Dale...@cis.nctu.edu.tw> 次寫入到主題
> <3TORj4$3...@bbs.cis.nctu.edu.tw>...
> 對於抽象化這一個名詞, 我的心得是:
> 當你要對一個事情或一個東西進行抽象化的動作時, 你就是所看到的部分
> 認為對你是重要的部分找出來,而不重要或不需要的部分則加以忽略.這就是
> 抽象化所要進行的工作.
>
修正一下:
當你要對一件事情或一個東西進行抽象化時, 你把這件事情中,
認為是重要的部分找出來, 而不重要或不需要的部分則加以忽略.
這就是抽象化所要進行的工作.
柯仁傑
既然你是在用交大資科 BBS 的, 何不先看看精華區?
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 練從難處練,用從易處用。
武 諺
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --