
\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{figure}
\begin{mpost}[use]
input metauml;
Class.A("A")
("-instance: A")
("-A()",
"+instance(): A");
drawObjects(A);
\end{mpost}
\caption{Class \texttt{A} as a singleton}
\label{fig:uml-a}
\end{figure}
\end{document}
Como posso +instance(): A
sublinhar para marcá-lo como um método estático?
É possível desabilitar a conversão +
e -
os gráficos?
A solução de Egreg abaixo funciona, mas existe alguma maneira de desenhar o sublinhado "verdadeiro"? Por exemplo, se eu adicionar algo abaixo da parte sublinhada, terei que mover a linha manualmente. Eu quero evitar isso.
Responder1
Você deveria usar mpsettings={input metauml;}
; então você pode usar o Metapost para desenhar uma linha.
\documentclass{article}
\usepackage[shellescape]{gmp}
\begin{document}
\begin{figure}
\begin{mpost}[use,mpsettings={input metauml;}]
Class.A("A")
("-instance: A")
("-A()",
"+instance(): A");
drawObjects(A);
draw A.sw+(13,1.5) -- A.se+(-4,1.5);
\end{mpost}
\caption{Class \texttt{A} as a singleton}
\label{fig:uml-a}
\end{figure}
\end{document}
Para alterar o +
e -
para algo diferente do padrão, deve-se estudar detalhadamente a fontemetauml.mp
Responder2
Idéia de desenho de linha sob o rótulo "atributo". (reputação imagem morta)
+---------------------+
| Singleton |
+---------------------+
| - static Instance |
| ----------------- |
+---------------------+
| |
+---------------------+
Esta é uma variação da resposta de egreg. É possível que exista uma resposta mais precisa ...
input metauml;
beginfig(1);
Class.SingletonLite("Singleton")("- static Instance")();
drawObject(SingletonLite);
draw SingletonLite.attributeStack.pict[0].sw -- SingletonLite.attributeStack.pict[0].se ;
endfig;
end.
Responder3
As sugestões a seguir funcionam com o código noramo mestre do MetaUML, mas não com MetaUML 0.2.5.
É possível marcar explicitamente os recursos da classe como abstratos ou estáticos:
Diagrama de classes metaUML: defina alguns métodos como abstratos em uma classe abstrata
O texto pode ser sublinhado da seguinte forma:
Picture.a("foo");
a.info.textDecoration := "underline";
O uso de bloqueios como marcadores de visibilidade foi descontinuado em favor da notação UML padrão.