我认为这相对简单,但我很困惑,因为我是班级图表的新手。
我即将创建一个关于管理麦当劳员工类型的程序(用Java)。所以,考虑对对象进行建模。
为了简单起见,麦当劳只有两种类型的员工,“Superviser”和“CrewMember”,两者都按月收取薪水。此外,他们都会根据情况(当然可能在将来发生变化)获得单独的奖金
所以,我开始通过创建具有属性
的超类“Employee”进行建模name
empId
salary
(方法......等)
顺便说一下,我让“CrewMember”和“Superviser”成为它的子类。
所以我的困惑是如果我以这种方式对我的对象建模,那么我的“CrewMember”和“Superviser”类的实例是如何彼此不同的呢?
请纠正我如何建模课程。为了使课程可以区分,我还考虑在每个“CrewMember”和“Superviser”上添加一种奖励,但我认为这不会灵活,如果将来,奖金和奖金类型会发生变化。所以,我现在很困惑。
答案 0 :(得分:3)
主管和船员之间有什么区别?
至少我认为你需要在这两个类之间建立关联,以确定主管是一个或多个机组成员的老板。
如果主管做了什么,但机组成员没有做,那么你应该在班级主管中进行建模。
如果主管和船员之间没有区别,那么你不需要这两个班级。
答案 1 :(得分:0)
Hellothère:)这个答案发布在我的iPhone上但我稍后会更新!当你创建像员工一样的超级类时,你只需在类图中通过从超类到两个子类的简单箭头显示它 - 我会在片刻中找到一个链接,但是注意这两个类是否无关紧要看起来相同,但是图表完成时应该很清楚!通常,您在类图之前创建一个域模型以显示这些类型的继承
答案 2 :(得分:0)
为了在广义和专业案例中使用继承的概念,应该有一些动机,即广义/专业化的实体之间的差异是什么。这被称为鉴别器 - 它是一些不同的特征(行为或结构)。因此需要一些仅适用于超级/机组成员,某些关联或属性的功能。否则,在超时类“员工”中为“开始时间”建模“employeeType”就足够了。请注意,在大多数开发环境中添加继承都很昂贵。将有额外的源代码,额外的文档,额外的表,文件,以及当您尝试从模型到实现时不会有的内容。如果通过这样做没有真正的好处,那么使用继承(尤其是实现继承)是不明智的。