Você está na página 1de 46

Diagrama de Classes

Prof. Dr. Andr Pinz Borges


apborges@utfpr.edu.br
Aula Anterior
Diagrama de Caso de Uso
Elementos
Exerccios
Roteiro
Diagrama de Classes
Definio
Atributos e Mtodos
Relacionamentos ou Associaes
Tipos de Associaes
Unria
Binria
Com Navegabilidade
Generalizao/Especializao
Agregao
Composio
Exerccios
Classes
Algo que encapsula informaes e comportamento.
Plantas (modelos) dos objetos.
As classes contm informaes e os comportamentos que se
baseiam nessas informaes.
Um diagramas de classe usado para exibir algumas
classes e pacotes no seu sistema.
O diagrama exibe um quadro esttico das peas do seu
sistema e dos relacionamentos entre eles.
Diagrama de Classes
Mais importante e mais usado da UML
Focos:
Permitir a visualizao das classes que comporo o sistema com seus
respectivos atributos e mtodos.
Demonstrar como as classes do diagrama se relacionam, complementam
e transmitem informaes entre si.
Preocupa-se em definir a estrutura lgica das classes que
formam o sistema
Serve de base para a construo da maioria dos outros
diagramas da linguagem UML.
Diagrama de Classes Viso Geral
Nome da
Visibilidade Classe
pblica
Visibilidade Nome da Classe
protegida
+atributo1 : int Tipo do
#atributo2 : float atributo
-atributo3 : bool

+operao1( )
#operao2( tipo )
Visibilidade -operao3( valor : tipo )
privada -operacao4( valor : tipo) Nome do
atributo
Nome da
Operao
Visual no
obrigatrio
pela UML
Diagrama de Classes - Exemplo
Diagrama de Classes: Atributos e Mtodos
As classes costumam ter
Atributos: responsveis por armazenar os dados do objeto da classe
Mtodos: so as funes que uma instncia da classe pode executar.
Valores de atributos podem variar de uma instncia para outra.
Por isso, possvel identificar cada objeto individualmente
Os mtodos so idnticos para todas as instncias de uma classe
especfica.
Diagrama de Classes no se preocupa em definir as etapas que os
mtodos devero percorrer quando chamados (Diagrama de
Atividades)
Diagrama de Classes
Uma classe representada por um retngulo com at
trs divises:
A descrio ou nome da classe
Conta
Os atributos e seus tipos (o formato que os dados
devem ter para serem armazenados em um atributo).
numeroConta, do tipo int
saldo, do tipo double, entre outros.

Os mtodos da classe.
abrirConta,
consultarConta,
validarSenha, entre outros.
Diagrama de Classes Exemplo 2
Diagrama de Classes
Os smbolos de mais (+, -, ~ e #) em frente aos
nomes dos atributos e mtodos, representam
a visibilidade dos mesmos
Determina quais objetos de quais classes
podem utilizar o atributo ou o mtodo em
questo.
(-): privado
(+): publico
(#): protegido
(~): pacote

Recomendaes:
atributo pblico JAMAIS
Nomes significativos e padronizados
Diagrama de Classes Representao de Atributo
Exemplos:
ocupante
# ocupante: Jogador
# jogadores: Jogador [2..5] {ordenado, nico}

- numeroConta: long
+ situao: int = 1

Sintaxe de UML para representao de atributo


[<visibilidade >] [/] <nome> [: <tipo>]
[[ <multiplicidade> ]] [= <valor_inicial>]
[{ <propriedade> [, < propriedade >]* }]

*Onde [] indica opcional


Diagrama de Classes Representao de Atributo

Pode ser representado dentro da figura de classe ou


por meio de uma seta (associao unidirecional)

Desvantagem:
Muitos atributos em uma classe = poluio visual!
Diagrama de Classes - Mtodos
Representam comportamentos do objeto
Mtodos podem:
receber valores como parmetros e
retornar valores, (ex: resultado produzido pela execuo do
mtodo)

Recomendao: mtodos pblicos


Meio externo acessa uma classe por seus mtodos
Seguir nomenclatura padronizada
Diagrama de Classes - Mtodos
Exemplos
+ iniciar() representao mnima!
+ alocarPeao (onde : Posicao, quem: Jogador): boolean
+ abrirConta(int) : long
+ sacarValor(valor : float) : float

Sintaxe de UML para representao de mtodo


[<visibilidade>] <nome> ( [<lista_parametros>] )
[: [<tipo_retorno>] { <propriedade> [,
< propriedade >]* }]

Detalhamento dos argumentos Opcional


Alguns mtodos possuem vrios argumentos deixando o diagrama
muito extenso e de difcil visualizao.
Diagrama de Classes - Mtodos
Mtodo concreto composto por assinatura e corpo
Pode ser invocado em tempo de execuo para cumprir a
responsabilidade atribuda a ele
Possui cdigo interno que implementa sua responsabilidade

Mtodo abstrato composto apenas por assinatura


Uma declarao de responsabilidade, mas sem a capacidade
de cumpri-la, em funo da ausncia de algoritmo
A funo (corpo) ser implementada em outra classe

Grafado em itlico!
Diagrama de Classes Classes Concretas e
Abstratas
Classe concreta possui exclusivamente mtodos
concretos
Todos os mtodos so concretos!
Com implementaes

Classe abstrata possui pelo menos um mtodo


abstrato
Identificador (nome) da classe grafado em itlico
Em uma classe abstrata:
Nem todos os mtodos possuem algoritmo definido
No pode originar instncias em tempo de execuo
Diagrama de Classes

Relacionamentos
Relacionamentos ou Associaes
Associaes so os relacionamentos das classes entre si.
Descreve um vinculo que ocorre normalmente entre os
objetos de uma ou mais classes.
Permitem que elas compartilhem informaes entre si e colaborem
para a execuo dos processos executados pelo sistema.
Representadas por linhas ligando as classes envolvidas.
Podem ter nomes ou ttulos para facilitar a compreenso do
tipo de vnculo estabelecido entre os objetos.
Relacionamentos ou Associaes
Tipos de Associaes:
Unria ou Reflexiva;
Binria;
Agregao;
Composio;
Generalizao/Especializao;
Classe Associativa;
Dependncia;
Realizao.
Associao Unria ou Reflexiva
Ocorre quando existe um relacionamento de um objeto
de uma classe com objetos da mesma classe.

Um funcionrio pode ser chefe de outros funcionrios.


chefia: indica a relao entre uma ou mais instncias da classe Funcionario com outras
instncias da prpria classe Funcionrio.
0..*: multiplicidade indica nmero mximo e mnimo de objetos envolvidos em cada
extremidade da associao, alm de permitir especificar o nvel de dependncia de um objeto
com outros.
Ex: um funcionrio pode chefiar nenhum ou muitos funcionrios.
Quando a multiplicidade no aparece, temos a multiplicidade padro 1..1.
+ subordinado: indica papel para explicar a funo de um objeto na associao.
Associao Binria
Ocorre quando so identificados relacionamento entre
objetos de duas classes distintas.
No h herana, nem composio ou agregao

Um objeto da classe Socio pode relacionar-se ou no (0..*) com instncias da classe Dependente.

Um objeto de Dependente dever se relacionar com um objeto de Socio.


Associao Binria - Exemplo
Associao com Navegabilidade Explcita
Representada por uma seta em uma das extremidades da
associao
Identifica o sentido em que as informaes so transmitidas entre
os objetos das classes envolvidas
Ou seja, o sentido em que os mtodos podero ser disparados.

Um objeto da classe Scio poder disparar mtodos em objetos da classe Dependente


em tempo de execuo, mas a recproca no verdadeira.

Navegabilidade no obrigatria
Se no houver setas, significa que as informaes podem trafegar entre os
objetos de todas as classes da associao.
Generalizao/Especializao
Representa a ocorrncia de Herana entre as classes
Identificando a classe-me (ou superclasse, geral) e classes-filhas (ou
subclasses, especializadas)
Demonstra a hierarquia entre as classes e possivelmente
mtodos polimrficos nas classes especializadas.
Ocorre quando h 2 ou + classes com caractersticas muito
semelhantes.
Generalizao/Especializao - Herana
Frase caracterstica:
<subclasse> uma espcie de <superclasse>

Estudante de Graduao uma espcie de Estudante

Frase sem sentido = herana inadequada


Cachorro uma espcie de Gato
Generalizao/Especializao - Herana
Generalizao/Especializao - Herana
Herana unidirecional
Estudante de graduao uma espcie de estudante
MAS estudante NO uma espcie de estudante de
graduao

Os atributos e mtodos da superclasse so herdados


pela subclasse
Ambos tambm fazem parte da subclasse, como se tivessem
sido definidos nela
Generalizao/Especializao - Herana
Pode haver hierarquia de herana
Onde:
Atributos e mtodos de ClasseN herdados
por todas as classes da hierarquia de herana
Agregao
Relacionamento entre DUAS classes que estabelece que
uma instncia de uma agrupa (todo) uma ou mais instncias
da outra (parte)
Relacionamento todo/parte

Relacionamento onde as informaes de um objeto (todo)


precisam ser complementadas pelas informaes contidas
em um ou mais objetos de outra classe (parte).

Vnculo fraco entre classes


A classe parte faz sentido mesmo se a classe todo deixar de
existir

Representao: linha com um losango vazio posicionado na


classe pai (todo)
Agregao - Exemplo

Um time (todo) formado por atletas (partes), ou seja, os atletas so parte integrante de
um time, mas os atletas existem independentemente de um time existir.
Agregao - Exemplo

Um tijolo existe sem uma casa, ou seja, um tijolo pode ser usado na
construo de outra casa.
Composio
Variao da agregao, onde apresentado um vnculo mais
forte entre os objeto todo e os objetos parte
Uma classe PARTE (filha) s faz sentido se uma classe TODO (pai) existir.
Se a classe TODO for apagada, a classe PARTE automaticamente deixar de existir.

Procura demonstrar que os objetos parte tm de estar


associados a um nico objeto todo.
O objeto parte no pode ser compartilhado por mais um objeto todo

Representao: linha com um losango cheio posicionado na


classe pai (todo)
Composio - Exemplo

Um pedido composto por um ou vrios itens, mas um produto


NO item de um pedido se no existe pedido.

Um item do pedido no pode ser compartilhado em mais de um pedido.


Composio - Exemplo

Uma Posio exclusiva de um Tabuleiro (no compartilhada) e


uma Posicao s existe se tiver Tabuleiro

Devo instanciar um Tabuleiro e depois instanciar os objetos


Posicao, pois Tabuleiro possui Posicao.

Se apagar o Tabuleiro, automaticamente apagam-se as posies.


Composio - Exemplo
Uma Edicao no existe sem uma Revista Cientfica

Um Artigo no existe sem uma Edicao da revista

Um objeto RevistaCientifica refere-se a, no mnimo,


um objeto da classe Edicao, podendo se referir a
muitos objetos dessa classe.
Composio - Exemplo

Observe que no faz sentido ter funcionrios, se no existir uma empresa onde eles possam
trabalhar. Se a empresa deixar de existir, automaticamente ela deixar de ter funcionrios.

Um funcionrio trabalha em uma nica empresa (no compartilhado com outras).


Exerccio 01
Exercite a edio de diagramas no astah, desenhando
todos os diagramas ilustrados em sala.
Exerccio 02
Com base no diagrama a seguir, responda:
a. Para que serve / antes do atributo?
b. O que Date[0..1] aps o atributo dt_encerramento?
c. O que = 1 no atributo situao?
Exerccio 03
Descreva, com suas palavras, o diagrama abaixo:

O que identifica x no Tabuleiro?


O que usado ?
Exerccio 04
Como implementar os mecanismos de:
Associao
Agregao
Composio
Interfaces

Implementar um exemplo de cada.


Exerccio 05
Desenvolva o diagrama de classes para um sistema de
locao de veculos, considerando:
A empresa tem muitos automveis. Cada automvel tem
atributos como nmero da placa, cor, ano, tipo de
combustvel, nmero de portas, quilometragem, renavam,
chassis, valor de locao, etc.
Cada carro tem um modelo e uma marca, mas um modelo
pode relacionar-se a muitos carros e uma marca pode referir-
se a muitos modelos, embora cada modelo s tenha uma
marca especfica.
Um carro pode ser alugado por muitos clientes, em
momentos diferentes, e um cliente pode alugar muitos carros.
preciso saber quais carros esto locados ou no. Sempre
que um carro for locado, o sistema precisa armazenar a data
e a hora de sua locao e, quando for devolvido, a data e
hora de devoluo.
Exerccio 06
Desenvolva o diagrama de classes para um sistema de controle de clube social,
com os seguintes requisitos:
- O clube tem muitos scios e precisa manter informaes referentes a eles,
como o nmero de seu carto de scio, nome, endereo, telefone e e-mail.
- Um scio pode ter nenhum ou muitos dependentes, mas um dependente
est associado a somente um scio. O clube precisa manter informaes sobre
os dependentes de cada scio, como o nmero de seu carto, nome,
parentesco e e-mail.
- Um scio deve pertencer a uma nica categoria. No entanto, pode haver
muitos scios pertencentes a uma determinada categoria.
- Um scio deve pagar mensalidades para poder frequentar o clube. Assim,
enquanto permanecer scio do clube, um scio pode pagar muitas
mensalidades, mas uma mensalidade pertence somente a um scio.
Eventualmente um scio pode no estar adimplente. Nesse caso, sero
cobrados juros sobre o valor da mensalidade relativos ao atraso do
pagamento. tambm possvel que um scio nunca tenha pago suas
mensalidades. As informaes pertinentes a cada mensalidade so a data de
pagamento, o valor, a data em que foi efetivamente paga, os possveis juros
aplicados, o valor efetivamente pago e se est quitada ou no.
Exerccio 07
Pesquise a definio, representao no diagrama de
classes e 2 exemplos de:
Classe Associativa
Dependncia
Realizao
Interfaces
Restries
Esteretipos
Dvidas
Prxima Aula

Diagrama de Classes