类图混淆(琐碎)

时间:2012-10-23 10:33:01

标签: java uml modeling class-diagram

我认为这相对简单,但我很困惑,因为我是班级图表的新手。

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

为了简单起见,麦当劳只有两种类型的员工,“Superviser”和“CrewMember”,两者都按月收取薪水。此外,他们都会根据情况(当然可能在将来发生变化)获得单独的奖金

所以,我开始通过创建具有属性

的超类“Employee”进行建模
name
empId
salary

(方法......等)

顺便说一下,我让“CrewMember”和“Superviser”成为它的子类。

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

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

3 个答案:

答案 0 :(得分:3)

主管和船员之间有什么区别?

至少我认为你需要在这两个类之间建立关联,以确定主管是一个或多个机组成员的老板。

如果主管做了什么,但机组成员没有做,那么你应该在班级主管中进行建模。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

为了在广义和专业案例中使用继承的概念,应该有一些动机,即广义/专业化的实体之间的差异是什么。这被称为鉴别器 - 它是一些不同的特征(行为或结构)。因此需要一些仅适用于超级/机组成员,某些关联或属性的功能。否则,在超时类“员工”中为“开始时间”建模“employeeType”就足够了。请注意,在大多数开发环境中添加继承都很昂贵。将有额外的源代码,额外的文档,额外的表,文件,以及当您尝试从模型到实现时不会有的内容。如果通过这样做没有真正的好处,那么使用继承(尤其是实现继承)是不明智的。