【问题标题】:UML + Class Diagram - Online Movie rentalUML + 类图 - 在线电影租赁
【发布时间】:2016-04-09 01:25:11
【问题描述】:

为流媒体电影租赁系统创建面向对象的设计 (如Netflix)。你的类名,私有实例变量, 方法等完全取决于您。

规格

每个用户都有以下相关信息:

  1. 一个名字。
  2. 帐号。
  3. 有序的电影播放列表。
    • 特别是,如果电影 A 在播放列表中在电影 B 之前,则用户在 B 之前观看 A。
  4. 用户最近看过的五部电影。

共有三种不同类型的用户:

  1. 试用
    • 试用用户一次只能在其播放列表中播放一部电影。
  2. 成员
    • 会员一次最多可以在其播放列表中拥有 5 部电影。
  3. 贵宾会员
    • VIP 会员可以在其播放列表中拥有无限数量的电影。

每个用户都必须能够执行以下操作:

  1. 签出电影
    • 如果用户签出电影,则将其放在用户播放列表的末尾。
  2. 看电影
    • 如果用户观看电影,则该电影将从用户的播放列表中删除。您可以假设用户只能观看任何内容 电影位于播放列表的前面。
  3. 回忆他们最近看过的五部电影
    • 此操作应将用户观看的最新电影打印到屏幕上。

每部电影都包含以下信息:

  1. 标题
  2. 约会
  3. 一种流派
  4. 租金价格

注意不同的用户有不同的电影租借权,所以 用户可能会尝试做他(她)正在做的事情 不允许这样做。 发生这种情况时,您必须执行以下操作:

  1. 确保未执行该操作。
  2. 打印一条信息性错误消息,说明无法执行操作的原因。

您的面向对象设计必须包含以下面向对象的功能:

  1. 一个抽象类
    • 其他类构建的基类应该是什么?
  2. 继承
    • 特别是,您必须从基本抽象类继承。
  3. 多态性(动态绑定)
    • 特别是,您检查电影的方法必须是多态的。

我想出了下面的类图,还没有完成:

首先,我对这三个功能应该去哪里有点困惑...查看电影,观看电影并获取最近观看的 5 部电影。另外,想知道如何关联这些类。

我已经编辑了我的类图。我正在寻找一些关于类关系的反馈

【问题讨论】:

  • 我猜你没有明白具体课程的重点。还有为什么你用 StereoType 来定型类。完全没有意义。
  • 我认为这些功能属于用户,因为您已经完成了。
  • 当我写下我的答案时,我不认为你的编辑在那里,并且它不包括已经给出的关于类关系的反馈。您在寻找什么反馈?
  • 附注您编辑的图表不如原始图表正确。

标签: oop object inheritance polymorphism uml


【解决方案1】:

我会给你一些关于抽象类部分的指导。您已经正确理解 User 是一个抽象类,并且您的具体类继承自它。但是,您不需要有一个属性来解释给定实例是什么类型的用户。调用您的具体类 NormalUser、TrialUser、VIPUser。在您的 User 类中使 checkOut 成为一个抽象操作;由于每个具体类处理此操作的方式不同,因此您需要在每个类中而不是在 User 类中实现它。 (User 类将直接实现每个类以相同方式执行的那些操作,例如 getHistory。)

多态性位是您声明一个 User 类型的类并将其实例化为具体子类之一。然后,当您调用 checkOut 方法时,您将获得在子类中实现的不同行为。

我还会给你一些语法更正:

不要在你的具体类标签中写“具体类”,也不要在你的抽象类标签中加入“抽象类”的刻板印象。 UML 将类显示为抽象的方式是使标题斜体。这就是您需要的所有区别。

不要在你的类上加上“类”的刻板印象。刻板印象是定义一个特定类型的类,例如«Utility»。

出于同样的原因,请勿在您的班级标签上写下«Stereotype»。目前还没有这样的刻板印象,正如 Thomas Kilian 所说,“刻板印象”的刻板印象绝对没有意义,因此没有理由自己创建一个。

【讨论】:

  • Bob,«enumeration» 不是刻板印象,而是表示元素类型的关键字。 Enumeration 不是 Class。并且关键字应该是小写的。
  • @GeertBellekens 完全正确,现在我已经查过了。我一直将 Enumeration 视为派生自 Class,而实际上它派生自 Datatype。此外,«枚举»不是标准的刻板印象,而是关键字。感谢您指出这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2021-03-03
  • 1970-01-01
  • 1970-01-01
  • 2017-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多