UML序列图中如何表示Java代码里的this.println方法调用?
代码问题先澄清
你提供的代码存在编译错误:printStudentReport是static静态方法,静态方法中不能使用this关键字指向实例,所以首先要先确认这处this.println的实际逻辑归属,再确定序列图的画法。
public class ReportPrinter { public static void printStudentReport(Student s) { CorsoDiLaurea cdl = s.getCorsoDiLaurea(); Carriera c = s.getCarriera(); String a = s.getInfoAnagrafiche(); this.println (a + "\n" + cdl.detailString() + "\nCarriera:"); for(EsameSostenuto e: c.getEsamiSostenuti() ) { this.println(e.nome + "-" + e.cfu + "-" + e.getVoto() ); } this.println ("Media: " + c.get.Media() ); } /*any code omitted */ }
序列图画法建议
分两种场景处理println的生命线配置:
- 如果
println是ReportPrinter类自己实现的实例方法(需将printStudentReport的static修饰符去掉,修复编译问题):不需要额外新增生命线,直接在ReportPrinter的生命线上画自调用消息,消息内容标注println(入参内容)即可。 - 如果代码中的
this是笔误,实际逻辑是调用System.out.println输出内容到控制台:- 需要单独新增一条生命线,名称标注为
System.out : PrintStream - 从
ReportPrinter的生命线指向System.out的生命线,消息内容标注println(入参内容)
- 需要单独新增一条生命线,名称标注为
- 可选优化:如果你的序列图核心是展示成绩报告的业务生成逻辑,不需要细化打印的底层实现,也可以把多次
println调用合并为一条输出学生报告的汇总消息,避免序列图元素过多过于杂乱。
内容的提问来源于stack exchange,提问作者Elax46
相关产品推荐
相关产品推荐

