Você está na página 1de 8

Engenharia de Software - Tópico 6 - Diagrama de Classes - 1

Diagrama de Classes

• Um diagrama de classes descreve a visão estática do sistema em termos de


classes e relacionamentos entre as classes.

• Um dos objetivos do diagrama de classes é definir a base para outros


diagramas apresentem outras visões do sistema.

• Um diagrama correlato ao diagrama de classes é o diagrama de objetos, que


apresenta instâncias das classes.

• Uma classe é representada por um retângulo dividido em 3 compartimentos:


– nome
– atributos
– operações

• A sintaxe utilizada para descrever o conteúdo de cada compartimento é


independente de linguagem (muito embora isto possa ser adaptado).

Exemplo

 Definições de classes

• Encontrar classes que compõem o sistema:


– É um processo criativo.
– Deve ser executado por especialistas no domínio da aplicação.
– As classes devem vir do domínio da aplicação.
– Devem ser nomeadas de acordo com que lá representam.
Engenharia de Software - Tópico 6 - Diagrama de Classes - 2

 Questões que podem auxiliar no processo de identificar classes:

– existe informação que deve ser armazenada ou analisada? Se sim, ela é uma
possível candidata a se tornar classe.
– existem sistemas externos? Caso existam, podem ser entendidos como
classes que o sistema contém ou com quem deve interagir.
– existem patterns (padrões), bibliotecas de classes, componentes etc.? Se
sim, eles podem conter prováveis candidatas a classes o sistema.

 Componentes das classes:

• Identificador (nome) da classe:


– deve ser derivado do domínio da aplicação.
– deve ser o menos ambíguo possível.
– deve ser um substantivo e não conter prefixos ou sufixos.

• Atributos da classe:
– descrevem as características dos objetos daquela classe.
– somente os atributos que interessam ao sistema devem ser representados.
- Todos os objetos de uma classe são caracterizados pelos mesmos atributos
(ou variáveis de instância)
- o mesmo atributo pode ter valores diferentes de objeto para objeto
- Atributos são definidos ao nível da classe, enquanto que os valores dos
atributos são definidos ao nível do objeto

Exemplos:
• uma pessoa (classe) tem os atributos nome, data de nascimento e peso.
• João (objeto) é uma pessoa com nome “João Silva”, data de nascimento
“18/3/1973” e peso “68 Kg”.

• Um atributo tem um tipo.


• Este tipo pode ser primitivo (inteiro, real, boolean etc.) ou construído
(arrays, registros).
Engenharia de Software - Tópico 6 - Diagrama de Classes - 3

Visibilidade de Atributos

• Os atributos podem ter diferentes visibilidades


– public: representada pelo símbolo +
– protected: representada pelo símbolo #
– private: representada pelo símbolo –

A visibilidade indica se o atributo pode ser visualizado por outras


classes além da própria.

- pública (+): pode ser visto e usado por outras classes.

- privada(-): não pode ser acessado por outras classes.

- protegida (#): pode ser acessado por subclasses da classe a que


pertence.

• Atributos podem ter valores iniciais.


• A definição do atributo pode especificar quais os seus valores válidos
(domínio do atributo).
• A sintaxe formal para descrição de atributos é:
visibilidade nome : tipo = valor inicial {domínio}

Exemplo:
Engenharia de Software - Tópico 6 - Diagrama de Classes - 4

Visibilidade de operações

• Operações são utilizadas para manipular os atributos ou para realizar outras


ações.
• Para se representar uma operação descreve-se o tipo de retorno, o nome da
operação e os parâmetros que ela pode receber (em outras palavras,
representa-se a assinatura da operação).
• Também o conceito de visibilidade se aplica a operações.
• A sintaxe formal para a representações de operações é:
visibilidade nome (lista de parâmetros) : tipo de retorno {domínio}

Exemplo:

 Relações entre Classes

• Um diagrama de classes representa classes e os relacionamentos entre elas.


• Estes relacionamentos podem ser:
– associações
– generalizações
– agregações
– outras

Associação

• Associação: é uma conexão entre classes e por conseqüência uma conexão


entre objetos destas classes.
Engenharia de Software - Tópico 6 - Diagrama de Classes - 5

• Em UML uma associação é definida como o relacionamento que descreve


um conjunto de ligações, sendo uma conexão definida como uma conexão
semântica entre uma tupla de objetos.

• Uma associação normalmente é bidirecional, ou seja, se um objeto está


associado a outro objeto, ambos sabem que isto está acontecendo.
• Maneiras alternativas de se entender uma associação entre dois objetos
podem ser:
– eles conhecem um ao outro
– estão conectados um ao outro
– para cada objeto X existe um correspondente objeto Y
– etc.

• A Associação é desenhada através de uma linha sólida entre duas classes.


• Deve possuir um nome (geralmente um verbo) pertencente ao domínio do
problema.
• Uma seta no final da linha indica que a associação somente pode ser
utilizada em uma única direção.
• Associações podem ter dois nomes (um para cada direção). Um triângulo
sólido junto ao nome indica a direção que se deve ler a associação.

 Multiplicidade

• A multiplicidade especifica quantos objetos participam da ligação.


Engenharia de Software - Tópico 6 - Diagrama de Classes - 6

• Ela é desenhada no final da associação, perto da classe onde ela se aplica


• Se não especificada, assume-se exatamente um (1)
• Outros exemplos de multiplicidade podem ser:
– zero a um (0..1)
– zero a muitos (0..*) ou (*)
– um a muitos (1..*)
– dois (2)
– cinco a onze (5..11)
– um, quatro, seis e oito a doze (1, 4, 6, 8..12)
– etc.

Exemplo:
Engenharia de Software - Tópico 6 - Diagrama de Classes - 7

• Exemplos de informações contidas no diagrama:


– uma companhia de seguros tem contratos de seguro que se referem a um ou
mais clientes
– o cliente pode ter muitos contratos de seguros, os quais se referem a apenas
uma companhia
– um contrato de seguro acontece entre uma companhia de seguro e um ou
mais clientes. O contrato de seguros refere-se, simultaneamente, a cliente(s) e
uma companhia de seguros

 Agregação:
– Uma agregação é um tipo especial de associação
– Ela indica um relacionamento “parte-todo” entre as classes
– Sua presença pode ser percebida a partir da existência de relacionamentos
cujas denominações incluam expressões como “consiste de”, “contém”
ou “é parte de”.

Exemplos de Agregação:
Engenharia de Software - Tópico 6 - Diagrama de Classes - 8

 Generalização:
– É um relacionamento de classificação entre um elemento mais geral e um
elemento mais específico.
– O elemento mais específico é completamente consistente com o elemento
mais geral (pois herda as suas propriedades), mas contém informações
adicionais.
– A generalização também é chamada de relacionamento“tipo-de”.
– A generalização é representada graficamente por um triângulo apontando
para a classe mais geral (superclasse).

--> Classes Associativas

São classes que estão ligadas a associações ao invés de estarem ligadas a


outras classes. Este tipo de classe normalmente aparece quando duas ou mais
classes estão associadas, e é necessário manter informações sobre a
associação.

Uma classe associativa é representada pela notação representada por uma


classe. A diferença é que essa classe é ligada por uma linha tracejada a uma
associação.

Você também pode gostar