我正在为像Uber这样的计程车应用程序创建一个面向对象的设计。我列出了一些课程。我在设计班级之间的行为方面有困难。例如,我有这两个类- Customer和Driver
顾客可以打电话给司机,司机可以接受顾客的搭便车要求。
所以我的想法是Customer类会有一个函数contactNearByDrivers()。Driver类将有一个类似于getRideRequest()的函数
我有两个问题-
CustomerDriverInteraction。这个类实际上将具有与司机联系和记录他们的响应的功能。contactNearByDrivers()函数在Customer类中将实例化CustomerDriverInteraction并调用其函数。这是个很好的方式吗?Ride的类吗?Ride类将有一个Customer和Driver对象作为它们的成员,以及其他字段。这个方法正确吗?设计它的更好方法是什么?发布于 2017-01-11 07:20:09
您的第一个问题可以通过为“运营总部”添加另一个抽象来解决,让我们调用类Headquarter。这个程序可以负责联系驱动程序,但是它不会是一个“实用程序类”,也不会被contactNearByDrivers实例化。相反,它将被实例化一次,它将被告知所有汽车的位置,每个客户都可以持有一个参考总部,要求在那里搭便车。
对于第二个问题:这取决于您希望在模型中支持的用例。如果您唯一的用例是“为位于附近的客户寻找免费汽车”,那么就不需要使用Ride类了。但是,如果你的目的是编写一个程序,它可以计算一次乘车的费用,或者对过去执行的乘车情况做一些记账,那么你可能需要一个。
我强烈建议循序渐进地这样做。不要“提前”模仿太多这样的课程。试着实现第一个用例,比如“驱动程序注册/取消注册”--你只需要两个类就可以了。在下一次迭代中,实现用例"customer要求headquearter搭便车“,并找出实现这个过程所需的类。如果您对正确的类建模,如果您对它们进行了正确的建模,那么最简单的测试就是它们是否帮助您实现您的程序,以及如果模型最终不包含任何您的程序实际上不需要的内容。
https://softwareengineering.stackexchange.com/questions/339941
复制相似问题