一个班级里面有多少个对象太多了?

Ada*_*eck 3 .net vb.net oop object

我对OO编程的概念还是比较陌生的 - 实际上是编程,因为我还是学生.我目前在一个部门的实习生工作,让我编写一个新的结构,可能是他们所有应用程序的基础.所以我相信我有OO背后的想法,你创建"基本构建块",然后扩展,扩展和扩展,直到你到达最复杂的对象(暂时).

我需要将所有这些"高级"对象合并为一个,但有多少是太多了?如果它需要所有这些"部件",我可以在这个更大的对象内部有100个对象.

我真的希望这个问题对每个人都有意义.我确定答案不会是一个明确的答案,但我只需要一个经验法则就可以了.如果有更好的设计/编程技术,我真的很讨厌在一个大的内部有100个对象.

谢谢.

编辑1:非常感谢您的回复,但我仍然有点不清楚.我已经标记了一个答案,因为我觉得我可以继续我拥有的东西,但......

让我继续我的人类实例.人类由许多部分(或物体)组成,每个部分也由部分组成,一直到单个细胞.

人类 - >手臂 - >手 - >手指 - >拇指 - >骨骼 - >骨细胞

人类:ojbLeft_Arm,objRight_Arm,objLeftLeg,objRightLeg,objBrain,objHeart,objLeft_Eye,objRight_Eye ....得到我的观点?人体物体内有多少物体太多了?显然,由于人类非常复杂,因此人类对象将被认为是巨大的.你是否将Arm和Leg物体分解成objLimbs然后存储它们?

我想另一个问题是:如果你不想要很多物品,你如何避免它们?

Pau*_*ier 9

单个对象内的100个对象并不是严格不合适的,但它肯定表明可能有更好的方法.考虑将类似对象分组为复合对象,其中功能类似于最终"超级对象"中的用法.根据经验,您在类中引用的对象数量是对该对象复杂性的(粗略)估计; 100表示​​复杂性太高.请注意,您可以通过将对象组合在一起成为复合对象来降低有效复杂性,从而增加整体对象数,但减少"superobject"中的直接引用计数.

编辑以响应OP的编辑和问题:分组的关键在于您的预期用途和问题域.考虑你的人类榜样; 对象模型的适当细分实际上取决于您的数据模型的用途.这里的关键是认识到你并不是要代表所有可能的对象或潜在的现实; 您正在创建适合您的预期用途的表示.例如,如果您正在为心脏病专家建模人类,那么拥有一个Human对象可能是合适的,在该对象下您将拥有一个Heart对象,一个Circulatory System对象等; 在心脏对象下你可能有左心室,右心室等.然而,对于牙医来说,你的模型仍然会有一个人在顶部,但人类可能会在下一级有一个牙齿集合; 牙齿可能包括犬齿,门牙等物体.

这里的关键点是底层对象(人类)是相同的; 表示完全不同.你的心脏病专家并不关心你的牙齿,你的牙医也不会同心你的心室. 用法定义表示. 因此,对于您的情况,您必须确切地确定您的用法是什么,并且该用法可以(希望)定义表示的清晰路径.