1 2 \input{header} 3 \begin{tikzpicture} 4 5 \begin{component}{20cm}{1}{0}{CachedGreeterComponent with replacement} 6 7 \begin{component}{4cm}{7.5}{0}{GreeterComponent} 8 \end{component} 9 10 \begin{component}{4cm}{7.5}{2.5}{FakeKeyValueStorageComponent} 11 \end{component} 12 13 \newcomponent{0}{1.3}{CachedGreeterImpl} 14 15 \umlassemblyconnector[interface=Greeter]{GreeterComponent}{CachedGreeterImpl} 16 \umlassemblyconnector[interface=KeyValueStorage]{FakeKeyValueStorageComponent}{CachedGreeterImpl} 17 18 \umlprovidedinterface[interface={Annotated<Cached,Greeter>}, distance=4.3, with port, padding=2.1cm]{CachedGreeterImpl} 19 20 \end{component} 21 \umlprovidedinterface[interface={Annotated<Cached,Greeter>}, distance=11.2, with port, padding=0.2cm]{CachedGreeterComponent with replacement} 22 23 \umldep{CachedGreeterImpl-west-interface}{CachedGreeterComponent with replacement-west-port} 24 25 \end{tikzpicture} 26 \input{footer} 27