0

我是面向对象编程的新手,我正在学习这些概念。现在我只需要在逻辑上组织课程方面的帮助。我能弄清楚的关于方法、属性和构造函数的部分。我被分配了以下问题。

Holiday Travel Vehicles 销售新的休闲车和旅行拖车。当新车到达 Holiday Travel Vehicles 时,会创建一个新的车辆记录。新车辆记录中包括车辆序列号、名称、型号、年份、制造商和基本成本。当客户到达 Holiday Travel Vehicles 时,他或她会与销售人员协商购买车辆。商定购买后,销售人员会填写销售发票。发票总结了购买情况,包括完整的客户信息、以旧换新车辆的信息(如果有)、以旧换新津贴以及所购车辆的信息。如果客户要求经销商安装选件,它们也会列在发票上。发票还总结了协商价格,加上任何适用的税费和许可费。交易以销售发票上的客户签名结束。

到目前为止,我想做的是使用客户和车辆子类制作发票超类,因为发票上包含车辆信息和客户信息。但是,由于车辆在到达经销商处时会获得记录,因此我还考虑使用子类旅行拖车和 RV 将车辆作为自己的类,因为一种涉及发动机,而另一种则不涉及。但是,如果我在发票中做车辆记录和车辆信息,我不能同时将车辆作为其自己的类和发票的子类。(如果我所说的一切没有意义,对不起,我真的很困惑。)那么我应该如何安排这些课程呢?我真的迷路了。

4

3 回答 3

2

Holiday Travel Vehicles 销售新的休闲车和旅行拖车。当新车到达 Holiday Travel Vehicles 时,会创建一个新的车辆记录。新车辆记录中包括车辆序列号、名称、型号、年份、制造商和基本成本。当客户到达 Holiday Travel Vehicles 时,他或她会与销售人员协商购买车辆。同意购买后,销售人员会填写销售发票。发票总结了购买情况,包括完整的客户信息、以旧换新车辆的信息(如果有)、以旧换新津贴和所购车辆的信息。如果客户要求经销商安装选件,它们也会列在发票上。发票还总结了最终协商价格,以及任何适用的税费和许可费。

  1. 识别本场景中描述的数据实体(您应该找到六个)。当客户第一次从 Holiday Travel Vehicles 购买时,他们会被分配一个客户 ID。记录客户的姓名、地址和电话号码。以旧换新车辆由序列号、品牌、型号和年份描述。经销商安装的选件由选件代码、描述和价格描述。

  2. 为每个实体制定一个属性列表。每张发票将仅列出一个客户。一个人在购买车辆之前不会成为客户。随着时间的推移,客户可能会从 Holiday Travel Vehicles 购买许多车辆。每张发票只能由一名销售人员填写。一个新的销售人员可能没有卖过任何车辆,但有经验的销售人员可能已经销售了很多车辆。每张发票只列出一辆新车。如果库存中的新车尚未售出,则不会有发票。车辆售出后,只有一张发票。客户可能决定不向车辆添加任何选项,或者可以选择添加许多选项。一个选项可能在没有发票上列出,也可能在许多发票上列出。客户在购买新车时最多只能交易一辆车。以旧换新的车辆可能会出售给另一位客户,后者随后将其换到另一辆假日旅行车辆上。

  3. 根据 Holiday Travel Vehicles 现行的这些业务规则,绘制 ERD 并记录具有适当基数和模态的关系

于 2012-11-16T13:13:21.903 回答
1

将车辆和客户作为发票的子类并没有多大意义。我认为您想要的是创建一个车辆类和一个客户类,然后在您的发票类中,您可以保存一个车辆对象的实例和它所指示的客户对象。

public class Invoice {
    private Vehicle MyVehicle;
    private Customer MyCustomer;
    //...etc
}

public class Customer {
    private String FirstName;
    //...etc
}

public class Vehicle{
    private String Model;
    //...etc
}

对于旅行拖车和房车类,子类车辆更有意义,因为它们本质上是一种车辆,因此将与车辆共享许多共同变量。您需要问自己的问题是其他is东西(房车is和车辆)还是points其他东西(发票有对车辆的引用)。我希望这很清楚,这绝对是我记得第一次学习它时遇到的困难。

于 2012-09-04T20:27:49.253 回答
0

我可以给你一个提示,当你注意到一些元素共享特性时,总是使用继承,虽然只共享一个特性,使用继承。现在你只能看到一个共同的特征,但也许有一天你会注意到它们共享不止一个。

我可以说的另一件重要的事情是,您不应该构建不相关的元素的层次结构,例如,您不应该构建超类车辆和两个子类 car 和 horse,也许您认为它们共享某些功能,但它们不在同一类别的元素中,在这种情况下,更深入地研究层次结构会更好。

与继承有关的另一个重要的事情是多态性和动态绑定的概念,非常有用。

希望对你有用

于 2012-09-04T21:02:14.453 回答