Re: [分享] 面向對象編程從骨子裡就有問題
※ 引述《mgtsai ()》之銘言:
: 標題: Re: [分享] 面向對象編程從骨子裡就有問題
: 時間: Sat Feb 23 02:38:59 2013
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 114.32.58.129
: → atst2:個人認為這例子是物件責作規劃的問題, OOP也不是說一種問題 02/23 11:20
: → atst2:而光從m_worldTransform從名稱上來看,也不太像是一個object 02/23 11:23
: → atst2:應有的屬性. 我個人是認為,設計是一個整體面向的東西,光以 02/23 11:24
: → atst2:部分的設計來討論OOP的概念的極限,其實很難有一個明確結果. 02/23 11:25
: → atst2:大概最後也是各說各話吧? - -a 02/23 11:26
: → atst2:補充第二行....一種問題不會只有一種設計.. 02/23 11:28
我同意一個問題不會只有一種設計
----------
先回答你的 m_worldTransform 是不是屬於 Object 屬性的問題
我先前沒有把整個範例程式寫出來,而在投影片的範例中,物件會拆成一堆子物件
而整個物件,是以一大堆子物件與孫物件等等所構成的一個樹狀結構
在範例中,其中一行程式碼是:
this->m_worldTransform = parentTransform * this->m_Transform;
在 computer graphics 領域
parentTransform 是指父物件整體空間中的位置與方位
m_Transform 是指子物件相對於父物件的相對位置與相對方位
兩者矩陣相乘的結果 m_worldTransform,就是子物件在整體空間中的位置與方位
而 m_worldTransform 的值最後會塞進 GPU 中將每個子物件在螢幕上畫出來
這種作法沒有太大的 argue,唯一可以說嘴的是變數名稱取得夠不夠好罷了
當整個物件在空間移動或旋轉時,會造訪整個物件樹
由最上層的根物件一層一層利上述算式計算出每個子物件 m_worldTransform
所以,m_worldTransform 代表某個特定時刻子物件在空間中的位置與方位
在概念上屬於子物件的屬性,本身沒有太大的問題
----------
當然,一個問題不會只有一種設計,只是在 performance incentive 的部分
像範例中要計算每個子物件在空間中的位置與方位
資料面的結構設計所造成的 performance impact 太大
以致於我們得要重新檢視原本的純 OOP 寫法是否洽當的問題
投影片的作者在裡頭推銷 Data Oriented (DO) 的觀念,有別於一般的 OO
好不好用我自己不予評論,但至少在那裡頭點出了另一種架構設計的思維
在 performance incentive 的部分,資料本身的結構設計應擺在 OO 之前
結構定型了之後,再考慮如何包裝成 OO
我是建議先花點耐性看完整個投影片,會更清楚作者的論述
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.84.29
※ 編輯: mgtsai 來自: 122.116.84.29 (02/23 15:11)
推
02/23 15:44, , 1F
02/23 15:44, 1F
推
02/23 20:32, , 2F
02/23 20:32, 2F
→
02/23 20:33, , 3F
02/23 20:33, 3F
→
02/23 20:34, , 4F
02/23 20:34, 4F
→
02/23 20:36, , 5F
02/23 20:36, 5F
→
02/24 00:15, , 6F
02/24 00:15, 6F
→
02/24 00:15, , 7F
02/24 00:15, 7F
→
02/24 00:16, , 8F
02/24 00:16, 8F
→
02/24 00:16, , 9F
02/24 00:16, 9F
推
02/24 01:16, , 10F
02/24 01:16, 10F
推
02/24 01:19, , 11F
02/24 01:19, 11F
→
02/24 04:25, , 12F
02/24 04:25, 12F
→
02/24 04:26, , 13F
02/24 04:26, 13F
→
02/24 04:27, , 14F
02/24 04:27, 14F
→
02/24 04:30, , 15F
02/24 04:30, 15F
→
02/24 04:31, , 16F
02/24 04:31, 16F
→
02/24 04:32, , 17F
02/24 04:32, 17F
推
02/24 10:53, , 18F
02/24 10:53, 18F
→
02/24 10:54, , 19F
02/24 10:54, 19F
→
02/24 10:58, , 20F
02/24 10:58, 20F
→
02/24 11:00, , 21F
02/24 11:00, 21F
→
02/24 11:03, , 22F
02/24 11:03, 22F
→
02/24 11:04, , 23F
02/24 11:04, 23F
→
02/24 23:24, , 24F
02/24 23:24, 24F
→
02/24 23:25, , 25F
02/24 23:25, 25F
→
02/24 23:25, , 26F
02/24 23:25, 26F
→
02/24 23:26, , 27F
02/24 23:26, 27F
→
02/24 23:26, , 28F
02/24 23:26, 28F
→
02/24 23:26, , 29F
02/24 23:26, 29F
→
02/24 23:27, , 30F
02/24 23:27, 30F
→
02/24 23:27, , 31F
02/24 23:27, 31F
→
02/24 23:27, , 32F
02/24 23:27, 32F
→
02/24 23:28, , 33F
02/24 23:28, 33F
推
02/25 00:12, , 34F
02/25 00:12, 34F
→
02/25 00:12, , 35F
02/25 00:12, 35F
討論串 (同標題文章)