A UML combina os conceitos comuns de linguagens orientadas a objetos, ela é compatível com o desenvolvimento de software desde os requisitos até as etapas finais do desenvolvimento e diversos escopos. Tem como objetivos: modelar diferentes linguagens e situações, e ser um padrão de desenvolvimento de software. Seus modelos buscam capturar e definir com precisão os requisitos do software, auxiliar o início do projeto do sistema, ser uma solução que contenha as decisões do projeto, explorar diferentes soluções, e permitir o fácil entendimento de projetos complexos. A UML possui três níveis de abstração sendo eles: alto, médio e baixo. O nível alto: tem como finalidade ser claro e simples pois ele é apresentado ao cliente para tomada de decisões, já o nível médio: guia o desenvolvimento apresentado sem detalhar demais, e o baixo: demonstra como deve ser desenvolvido o sistema propriamente dito.
- privado + público # protegido ~ pacote/padrão
- Herança: As setas abertas indicam o relacionamento de herança indicando a superclasse e as subclasses.
- Abstração: As Classes com o nome em itálico ou "<< >>" indicam que aquela Classe é Abstrata e que é usada para instanciar objetos.
- Associação: Linha simples não indica nenhuma dependencia é apenas um relacionamento de associação básico e bastante simples.
- Agregação: Uma parte pode existir fora do todo é representado por um losângulo vazio.
- Composição: Quando um objeto secundário não consegue existir sem o objeto primário é representado por um losângulo preenchido.
- Multidiplicidade:
0..1 - Zero a um (opcional)
n - (montante específico)
0..* - zero a muitos
1..* um a vários
m..n intervalo específico