【问题标题】:How to structure and organize nested classes如何构造和组织嵌套类
【发布时间】:2011-03-24 17:16:59
【问题描述】:

OOP 新手,渴望学习好习惯。

我想开设一个vectorMap 课程。 vectorMap 将具有一些属性并包含许多 polyLine 对象,而这些对象又将具有一些属性并由许多 xyPoint 对象组成。

用户将主要与vectorMap 对象进行交互,但有时可能希望在vectorMap 的上下文之外使用polyLinexyPoint 对象。

这是否意味着我应该创建三个单独的公共类?这是否意味着 VBA 中的三个单独的类模块,以及 Java 中的三个独立的 .java 文件?

我的程序直觉告诉我,三个单独的源代码文件用于三个小而简单的类,每个类只有几行代码,这会很不整洁。我习惯于源代码文件包含具有许多功能的包。按照这个速度,一个 VBA 项目将包含数十个类模块。但也许这就是它在 OOP 中的完成方式......

以上内容将在 VBA 和 Java 中实现,因此欢迎提供任何/两者中的任何示例。

【问题讨论】:

  • 您是否考虑过使用标准集合而不是滚动自己的集合?
  • java.util 怎么样?这个包中的类实现了各种集合:Lists、Map、Trees、Sets。

标签: java oop vba


【解决方案1】:

“简单的小班”是什么意思?我的意见是你应该为每个可测试的类使用一个新文件。如果(例如)XyPoint 只是一个包含 2 个元素的 touple,那么将它作为 PolyLine 的子类是一个好主意。
但是,据我所知 - PolyLine 和 VectorMap 应该位于单独的文件中,因为您无法真正告诉 A 仅对 B 重要,并且两者都是可测试的。
另外,在 java 中使用子类时,请注意它们的类型(静态/非静态、匿名..)并明智地选择首选。

附言。 Java 中的一个强约定是类名的开头是大写字母。
p.s.2:我认为这是出于教育目的,否则您应该(如@Ingo 所说)使用内置类,而不是重新发明轮子...

【讨论】:

  • 内置类,呃……你在想什么包?
  • “简单的小类” = 几行代码。每条折线只是 XyPoints 的集合,外加几个属性(海拔、线两侧的表面粗糙度......)。
  • 检查 java.util.HashMap 和 java.util.ArrayList (一般来说,它有助于了解 java.util.* 有什么......)如果粗糙度、高度......该类需要根据点进行计算(反之亦然) - 它是可测试的,因此应该有自己的类。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-28
  • 1970-01-01
  • 1970-01-01
  • 2015-07-03
  • 1970-01-01
  • 2018-02-15
相关资源
最近更新 更多