11.9. Representação em UML

À medida que vamos acrescentando classes, e relações entre classes, ao nosso sistema, vai-se tornando mais difícil a compreensão do todo e das partes. Isto dificulta grandemente a manutenção e a evolução do nosso software.

A utilização de abstrações gráficas para os vários componentes do nosso sistema permite-nos representá-lo de uma forma em que sobressaem as entidades e relações que nos interessam a dado instante.

A linguagem UML – Unified Modeling Language – dá-nos esta capacidade, permitindo a representação dos sistemas usando variados graus de abstração/pormenor.

A forma de representar uma classe, na linguagem UML, é através de um retângulo, que pode ser dividido de modo a representar os vários elementos da classe – nome da classe, atributos, métodos. A cada elemento que constitui a classe pode-se ainda juntar informação vária – visibilidade, tipo, etc.

No nosso caso particular temos duas classes – Jogador e Jogo – cada uma definindo os seus atributos (de instância e de classe) e os seus métodos.

A primeira divisória do retângulo que representa uma dada classe, apresenta o nome da classe.

A segunda divisória apresenta os atributos, tanto os de classe (static), que aparecem sublinhados, como os de instância. Os sinais e + significam que o atributo é private ou public, respetivamente.

Um atributo de tipo primitivo é representado na divisória dos atributos através do seu nome. Podemos acrescentar-lhe o tipo e outros elementos descritivos mais.

Para representar, numa classe A, um atributo de um tipo não primitivo B, usa-se uma seta com a cabeça preta, na direção da classe A para a classe B. A relação existente entre A e B diz-se relação de composição. Mais adiante veremos outros tipos de relações entre classes.

No nosso caso, como Jogador é um tipo não primitivo, o atributo jogadores, que é um array de elementos do tipo Jogador, é apresentado através de uma seta na direção da classe Jogador; etiquetamos a seta com o nome do atributo e com o caráter *, que significa que cada objeto do tipo Jogo está relacionado com uma coleção de zero ou mais elementos do tipo Jogador.

É usual não representar explicitamente através de elementos gráficos UML os tipos de dados não primitivos pertencentes à biblioteca do Java – como, por exemplo, String, Random, etc – que não são criados por nós. Representamo-los através dos seus nomes.

A última divisória apresenta as assinaturas dos métodos. Optámos por apresentar somente os métodos public e por não apresentar nem os construtores nem os métodos que revelam os valores dos atributos.


 

Anterior: 11.8. A classe Jogo completa.

Seguinte: 12. Tipos enumerados