Java 类图混乱(琐碎)

Java 类图混乱(琐碎),java,uml,modeling,class-diagram,Java,Uml,Modeling,Class Diagram,我认为这是相对简单的,但我只是困惑,因为我是新的类图 我将创建一个关于管理麦当劳员工类型的程序(Java)。因此,考虑对对象进行建模 为了简单起见,麦当劳只有两类员工,“主管”和“乘务员”,他们都按月领薪。此外,他们都会根据情况(当然,将来可能会发生变化)获得单独的奖金 因此,我开始通过创建一个带有属性的超类“Employee”来建模 name empId salary (方法……等) 顺便说一句,我把“CrewMember”和“Superviser”作为它的子类 因此,我的困惑是,如果我以这

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

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

为了简单起见,麦当劳只有两类员工,“主管”和“乘务员”,他们都按月领薪。此外,他们都会根据情况(当然,将来可能会发生变化)获得单独的奖金

因此,我开始通过创建一个带有属性的超类“Employee”来建模

name
empId
salary
(方法……等)

顺便说一句,我把“CrewMember”和“Superviser”作为它的子类

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


请纠正我应该如何建模我的类。为了使等级区分开来,我还想为每个“船员”和“主管”增加一种奖金,但我认为这不会是灵活的,如果将来奖金和奖金类型会改变的话。所以,我现在很困惑。

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

至少我认为你需要在这两类人之间建立一种联系,一个主管是一个或多个船员的老板

如果有任何事情是主管做的,但工作人员没有做,那么你应该在班级主管中对其进行建模


如果主管和工作人员之间没有区别,那么你就不需要这两门课。

你好,泰尔:)这个答案发布在我的iPhone上,但我稍后会更新它!当你让s超类像employee一样时,你只需在类图中用一个简单的箭头将它从超类显示到两个子类——我马上会找到一个链接。注意,如果两个类看起来相同,这并不重要,但是在绘制完图后应该很清楚!通常,在类图之前创建一个域模型来显示这些类型的继承

要将继承的概念用于一般化和专门化的情况,应该有一些动机来说明要一般化/专门化的实体之间的区别。这被称为鉴别器——它是一些不同的特征(行为或结构)。因此,需要有一些只适用于上级/机组成员的功能,一些关联或属性。否则,在开始时在超类“Employee”中建模“employeeType”就足够了。请注意,在大多数开发环境中,添加继承代价高昂。将有额外的源代码、额外的文档、额外的表、文件以及稍后您尝试从模型到实现的其他内容。如果这样做没有真正的好处,那么使用继承(尤其是实现继承)是不明智的

我忘了提到,我(目前)看到的两个类之间的唯一区别,“监督员”和“船员”是他们的工资。他们不是被称为
监督员吗?@jbchichoko将工资作为一个属性,不管子类是什么,它总是不同的。如果你想让所有的主管都有相同的薪水,你应该重构你的工作,以便在
主管中有一个静态常量。另外,在这种情况下,如何对奖金进行建模?因此,考虑到我的类中有鉴别器(如你所说),如果代价高昂,我如何在没有继承的情况下对类进行建模?!谢谢。如前所述-添加employeeType属性,如果需要任何次要的特殊行为,请使用switch语句。这不是纯粹的面向对象,但通常是比先继承更好的第一步,并且永远不会在子类中产生太多差异。一个典型的“雅格尼”——你不会需要它的。