0
A
回答
0
0
如果你想完全封裝形狀的想法,它不應該是一個層次結構,因爲宇宙中有無限多的形狀。相反,它應該只是一個Shape類。它應該由一系列線條和曲線組成。然後,你可以有方法來檢查它是否符合特定的形狀定義,例如IsCircle()
,IsSquare()
等...
您也可以有方法和/或構造函數,將其設置爲特定類型的形狀。
0
所有形狀都可能實現IShape
接口。 IShape
將需要Area()
方法和IsIntersectingWith(IShape otherShape)
方法。這個簡單化的觀點雖然提出了一些關於如何實現動態分派的其他問題(三角形/三角形交集需要與三角形/分段不同的算法)。
這當然假設你實際上需要這個功能。假設一個面向圖形的形狀庫,您可以定義像Rotate
,Translate
,Scale
這樣的轉換。您也可以強制使用Union
,Intersect
或其他任何設置操作(但這兩者可以表達您可能需要的所有內容)。
你也可以基於計算幾何的東西,並提供方法功能,將任何IShape
轉換成Polygon
。
我的意思是,可以通過IShape
執行的功能應該遵循預期的用途。如果你沒有任何預期的用途(因爲它的教育開始),你應該使用作爲練習本身的一部分,或作爲發現領域(如何使用,或使用,我們可以表達所有這些功能在一個界面中,或者我們應該把它分成很多)
相關問題
- 1. 層次模型
- 2. cakephp模型層次
- 3. Laravel ORM模型的層次?
- 4. Laravel - 層次雄辯模型
- 5. 大廈層次模型C#
- 6. 如何複雜的層次結構和接口正確模型休眠
- 7. Rails的多層次模型的安全
- 8. NHibernate的Queryover多層次模型
- 9. 域模型中的專業化層次
- 10. Yii:正確使用授權層次
- 11. 正確地遍歷ViewController層次結構?
- 12. iText7深層次formField操作不正確,
- 13. 如何確定建成鄰接表模型表「嵌套層次」
- 14. 3DS模型加載 - 樹/層次結構
- 15. WPF - MVVM - 查看模型層次
- 16. WP模板層次
- 17. Wordpress模板層次
- 18. 正確的層次結構與正確的類修飾符getter和setter方法
- 19. 的Rails:模型層
- 20. MVC3正確使用模型
- 21. ZF模型正確使用
- 22. MVVM - 正確執行模型
- 23. 正確勾勒3D模型
- 24. 在java中正確處理類型層次結構的RPC機制
- 25. guice中的模塊層次
- 26. 根據glTF模型層次結構構建器構建實體層次
- 27. 帶類型參數的類型層次?
- 28. 無法使用類型爲'Shape *'的左值初始化類型爲'Shape Shape :: *'的返回對象
- 29. 正確的Hibernate層設計
- 30. 我的Firebase數據庫結構。這是正確的層次?
你打算使用形狀爲?他們應該有哪些共同的行爲,他們的行爲應該如何區別? –
我想模擬一個2d形狀(圓形,矩形等)3d形狀(球體等)的系統 – xdevel2000
xdevel2000:是的,但系統是什麼?面向對象建模是一項應該完全由您感興趣的行爲驅動的活動。在面向對象設計中對所有關於真實世界的模型進行建模是不可能也沒有意義的,您需要 - 也應該 - 只模擬對於您。爲此,您需要確定您正在設計的系統的目的。 –