\documentclass[a4paper]{article}
\usepackage[margin=18mm]{geometry}
\usepackage{tikz-umld}

\title{TikZ-UMLD feature examples}
\author{}
\date{}

\begin{document}
\maketitle

\section*{Classes, constraints, enumerations, and pointed notes}

\begin{center}
	\begin{tikzpicture}
		\umlabstract{Shape}{}{
			\umlpvirt{area(): real} \\
			\umlquery{isEmpty(): boolean}
		}
		\umlclass[x=6]{Circle}{
			\umlcon{radius: real}{readOnly}
		}{
			\umloverrd{area(): real}
		}
		\umlenum[x=6,y=-5]{Colour}{red \\ green \\ blue}

		\umlinherit{Circle}{Shape}
		\umlnode{9,-2.5}{route}
		\umlCNdep[stereo=uses,st:pos=.55,st:anchor=south,
			st:fill=white]{Circle}{route}{Colour}
		\umlnote[x=0,y=-4,px=0,py=-1,width=12em,
			draw=green!50!black,fill=green!10]{Shape}{
			Every concrete shape supplies an area.
		}
	\end{tikzpicture}
\end{center}

\section*{Static object diagram}

\begin{center}
	\begin{tikzpicture}
		\begin{umlobjdiag}
			\umlobject[class=Customer]{alice}
			\umlobject[class=Order,x=6]{order}
			\umlassoc[mult1=1,mult2=*]{alice}{order}
		\end{umlobjdiag}
	\end{tikzpicture}
\end{center}

\section*{Actor and assembly-connector labels}

\begin{center}
	\begin{tikzpicture}
		\umlactor[head=cyan!35]{User}
		\umlbasiccomponent[x=4]{Client}
		\umlbasiccomponent[x=10]{Server}
		\umlassoc{User}{Client}
		\umlassemblyconnector[interface=Storage,labelpos=below]{Client}{Server}
	\end{tikzpicture}
\end{center}

\end{document}
