% Definition de commande pour les schemas de classe
%  Definition of template class \tcls{Vector} --> Vector<T>
\newcommand{\tcls}[1] {#1$<$T$>$}   
%  Putting a class name in a box
\newcommand{\clsbox}[1] { \framebox[40mm][c]{\mbox{\rule[-1mm]{0mm}{5mm} \bf #1} } }
%  Emplty class box
\newcommand{\eclbox} { \makebox[40mm][c]{\mbox{\rule[-1mm]{0mm}{5mm}} } \ }
%  Length of \longleftarrow
\newlength{\arrclsw}   \settowidth{\arrclsw}{$\longleftarrow$}
%  One single class diagram
\newcommand{\dclsa}[1]{\clsbox{#1} \\[2mm]} 
%  two class diagram
\newcommand{\dclsbb}[2]{\clsbox{#1} $\longleftarrow$ \clsbox{#2} \\[2mm]}
%  two class diagram with one empty class (placeholder)
\newcommand{\dclsb}[1]{\eclbox $\longleftarrow$ \clsbox{#1} \\[2mm]}
%  three class diagram
\newcommand{\dclsccc}[3]{\clsbox{#1} $\longleftarrow$ 
	                 \clsbox{#2} $\longleftarrow$ \clsbox{#3} \\[2mm]}
%  three class diagram with one empty class (placeholder)
\newcommand{\dclscc}[2]{\eclbox $\longleftarrow$ \clsbox{#1} $\longleftarrow$ 
	                \clsbox{#2} \\[2mm]}
%  three class diagram with two empty classes (placeholder)
\newcommand{\dclsc}[1]{\eclbox \hspace{\arrclsw} \eclbox 
                       $\longleftarrow$ \clsbox{#1} \\[2mm]}

\newcommand{\bul}{$\bullet \ $}

