Notación de clases UML
Las clases representan el concepto de encapsulación de estado (atributos) y comportamiento (operaciones). Cada atributo tiene un tipo. Cada operación tiene una firma. El nombre de la clase es la única información requerida.

La encapsulación es el principio de ocultamiento de datos: un objeto oculta sus datos del acceso externo y solo permite que entidades externas manipulen los datos llamando a los métodos del objeto.
El grado en que los elementos de una clase están encapsulados depende del nivel de visibilidad del elemento. La visibilidad de una propiedad o operación especifica si los objetos de otras clases pueden «ver» o acceder a esa propiedad o operación.
UML admite los siguientes cuatro niveles de visibilidad:
Los caracteres ~, +, # y – colocados antes del nombre de un atributo o operación en una clase indican su visibilidad:
- Visibilidad de paquete (representado por la tilde ~) significa que cualquier objeto de una clase dentro del mismo paquete puede ver y usar la clase dada.
- Visibilidad pública (+) significa que cualquier objeto de cualquier clase puede usar el atributo o operación dado.
- Visibilidad protegida (#) significa que solo los objetos de subclases de la clase dada (es decir, clases más bajas en la jerarquía) pueden acceder al atributo o operación.
- Visibilidad privada (-) significa que solo los objetos de la clase misma pueden usar el atributo o operación.
La siguiente imagen muestra los modificadores de visibilidad para atributos y operaciones de ejemplo:

