当前位置 : 主页 > 手机开发 > 其它 >

oop – 是否使用has-a(组合)或is-a(继承)对汽车对象(及其部件,如引擎)进行建模?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我正在开发一个包含Car对象的类库. 困境是,汽车本身将是一个类别,如注册号码和汽车的其他一般信息. 但是汽车有发动机,底盘等.这些物体也需要建模.它们应该是嵌入汽车的课程吗?如
我正在开发一个包含Car对象的类库.

困境是,汽车本身将是一个类别,如注册号码和汽车的其他一般信息.

但是汽车有发动机,底盘等.这些物体也需要建模.它们应该是嵌入汽车的课程吗?如果没有,嵌入式类的使用场景是什么?

我已经知道组合是“的一部分”,所以你可以模拟单独的类并使用引擎类型,例如,在汽车的现场级别来实现这一点.然而,“聚合”,其与在ctor中传递的类型“具有”关系,也适用(汽车“具有”引擎).

我该走哪条路?

编辑:我目前正在做作业因此缺乏回复.该类库适用于基于汽车的Web应用程序.我是一名专业的开发人员(我以.NET开发为生,但作为一名大三学生)所以这不是一个功课问题.

谢谢

这真的取决于你的应用程序.

例如,您可以将轮子实现为单独的类,包含有关轮胎在哪个轮胎上的信息,磨损程度等等,但如果您的应用程序甚至不关心轮子,则整个课程都是浪费代码.

我可以看到三个组合用例:

>拥有阶级变得过于复杂,应该被打破.
>拥有类具有一组可以映射到类的属性的多个副本.这允许您将所有这些属性绑定在一起.
>可能需要与拥有它的对象分开检查或考虑所包含的对象(例如,您可能希望将Engine对象移动到另一辆车),或者可以将其替换为单个单元.

总结:使用组合作为封装复杂性或消除重复的工具.如果它不能用于其中一个目的,那么可能不值得为它做一个新课程.

网友评论