ArchitectureΒΆ

Message dispatch

digraph delegation { graph [fontname = "helvetica";]; node [fontname = "helvetica";]; edge [fontname = "helvetica";]; node [shape=box] Dataset; FileSource; SomeDataset SomeReader; SomeSource; Reader; Source; // SomeDataset -> SomeSource ; // Inheritance SomeDataset -> Dataset; SomeSource -> FileSource; FileSource -> Source; SomeReader -> Reader; // Delegation // "SomeDataset" -> "SomeSource"; Dataset -> SomeSource [label=<<I> source </I>>; style=dashed;]; FileSource -> SomeReader [label=<<I> reader </I>>; style=dashed;]; {rank=same; FileSource; SomeReader;} {rank=same; Dataset; SomeSource;} }

With:

digraph legend { rankdir=LR; graph [fontname = "helvetica"]; node [fontname = "helvetica"]; edge [fontname = "helvetica";]; node [shape=point; height=0] A -> B [label=<<I> inherits from </I>>;]; B -> C [style=invis]; C -> D [label=<<I> delegates to </I>>; style=dashed;]; }