1

我认为这相对简单,但我只是很困惑,因为我是新的类图。

我即将创建一个关于管理麦当劳员工类型的程序(用 Java 编写)。因此,考虑对对象进行建模。

为简单起见,麦当劳只有两种类型的员工,“主管”和“船员”,两者都按月领取工资。此外,他们都根据情况获得不同类型的奖金(当然将来可能会改变)

所以,我通过创建一个具有属性的超类“Employee”开始建模

name
empId
salary

(方法......等)

顺便说一句,我把“CrewMember”和“Superviser”做成了它的子类。

所以我的困惑是,如果我以这种方式建模我的对象,我的“CrewMember”和“Superviser”类的实例怎么可能彼此不同?

请纠正我应该如何为我的课程建模。为了使班级区分,我还考虑在每个“船员”和“主管”上添加一种奖金,但我认为这不会灵活,如果将来奖金和奖金类型会发生变化。所以,我现在很困惑。

4

3 回答 3

3

主管和船员有什么区别?

至少我认为您需要在这两个班级之间建立关联,以模拟主管是一名或多名船员的老板。

如果有什么是主管做的,而船员却没有做,那么你应该在主管类中建模。

如果主管和船员之间没有区别,那么你不需要这两个类。

于 2012-10-23T10:35:30.480 回答
0

您好 :) 这个答案发布在我的 iPhone 上,但我稍后会更新!当您像员工一样创建超级类时,您只需在类图中通过一个从超级类到两个子类的简单箭头来显示它 - 我稍后会找到一个链接,请注意两个类是否无关紧要看起来相同,但是当图表完成时应该清楚!通常你在类图之前创建一个域模型来显示这些类型的继承

于 2012-10-23T10:41:00.927 回答
0

要将继承的概念用于泛化和特化案例,应该有一些动机来泛化/特化实体之间的差异。这称为鉴别器 - 它是一些不同的特征(行为或结构)。所以需要有一些只适用于上级/机组成员的功能,一些关联或属性。否则,在超类“Employee”中为“employeeType”建模就足够了。请注意,在大多数开发环境中添加继承的成本很高。当您尝试从模型到实现时,将会有额外的源代码、额外的文档、额外的表格、文件以及其他内容。

于 2012-10-23T21:10:47.947 回答