Notação de classe UML
As classes representam o conceito de encapsulamento de estado (atributos) e comportamento (operações). Cada atributo tem um tipo. Cada operação tem um assinatura. O nome da classe é a única informação obrigatória.

A encapsulação é o princípio de ocultação de dados: um objeto esconde seus dados do acesso externo e permite apenas que entidades externas manipulem os dados chamando os métodos do objeto.
O grau de encapsulamento dos elementos de uma classe depende do nível de visibilidade do elemento. A visibilidade de uma propriedade ou operação especifica se objetos de outras classes podem “ver” ou acessar essa propriedade ou operação.
O UML suporta os seguintes quatro níveis de visibilidade:
Os caracteres ~, +, # e – colocados antes do nome de um atributo ou operação em uma classe indicam sua visibilidade:
- Visibilidade de pacote (representado pelo til (~)) significa que qualquer objeto de uma classe dentro do mesmo pacote pode ver e usar a classe fornecida.
- Visibilidade pública (+) significa que qualquer objeto de qualquer classe pode usar o atributo ou operação fornecido.
- Visibilidade protegida (#) significa que apenas objetos de subclasses da classe fornecida (ou seja, classes mais baixas na hierarquia) podem acessar o atributo ou operação.
- Visibilidade privada (-) significa que apenas objetos da própria classe podem usar o atributo ou operação.
A imagem a seguir mostra os modificadores de visibilidade para atributos e operações de exemplo:

