我在理解如何制作系统序列图时遇到了一些麻烦,因为我不完全理解为什么在某些情况下应该为 System -> Actor 定义操作,而在其他情况下却没有。这是一个例子:
让我们假设系统是一家电影院票店,演员是一个想买票的客户。
1) The User tells the System that wants to buy some tickets, stating his client number.
2) The System confirms that the given client number is valid.
3) The User tells the System the movie that wants to see.
4) The System shows the set of available sessions and seats for that movie.
5) The System asks the user which session/seat he wants.
6) The User tells the System the chosen session/seat.
这将转换为:
a) -----> tellClientNumber(clientNumber)
b) <----- validClientNumber
c) -----> tellMovieToSee(movie)
d) <----- showsAvailableSeatsHours
e) -----> tellSystemChosenSessionSeat(session, seat)
我知道,当我们处理 SDD 时,我们离编码还很远。但是我不禁想像如果我立即将其转换为代码会如何:
我能理解1)
和2)
。就像它是具有以下签名的 C#/Java 方法一样:
boolean tellClientNumber(clientNumber)
所以我把两者都放在SDD上。
然后,我们有对3)
4)
。我可以把它想象成:
SomeDataStructureThatHoldsAvailableSessionsSeats tellSystemMovieToSee(movie)
现在,问题:
据我了解,我的讲师说我们不应该在SDD
for上进行操作,5)
因为我们应该只在系统向我们呈现数据(如中)或验证发送的数据时显示从Actor
到的操作(如在)。System
c)
b)
我觉得这很奇怪,好像我试着把它想象成一个 DOS 应用程序,你必须按顺序输入你的输入,即使为 5) 做一个箭头也是有意义的。为什么这是错误的?我应该如何尝试将其可视化?
谢谢