As far I as I could tell, the proper way to show an object creation in a sequence diagram is with an asynchronous arrow, e.g.,
However, in Java (and other OO languages I have used), as far as I know, a new()
operation is blocking.
I noticed that some references (Craig Larman) use a hybrid message (dotted line with filled arrow), e.g.,
Especially when a constructor is involved, it's important that a create
be a synchronous call. That is, it will return when the constructor is finished. According to my understanding of asynchronous messages in UML, the :A
object would not wait for the constructor of :B
to finish.
My students often ask this question, and I suspect there is some history behind this. I'm curious why there is this seeming inconsistency.