這次的作業好幾位同學提出問題, 這是非常好的現象, 大家一起學習比起自己一個人鴨子划水要有效率得多, 競爭性的學習基本上是犧牲大多數來得到少數人優秀的表現, 不是很適合大家的現狀, 有同學願意貢獻一下問題, 才能有合作式的學習, 我也整理一下相關的討論分享給大家, 有討論才有進步, 如果覺得還是沒有得到解釋的同學, 請繼續提出你的問題來

如果我不用 Rect::contains 而是直接在 Point::isInside 裡面直接判斷, 這樣可以嗎?
你是問作業可不可以, 還是問設計上可不可以
作業
 
  設計上應該是可以的, 作業的話既然要求做那個界面就作吧
請問 Point 類別裡面的資料成員 x 跟 y 設成 public 適合嗎?
如果Point物件只是存放 x, y, 沒有提供其它的功能,所以要如何處理 x 和 y 完全是使用這種 Point 的人定的, 那麼public 應該沒有問題, 但是如果 Point 有提供功能 (就是有設計一些介面), 那麼其他模組直接改 x, y 就有可能破壞這些介面的運作, 那就不適合作為 public
我設成 private, 但是我卡在檢查有沒有超出邊界, 不知道該如何讓 Point 跟 Rect 互相使用它們的資料
這的確是個問題, 需要根據需求決定一下, 基本的解決方法如下
1. 做 accessor, 2. friend, 3. public
一個類別裡打開的權限基本上是越少越好, 但是太少了又覺得效率不好,這樣子的判斷在物件導向的程式裡面會一直重複出現,
擬很快就會發現沒有固定的答案, 甚至沒有最佳的答案, 選擇任何一個都會有一些獲得, 也會有一些損失
有些和整個程式運作效率有關鍵性影響的決策,其實也保留下來在測試的時候才調整, 只要單元測試的程式碼寫好,不會很怕整體的調整,多寫一個 accessor, 多做一個 friend, 把某些資料由一個類別裡搬到另外一個類別裡, 都是很常做的事

 

C++ 物件導向程式設計課程 首頁

製作日期: 04/30/2017 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615
海洋大學 電機資訊學院 資訊工程學系 Lagoon