Diagramas UML
Ler e relacionar classes, sequências, comunicação e estados sem confundir estrutura com execução.
Classes e relações
Estrutura, não execução. + público, - privado, # protegido, ~ pacote. Sublinhado é estático; itálico ou marca própria é abstrato. heroi:Heroi é objeto, não classe.
| Relação | Notação | Afirma |
|---|---|---|
| Associação | Linha contínua | Relação estrutural; seta aberta é navegação. |
| Dependência | Seta tracejada | Uso pontual, como parâmetro. |
| Generalização | Triângulo vazio para a base | Especialização com contrato da base. |
| Realização | Tracejado com triângulo para a interface | Implementação do contrato. |
| Agregação | Losango vazio no todo | Todo/parte fraco, posse por definir. |
| Composição | Losango cheio no todo | Parte de um só todo de cada vez; ciclo de vida associado. |
Composição não é chamada ao garbage collector; campo Java não prova posse forte. Em Java, extends Base implements I1, I2, por esta ordem.
Multiplicidade num extremo conta objetos desse extremo por um objeto do outro: 1, 0..1, *, 1..*. Classe de associação guarda dados da relação.
Arena compõe herói e paredes; herói conhece uma posição sem posse exclusiva.
Sequência e comunicação
Tempo para baixo é ordem, não duração. Síncrona tem ponta preenchida, assíncrona aberta, retorno é tracejado. alt separa por guardas, opt é opcional, loop repete.
getX() e mostrar(x) ficam depois do alt: 3 no ramo livre, 2 no ocupado. Guardas são condições, não métodos.
Comunicação fixa a ordem por numeração: chamada interna durante a mensagem 2 é 2.1, a seguinte 2.2. *[condição] marca repetição. Sequência mostra ordem; comunicação mostra ligações.
Estados e transições
Forma: evento [guarda] / efeito. Guarda falsa sem outra reação: nada acontece.
entry/exitcorrem ao entrar/sair; transição externa para o próprio estado repete ambos, reação interna não sai.- Início é círculo cheio, fim é círculo com outro dentro. Estado composto agrupa máquina interna, sem exigir subclasses.
- Regiões ortogonais mantêm um estado ativo por dimensão: Ativo/Pausa com Audível/Mudo dá quatro configurações sem as repetir em nomes. Não implicam threads.
- Mesmo evento com guardas que se excluem escolhe um destino determinado.
Confere cada cenário: operação existe no recetor, ligação permite conhecê-lo, estado permite a ação, vista mostra o estado aceite. Diagramas completos.