Uml 类图中的序列图

Uml 类图中的序列图,uml,class-diagram,sequence-diagram,staruml,Uml,Class Diagram,Sequence Diagram,Staruml,我正在做一个小型UML项目,用户必须通过使用信用卡(他/她拥有的)购买门票。 票有三种类型:一次性票、半天票和全天票,它们都是抽象票类的子类 序列图必须表示购买这类票据的行为,但是我正在努力实现它(我在这个项目中使用STARUML) 这就是我将如何实现它的方法 您已经为此使用了正确的元素:带有alt运算符的组合片段 但是,有些事情还不清楚:在操作数中有一个文本(例如“一次性使用”)。我想知道这是什么。如果它是一个防护装置,那么它需要放在方括号中。通常,警卫将使用生命线表示的某种类型的属性,在本

我正在做一个小型UML项目,用户必须通过使用信用卡(他/她拥有的)购买门票。 票有三种类型:一次性票、半天票和全天票,它们都是抽象票类的子类

序列图必须表示购买这类票据的行为,但是我正在努力实现它(我在这个项目中使用STARUML)

这就是我将如何实现它的方法

您已经为此使用了正确的元素:带有alt运算符的组合片段

但是,有些事情还不清楚:在操作数中有一个文本(例如“一次性使用”)。我想知道这是什么。如果它是一个防护装置,那么它需要放在方括号中。通常,警卫将使用生命线表示的某种类型的属性,在本例中,第一条消息位于操作数中,
Ticket
。它没有这样的属性,但我们可以将其解释为某些
TypeOf()
-函数的结果

下一件事是,
Ticket
概括了
单次使用Ticket
,因此
单次使用Ticket
类型的每个对象也是一个
Ticket
。那么,为什么
票据
对象与
一次性票据
对象通信?只有当
Ticket
单次使用Ticket
有关联时,这才有意义,但事实并非如此。因此,四条
Ticket
生命线应该只有一条,并且所有
getCost
-消息都将指向发送它们的同一条生命线

我理解,您想表达的是,
getCost
的实现取决于票据的类型。但是,只有在实现导致发送不同的消息时,才能在序列图中看到这一点。这里的情况并非如此

同样奇怪的是,
Ticket.buy
需要类型为
Ticket
的参数。当您向一个
Ticket
对象发送
buy
-消息时,它应该如何处理另一个
Ticket
对象

图表中的一个错误是,您的回复消息与同步消息不一致。回复消息必须返回到发送同步消息的生命线,因为“同步”意味着发送方正在等待回复

您正在对来自用户的消息使用查找到的消息。我宁愿使用图表框架中的消息,因为原则上你知道,它们来自哪里,你只是选择不建模


最后一条建议:生命线可以表示属性或参数。因此,您应该在生命线的头部显示参数或属性的名称,例如,
cc:Credit card
。如果省略了名称,则类型前面的冒号将保留。

嗯,它可能是任何内容。如果没有规范,谁知道它应该如何工作?请具体说明你在哪里挣扎。