可以对电影票购买系统制作深入的 UML class 图吗?

Possible to make an in-depth UML class diagram of a Cinema ticket buying system?

我正在尝试和我的朋友一起制作一个 UML 模型,但我们的问题是我们只能制作简单的图表,不知道如何为更复杂的关系建模,比如在电影院买一个座位。

我认为这对我们来说可能太复杂了,因为在电影院中,您有放映室,在这些行和座位中。你有不同的电影,它们也可以在不同的房间放映多次。并兼顾不同价位的机票,以及可以同时购买多个座位。

我们在大学,我们看过很多例子,但它们非常简单,不需要图表来编程或理解它们。

问题描述: 我们有一位客户可以在线或在电影院购买门票。我们不能做一个中央系统(单个电影院的)让在线网站和电影院的收银机通信,这样客户就不会购买已经售出的座位,我们不知道如何在 UML 中对此建模。

如果问题是我们试图在 1 个图表中做太多事情,或者试图做一些不应该用 class 图表完成的事情,请告诉我们如何分解它以及什么零件放在哪里因为我们现在有点迷路了。

非常感谢任何帮助!

基本上你自己回答:分手。一个 class 图表中不会显示任何体面的系统(墙纸仅供管理人员使用;虽然有时拥有一个很好,但这是一项地狱般的工作)。以有意义的方式打包事物并建立包依赖性。然后描述每个单独的子系统。这将迫使您创建有意义的界面。任何设计都是困难的,所以不要低头。只有努力,才能学会设计复杂的系统。

应用程序的静态结构与其动态行为之间存在差异。 class 图仅用于模拟静态结构。它可以用来表示客户与门票、门票与演出之间的关系,但不适合反映“买”的过程和查看座位是否已售出。这可以在 activity 图中捕获(例如)。

您不应将票直接与电影和座位相关联。 class 图表中缺少的是“性能”和“插槽”。

表演是在特定时间在特定房间放映的电影。例如,表演 28374 是晚上 7 点到晚上 9 点在 2 号房间放映的电影“Rambo 5”。

Slot 是表演期间的座位,例如Performance 28374 座位 12C。

现在,您可以将 Ticket 关联到 Slot。如果 Slot 已经购买,则与 Ticket 相关。如果插槽尚未购买,则不相关。