How to draw calls from constructors in UML sequence diagrams?

Gabor Magyar picture Gabor Magyar · Nov 18, 2014 · Viewed 11.6k times · Source

I've seen multiple ways to draw constructors, namely like here with tails under them (function call) but more often like here without the tails and with no arrow returning (sometimes with the label <<create>>).

I'm aware that there are differences between UML1 and UML2 and I'm not sure if this is one of them, however either way I cannot find any references as to how I can represent method calls from the constructor of an object.

EDIT: Example java code below. Say oour entry point is foo(). The main thing that I'm curious about is how to draw the B() constructor.

class A {
    private B b;
    public foo() {
        b = new B(this);
    }
}

class B {
    public B(A a) {
        foo();
        a.bar();
    }
}

Answer

xmojmr picture xmojmr · Nov 19, 2014

This websequencediagrams script seems to capture your code

User->A: foo
A-->>+B: <<create>>
B->B: foo
B->A: bar
B-->>A:
A-->>User:

enter image description here

You can validate the notation against http://www.uml-diagrams.org/sequence-diagrams-reference.html

EDIT: And this is the same message sequence as drawn by Enterprise Architect

enter image description here