in,out,inout,return parameter direction in UML

Call by reference is one possible implementation of inout and out, yes.

Remember that UML is describing a behavior in a language-neutral way. It is up to the implementation of a given interface in an actual language to determine what this means.

In a language like Ada, with language-level in , out, and in out parameters, this can be expressed directly in the language, and the compiler can decide where reference or copy is a better implementation. In a language like Python, where all parameters are passed by reference (sort of), this notation of intent at the UML level does not result in any distinction at the implementation level. And in a language like C, with explicit pointer types and all parameters passed by value, these intents expressed in UML turn into explicit address references and pointer dereferences.

In other words, the short answer is "yes, that's roughly what it means, but it may not be what it does".


• in - An input Parameter (may not be modified).

• out - An output Parameter (may be modified to communicate information to the caller).

• inout - An input Parameter that may be modified.

• return -A return value of a call.