Buscar

UML-DiagramaClasses

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 34 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

UML - Diagrama de Classes
2
Diagrama de Classes
• Mostra um conjunto de classes e seus relacionamentos.
• É o diagrama central da modelagem orientada a objetos.
Aluno
nome: Texto
matrícula: Inteiro
definirNome(nome)
obterNome()
definirMatricula(matricula)
obterMatricula
Turma
código: Texto
sala: Texto
horario: Horario
estaAberta()
definirProfessor(professor)
incluirAluno(aluno)
está-matriculado-em
Professor
nome: Texto
titulação: Texto
definirNome(nome)
obterNome()
definirTitulacao(titulo)
obterTitulacao
é-ministrada-por
3
Classes
• Graficamente, as classes são representadas por retângulos 
incluindo seu nome, atributos e métodos.
• Devem receber nomes de acordo com o vocabulário do 
domínio do problema.
• É comum adotar-se padrões para nomeá-las.
– Por exemplo, todos os nomes de classes são substantivos 
singulares com a primeira letra maiúscula.
Nome_da_classe
atributo1
atributo2
...
metodo1
metodo2
metodo3
...
4
Classes: atributos
• Atributos
– Representam o estado (conjunto de características) que a 
classe modela
– Visibilidade:
• + público: visível em qualquer classe de qualquer pacote 
• # protegido: vísivel para classes do mesmo pacote
• - privado: visível somente dentro da classe
– Exemplo:
• + rua : String
5
Classes: métodos
• Métodos
– Representam o comportamento (conjunto de operações) 
que a classe fornece
– Visibilidade:
• + público: visível em qualquer classe de qualquer pacote 
• # protegido: vísivel para classes do mesmo pacote
• - privado: visível somente dentro da classe
– Exemplo:
• + setEndereco(rua: String, numero: int, bairro: String): void
6
Relacionamentos
• Relacionamentos
– nome: descrição dada ao relacionamento (faz, tem, possui,...)
– sentido de leitura do relacionamento
– navegabilidade: indicada por uma seta no fim do 
relacionamento
– navegabilidade ≠ sentido de leitura
– multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
– tipos de relacionamentos: associação (agregação, composição), 
generalização e dependência
• Papéis
– Desempenhados por classes em um relacionamento
7
Relacionamentos: Associação
• Uma associação é um relacionamento estrutural que indica 
que os objetos de uma classe estão vinculados a objetos de 
outra classe.
• Uma associação é representada por uma linha sólida 
conectando duas classes.
Pessoa Empresa
associação
8
Relacionamentos: Associação
• Uma associação pode ter um nome.
– Torna mais clara a natureza do relacionamento.
• Se necessário podemos incluir um triângulo para indicar a direção 
de leitura do nome.
– Evita ambigüidades
Empresa Pessoa
trabalha para
associação
direção do nome nome
9
Relacionamentos: Associação
• Quando uma classe participa de uma associação, ela 
desempenha um papel nesse relacionamento.
– Evidencia a finalidade ou função de cada classe da associação.
– Uma mesma classe pode desempenhar vários papéis em 
diversas associações.
Pessoa Empresaempregado
nome do papel
associação
empregador
10
Relacionamentos: Associação
• Multiplicidade é o número de instâncias de uma 
classe que se relacionam com uma instância de 
outra classe.
Pessoa Empresa1..*
associação
multiplicidade
*trabalha para
11
Relacionamentos: Associação
• Indicadores de multiplicidade mais comuns:
– 1 Exatamente um
– 1..* Um ou mais
– 0..* Zero ou mais (muitos)
– * Zero ou mais (muitos)
– 0..1 Zero ou um
– m..n Faixa de valores (por exemplo: 4..7)
Pessoa Empresa1..*
associação
multiplicidade
*trabalha para
12
Relacionamentos: Associação
• Um Estudante pode ser um aluno de uma Disciplina e um 
jogador da Equipe de Futebol
• Cada Disciplina deve ser cursada por no mínimo 1 aluno
• Um aluno pode cursar de 0 até 8 disciplinas
13
• Em geral, associações são bidirecionais.
– Pode ser desejável limitar sua ”navegação” em uma única 
direção.
– A navegabilidade é indicada por uma seta em uma das 
extremidades da associação.
• Um cliente sabe quais são os seus endereços, mas o endereço não 
sabe qual é o seu cliente.
Relacionamentos: Associação
EndereçoCliente
reside
1 *
navegabilidade
14
Relacionamentos: Agregação
• Uma agregação é um tipo especial de associação utilizada 
para indicar um relacionamento ”todo-parte”.
• Uma agregação é representada por uma linha sólida com um 
losango vazado na extremidade referente ao todo.
• O significado da agregação é inteiramente conceitual, o 
losango simplesmente diferencia o todo da parte.
• Um objeto “parte” pode fazer parte de vários objetos “todo”.
ItemPedido
1 1..*
agregação
todo parte
15
Relacionamentos: Composição
• Em uma composição, os objetos “parte” só podem pertencer a 
um único objeto “todo” e têm seu tempo de vida coincidente com 
o dele.
– É uma variante semanticamente mais ”forte” da agregação
– É representada por uma linha contínua com um losango cheio na 
extremidade referente ao todo.
TecladoNotebook
FrameWindow
todo parte
1 1
1 0..*
1..* 0..*
errado
– Quando o todo “morre” todas as suas partes também “morrem”
– Apenas o todo pode criar e destruir as partes
16
Relacionamentos: Composição
Janela
Scroll Título Corpo
1
0..12 1
Empresa
Departamento Escritório
1
1..*1..*
0..1
*
17
Agregação x Composição
18
Relacionamentos: Dependência
• Uma dependência é um relacionamento de utilização 
entre dois itens, no qual a alteração de um (o item 
independente) pode afetar o outro (o item 
dependente).
– É representada por uma linha tracejada com uma seta 
apontando para o item independente.
• A classe cliente não declara nos seus atributos um objeto do tipo 
fornecedor.
cliente fornecedor
19
Relacionamentos: Dependência
Import java.awt.Graphics;
class HelloWorld extends java.applet.Applet
{
public void paint (Graphics g)
g.drawString(“Hello, world!”, 10, 10);
}
HelloWorld Graphics
paint(Graphics g)
Applet
20
Relacionamentos: Generalização
• Uma generalização é um relacionamento entre itens 
gerais (superclasse) e itens mais específicos (subclasses).
– É representada por uma linha sólida com um triângulo vazado 
apontando para o item mais geral.
“é um”
“é um tipo de”
superclasse
subclasse
Veículo Terrestre
Automóvel Caminhão
21
O Blog (exemplo)
• Um blog tem um título e uma data de criação e além disso é 
um conjunto de conteúdos. 
• Estes conteúdos podem ser notas ou comentários sobre as 
notas. Tanto notas quanto comentários têm características 
comuns como o texto e a data de sua criação.
• Todo usuário possui:
– E-mail (deve ser único, ou seja, não há mais de um usuário 
com o mesmo e-mail)
22
Blog: o sistema deve...
• Permitir a criação de blogs 
• Permitir a utilização de blogs 
– Qualquer usuário pode ler conteúdos
– Somente o dono do blog pode criar notas
– Qualquer usuário pode criar comentários. Para criar um 
comentário o usuários precisa ler as notas.
– Somente o dono do blog pode remover conteúdos. Para 
remover um conteúdo ele precisará ler o conteúdo. Caso ele 
remova um comentário, o autor do comentário deve ser 
notificado por e-mail.
23
Blog: Diagrama de Classes
0..*
1 autor
0..*
0..*
1 dono
0..* 1
usuario
0..*
usaUsuarioBlog
-email:String
+notificarExclusao:void
Conteudo
-dtCriacao:Date
-texto:String
-autor:UsuarioBlog
+Conteudo
+exibirConteudo:void
Blog
-dtCriacao:Date
-titulo:String
-dono:UsuarioBlog
-conteudos:Vector
+criarNota:void
+exibirConteudo:void
+comentar:void
+lerComentarios:Vector
+removerConteudo:void
+lerNotas:Vector
+Blog
Nota
-comentarios:Vector-attribute1:int
+comentar:void
+lerComentarios:Vector
+finalize:void
Comentario
+finalize:void
24
Sistema de Matrícula (exemplo)
• A Universidade XYZ deseja informatizar seu sistema de matrículas:
• A universidade oferece vários cursos.
• O Coordenador de um curso define as disciplinas que serão 
oferecidas pelo seu curso num dado semestre.
• Várias disciplinas são oferecidas em um curso.
• Várias turmas podem ser abertas para uma mesma disciplina.
• Estudantes selecionam 4 disciplinas preferenciais e 2 alternativas.
• Quando um estudante matricula-se para um semestre, o Sistema 
de Registro Acadêmico (SRA) é notificado.
• Após a matrícula, os estudantes podem, por um certo prazo, 
utilizar o sistema para adicionar ou remover disciplinas.
• Professores usam o sistema para obter a lista de alunos 
matriculados em suas disciplinas.
• Todos os usuários do sistema devem ser validados.
25
“Matricular em Disciplina”
• Esse cenário se inicia quando o Estudante de Curso inicia uma 
sessão no sistema e apresenta suas credenciais.
• O sistema verifica se a credencial é válida.
• O sistema solicita que o estudante realize sua matrícula, 
selecionando 4 disciplinas preferenciais e 2 alternativas.
• O estudante preenche um formulário eletrônico de matrícula e o 
submete para uma análise de consistência.
• O sistema analisa as informações contidas no formulário.
• Se as informações são consistentes, o estudante é incluído em 
turmas abertas de 4 disciplinas, iniciando pelas preferenciais.
• Se as informações não são consistentes, o sistema informa o 
motivo da inconsistência e solicita que o formulário seja alterado.
26
Diagrama de Classe
Professor Coordenador Estudante
TurmaUniversidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
27
Diagrama de Classe
Professor
Coordenador
Estudante Turma
Disciplina
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*
1
0..*
11..*
1
1..*
10..33..10 4
28
Diagrama de Classe
• Atributos podem ser encontrados examinando-se as 
descrições dos casos de uso e também pelo conhecimento 
do domínio do problema.
• Cada turma oferecida 
possui um código, uma 
sala e um horário.
Turma
código
sala
horário
29
Diagrama de Classe
Coordenador
FormularioMatricula AnalisadorMatricula
é-preenchido-por
está-matriculado-em
é-processado-por
é-ministrada-por
é-definida-por
aluno
gerencia
1
1
10..*
1
0..*
11..*
1
1..*
10..33..10 4
Turma
código
sala
horário
Professor
nome
titulação
Estudante
nome
matricula
Disciplina
nome
numCréditos
30
Diagrama de Seqüência
• Detalhes e elementos descobertos durante a criação dos 
diagramas de interação são acrescentados ao diagrama de 
classe.
 : SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
31
Diagrama de Classe
public class Turma {
private Estudante alunos[];
public Turma() {
}
}
public class Estudante {
// Turma não aparece como atributo!
public Estudante() {
}
}
TurmaEstudante
3..10 4
está-matriculado-em
3..10 4
• Acrescentando navegabilidade
32
Diagrama de Classe
• Acrescentando dependências.
• Existe um relacionamento de dependência entre duas 
classes quando:
– uma classe utiliza outra somente como parâmetro de entrada 
na assinatura de ao menos uma de suas operações.
– uma classe utiliza outra somente como variável local de ao 
menos um de seus métodos.
Estudante
nome : Texto
matricula : Inteiro
definirNome(nome)
obterNome()
definirMatricula(matricula)
obterMatricula()
Disciplina
nome : Texto
numCreditos : Inteiro
estaCompleta()
adicionar(aluno : Estudante)
33
Modelo de Classes de Projeto
• Acrescentando generalizações.
• Atributos, operações e/ou relacionamentos comuns podem 
ser movidos para uma classe mais geral.
Estudante
matricula : Inteiro
definirMatricula(matricula)
obterMatricula()
Usuario
nome : Texto
definirNome(nome)
obterNome()
Professor
titulacao : Texto
definirTitulacao(titulacao)
obterTitulacao()
34
Diagrama de Classe
SIM
Usuario
nome : Texto
definirNome(nome)
obterNome()
FormularioMatricula
obterEstudante() : Estudante
obterNomeDIsciplina(i : Inteiro) : Texto
Estudante
matricula : Inteiro
definirMatricula(matricula)
obterMatricula()
1
1
é-preenchido-por
1
1-aluno
Professor
titulacao : Texto
definirTitulacao(titulacao)
obterTitulacao()
AnalisadorMatricula
adicionar(aluno, disciplina) 1 11 1
usa
10..* 10..*
é-processado-por
Disciplina
nome : Texto
numCreditos : Inteiro
estaCompleta()
adicionar(aluno : Estudante)
0..*
1
0..*
1
gerencia
Turma
codigo : Texto
sala : Texto
horario : Horario
numAlunos : Inteiro
completa : Booleano
estaCompleta() : Booleano
3..10
4
3..10
4
está-matriculado-em
0..3 10..3 1
responsável-por
1..*
11
1..*
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28
	Slide 29
	Slide 30
	Slide 31
	Slide 32
	Slide 33
	Slide 34

Outros materiais