討論區快速選單
知識庫快速選單
軟體開發過程中有哪些資安漏洞? 傑米的攝影旅遊筆記 網路投保旅行平安險
[ 回上頁 ] [ 討論區發言規則 ]
物件導向是種很棒的觀念 大家該熱烈討論呢
更改我的閱讀文章字型大小
作者 : nomad_libra(流浪天秤)
[ 貼文 22 | 人氣 3803 | 評價 100 | 評價/貼文 4.55 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/10/30 下午 08:32:59
物件導向是種很棒的觀念 大家該熱烈討論呢
不管是 系統, 問題的分析, 物件設計的技巧都是非常耐人尋味的問題呢
各位高手大大們 你們說是嗎  =^_^=
作者 : ufjl1572(Arthur)
[ 貼文 26 | 人氣 346 | 評價 220 | 評價/貼文 8.46 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/10/31 上午 12:16:52
>物件導向是種很棒的觀念 大家該熱烈討論呢
>不管是 系統, 問題的分析, 物件設計的技巧都是非常耐人尋味的問題呢

的確如此。
一般人從OOP入門,不外乎談封裝、繼承、多型,外加一些現代語言的特性如Exception處理等,比結構化語言好用了許多。

但是對於以物件導向觀念進行分析,或者思索系統架構,所用的技巧層次就更深的多了。打個比方,這好比是畫家把心中的意念、創造、或者認知,在空白的紙上,一步步塑造成形,畫有寫生、有抽象,不盡然像照相機一般,只忠實錄下光影的痕跡,而是呈現畫家心中世界物件的互動。有趣吧。
作者 : nomad_libra(流浪天秤)
[ 貼文 22 | 人氣 3803 | 評價 100 | 評價/貼文 4.55 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/10/31 下午 12:04:44
與我心有同感呢 =^_^=
作者 : j8934hf93(asfdfasf)
[ 貼文 42 | 人氣 4532 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/20 上午 11:20:32
那在來你們要討論那個主題???
作者 : jaulong(松谷子)
[ 貼文 61 | 人氣 454 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/26 下午 11:28:24

>那在來你們要討論那個主題???

我想大家願不願意討論何時該用  繼承,
何時該用覆合(composition)...? :)
作者 : loveseeker(love seeker)
[ 貼文 135 | 人氣 1743 | 評價 150 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/26 下午 11:46:39
目前普扁被接受的說法似乎是:
如果存在has-a的關係時用compositon,如果存在is-a的關係時用inheritance
作者 : ufjl1572(Arthur)
[ 貼文 26 | 人氣 346 | 評價 220 | 評價/貼文 8.46 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/27 下午 07:48:46
>目前普扁被接受的說法似乎是:
>如果存在has-a的關係時用compositon,如果存在is-a的關係時用inheritance

以Refactoring角度來看,這是一種取捨(Trade-Off),一種技巧,沒有定論。
以Design Quality角度來看,Composition優於Inheritance,因為類別之間的耦合度較低。
以OO Modeling的實務來看,除了少數例外如Composite Pattern應用,一般極少使用繼承,要不然沒兩下子,就會發現Class Diagram上充斥著Multiple-Inheritance或是Interface之類的符號。
以OOA的語意來看,Inheritance是一種思考的方向,但通常可以用Compositon取而代之。繼承本身傳達的語意很少,君不見只有Relationship才需要命名。一個最極端的情形是,全系統的模塑就是一個樹狀的類別繼承圖(其實還蠻常見的)。語意是OO思維的命脈,所以繼承少用為宜。
怪了,那繼承用於何處?有多型需求的Framework就用得上了。
作者 : loveseeker(love seeker)
[ 貼文 135 | 人氣 1743 | 評價 150 | 評價/貼文 1.11 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/27 下午 10:05:09
您的分析,我認同,但是這些分析中,似乎未以物件間的的關係作為闡述的角度,所以,駑鈍如我,仍然無法看出「具有has-a的關係時採用composition,具有is-a的關係時使用inheritance」是否有所不妥,也就是說「圓 is a 形狀」較好,還是「圓 has a 形狀」較好?「車子 has a 引擎」較好,還是「車子 is a 引擎」較好?

如果描述觀念的工具能與直覺配合就被認為是較好的工具的話,個人可能會作這樣的選擇:
「圓 is a 形狀」較「圓 has a 形狀」好,「車子 has a 引擎」較「車子 is a 引擎」好。
作者 : ufjl1572(Arthur)
[ 貼文 26 | 人氣 346 | 評價 220 | 評價/貼文 8.46 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/11/28 上午 09:31:44
> 駑鈍如我,仍然無法看出「具有has-a的關係時採用composition,
> 具有is-a的關係時使用inheritance」是否有所不妥,

哈哈,我也沒辦法。... 我想關鍵還是得看要模塑的對象而定。

> 也就是說「圓 is a 形狀」較好,還是「圓 has a 形狀」較好?
>「車子 has a 引擎」較好,還是「車子 is a 引擎」較好?

舉例來看吧,如果模塑的主題是『形狀』,像是繪圖軟體的工具欄,
會有許多圓形、矩形、多邊形之類的『形狀』,這時重要的是,
『形狀』類別必須提供Draw/Erase/Move/...的功能,讓畫布的管理
物件呼叫。這些功能是『形狀』子類別需以多型(polymorphism)
形式製作的,這時採用繼承架構,似乎是妥當的。此處重點是,我們
以Parent Class為主題,以Polymorphism為運作策略。

不用繼承則用關聯,例如「圓 has a 形狀」,此時『形狀』形同
Strategy Pattern 或是 Decorator Pattern,例如其功能可以設定
實線/虛線、寬度、顏色等。當然,「矩形也可能has the same形狀」。
此處,我們視圓、矩形為獨立的類別物件,而『形狀』也有獨立意義。

還有其他種變化型,例如以『形狀』做為Folder,旗下1-To-M管理
許多『具體形狀』物件。而每個『具體形狀』類別有一個屬性欄位,
載明其為圓形、矩形、多邊形等。此處的重點是,我們不在乎不同
的『具體形狀』能提供不同的功能,而重視他們的存在紀錄。

總結一下,OOP的技巧讓我們可以用多種不同方的式達成相同的功能。
但是在分析時總是要有一定的策略進行選擇與平衡,關鍵在於我們對
於所謂《主題》的重視程度,也就是語意的強度啦。個人淺見,酌参。
作者 : moo(臭蟲) 貼文超過200則
[ 貼文 460 | 人氣 6646 | 評價 1190 | 評價/貼文 2.59 | 送出評價 19 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2002/12/24 下午 11:19:18
根據Liskov Substitution Principle,
用inheritance必用polymorphism,
不用polymorphism的inheritance沒有意義,

以C++為例,
如果打算用public inheritance,
但是base class卻寫不出一個virtual function,
或是subclass找不到substitution的應用,
那inheritance可能就用得不恰當.
作者 : enetsmail(Nets)
[ 貼文 107 | 人氣 2715 | 評價 260 | 評價/貼文 2.43 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2003/7/9 上午 02:05:51

>>目前普扁被接受的說法似乎是:
>>如果存在has-a的關係時用compositon,如果存在is-a的關係時用inheritance
>
>以Refactoring角度來看,這是一種取捨(Trade-Off),一種技巧,沒有定論。
>以Design Quality角度來看,Composition優於Inheritance,因為類別之間的耦合度較低。
>以OO Modeling的實務來看,除了少數例外如Composite Pattern應用,一般極少使用繼承,要不然沒兩下子,就會發現Class Diagram上充斥著Multiple-Inheritance或是Interface之類的符號。
>以OOA的語意來看,Inheritance是一種思考的方向,但通常可以用Compositon取而代之。繼承本身傳達的語意很少,君不見只有Relationship才需要命名。一個最極端的情形是,全系統的模塑就是一個樹狀的類別繼承圖(其實還蠻常見的)。語意是OO思維的命脈,所以繼承少用為宜。
>怪了,那繼承用於何處?有多型需求的Framework就用得上了。
>

我個人是覺的,物件導向並沒有一定的定論,怎麼做是見人見智。
所以這種東西通常是爭論不休,你認為這樣比較好,我則認為那樣比較好,結果二種方法開發出來都具有程式分明,容易修改、擴充、重複利用的優點。二個人在爭個沒完沒了,結果證明出來大家都是對的。
 板主 : Clark
 > 物件導向程式設計 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 物件導向程式設計 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
物件導向程式設計
1 Arthur 180 
2 藍色LED 150 
3 長長 100 
4 Linkin 100 
5 love seeker 100 
6 Raymond 90 
7 Nets 80 
8 nop 70 
9 Huah 70 
10 矇矇 60 
物件導向程式設計
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125