贝贝 2019-8-24 10:56潘老师,这个图是不是不太对。插卡,输入密码并不是ATM的职责?
UMLChina潘加宇: 这种图用建模思维一挤压,脓包太多了。问题一、几个生命线上的实例,抽象级别不一致。 ATM用户--系统(人肉系统)ATM--系统(非人肉系统)Bank的意思是银行,那是个组织,不应和系统并列,应该写清楚是和银行的哪个系统交互,可能是一个人肉系统,也可能是一个非人肉系统。问题二、责任大小不清既然是系统之间的交互,责任就不能是插卡,而是系统之间交互的目标,例如"取现金"。什么情况下可以在消息里写"插卡"?情况1:分析序列图,这时,对应的实例是"储户界面",而不是"ATM"情况2:决定使用序列图来表达ATM系统的需求。这种做法不推荐,但如果硬要这样做也不是不行。如果是这样,"插卡"是一个步骤是可以的,但要做以下修改:a、"ATM"三个字应该改为"系统",不需要出现系统的名字。b、"银行系统"的自反消息“验证”属于目标系统能检测的范围之外,删掉。问题三、责任主体不清"提示输入密码"是ATM的责任,不是人的责任,如果要画,应该改为自己指自己。问题四、返回消息的问题a、能不画就不画b、即使画,上面写的东西相当于调用的返回值,应该是一个名词,例如"验证结果",而不是一个动词。问题五、执行者的名字ATM的执行者叫"ATM用户","系统给谁用,给用户用呗"这种命名是没有经过任何思考得到的,没有价值,和"可乐卖给谁,卖给想喝可乐的人"、"该出哪张牌,出最该出的那张"一样,属于正确而无用的废话。改名为领域的用语"储户"甚至"市民"、"白领"、"大妈"都要更好。