Escolar Documentos
Profissional Documentos
Cultura Documentos
Diagrama Classes
Diagrama Classes
© LES/PUC-Rio
Introdução - Diagrama de Classes
Turma
código: Texto
está-matriculado-em é-ministrada-por
sala: Texto
horario: Horario
Aluno Professor
estaAberta()
definirProfessor(professor)
nome: Texto nome: Texto
incluirAluno(aluno)
matrícula: Inteiro titulação: Texto
definirNome(nome) definirNome(nome)
obterNome() obterNome()
definirMatricula(matricula) definirTitulacao(titulo)
obterMatricula obterTitulacao
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
Classes
• Graficamente, as classes são representadas por retângulos
incluindo nome, atributos e métodos.
Nome_da_classe
atributo1
atributo2
...
metodo1
metodo2
metodo3
...
© LES/PUC-Rio
Elementos – Diagrama de Classes
Classes
• Atributos
– Representam o conjunto de características (estado)
dos objetos daquela classe
– Visibilidade:
+ público: visível em qualquer classe de qualquer pacote
# protegido: visível para classes do mesmo pacote
- privado: visível somente para classe
Exemplo:
+ nome : String
© LES/PUC-Rio
Elementos – Diagrama de Classes
Classes
• Métodos
– Representam o conjunto de operações (comportamento)
que a classe fornece
– Visibilidade:
+ público: visível em qualquer classe de qualquer pacote
# protegido: visível para classes do mesmo pacote
- privado: visível somente para classe
Exemplo:
- getNome() : String
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
Relacionamentos
• Os relacionamentos possuem:
– Sentido de leitura
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamentos
nome
Tipo: associação
papéis
E a navegabilidade?
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamentos
navegabilidade
reside
Cliente 1 *
Endereço
• O cliente sabe quais são seus endereços, mas o endereço não sabe
a quais clientes pertence
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
Relacionamentos: Associação
Pessoa Empresa
associação
© LES/PUC-Rio
Elementos – Diagrama de Classes
Relacionamentos: Associação
• Indicadores de multiplicidade:
– 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)
multiplicidade
associação
© LES/PUC-Rio
Relacionamentos: Associação
Relacionamentos: Associação
Exemplo:
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Agregação
– É um tipo especial de associação
– Utilizada para indicar “todo-parte”
todo parte
1 1..*
Pedido Item
agregação
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Composição
– É uma variante semanticamente mais “forte” da agregação
– Os objetos “parte” só podem pertencer a um único objeto “todo” e têm
o seu tempo de vida coincidente com o dele
1 1
Notebook Teclado
1 0..*
Window Frame
1..* 0..*
errado
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Composição
Ex:
Empresa
1
1..* 1..*
0..1
Departamento Escritório
*
Janela
1
2 0..1 1
Scroll Título Corpo
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Agregação X Composição
Sala Mesa
1
1..n
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Generalização
• É um relacionamento entre itens gerais (superclasses)
e itens mais específicos (subclasses)
superclasse Veículo
“é um”
“é um tipo de”
© LES/PUC-Rio
Elementos – Diagrama de Classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Dependência
• Representa que a alteração de um objeto (o objeto
indepedendente) pode afetar outro objeto (o objeto dependente)
Ex:
cliente fornecedor
Obs:
• A classe cliente depende de algum serviço da classe fornecedor
• A mudança de estado do fornecedor afeta o objeto cliente
• A classe cliente não declara nos seus atributos um objeto do tipo
fornecedor
• Fornecedor é recebido por parâmetro de método
© LES/PUC-Rio
Elementos – Diagrama de Classes
Import java.awt.Graphics;
class HelloWorld extends java.applet.Applet
{
public void paint (Graphics g)
g.drawString(“Hello, world!”, 10, 10);
}
Applet
HelloWorld Graphics
paint(Graphics g)
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Classe de associação
– Usada quando uma associação entre duas classes
contiver atributos da associação
• Atributos farão parte da classe de associação
• C existe para todo relacionamento de A com B A B
A D B
– d(a,b,x) e d(a,b,x’) existem
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Classe de associação
0..* trabalha 1..*
Empresa Pessoa
1 0..* 0..* 1
Empresa Pedido Pessoa
pertence faz
itemPedido
© LES/PUC-Rio
Exemplo: O Blog
© LES/PUC-Rio
Blog: o sistema deve...
© LES/PUC-Rio
Blog: Casos de uso
blogSystem
Criar Blog
<<include>>
Criar Comentario
Usuario
Ler Comentario
<<include>> <<include>>
Remover Comentario
© LES/PUC-Rio
Blog: Diagrama de Classes
Blog
0..*
-dtCriacao:Date
-titulo:String
-dono:UsuarioBlog
-conteudos:Vector
+criarNota:void
1 dono
+exibirConteudo:void
UsuarioBlog 0..* usa 1 +comentar:void
usuario +lerComentarios:Vector
-email:String +removerConteudo:void
+lerNotas:Vector
+notificarExclusao:void +Blog
1 autor
0..*
Conteudo
0..*
-dtCriacao:Date
-texto:String
-autor:UsuarioBlog
+Conteudo
+exibirConteudo:void
Nota
Comentario
-comentarios:Vector 0..*
-attribute1:int
+finalize:void
+comentar:void
+lerComentarios:Vector
+finalize:void
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Descrição
• O Coordenador de um curso define as disciplinas que serão oferecidas pelo seu curso
num dado semestre.
• Várias turmas podem ser abertas para uma mesma disciplina, porém o número de
estudantes inscritos deve ser entre 3 e 10.
• Após a matrícula, os estudantes podem, por um certo prazo, utilizar o sistema para
adicionar ou remover disciplinas.
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Diagrama de Casos de Uso
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
• Esse caso de uso se inicia quando o Estudante de Curso inicia uma sessão no
sistema e apresenta suas credenciais.
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
FormularioMatricula AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
é-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1
0..*
Disciplina
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Diagrama de Classes
é-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1 1
gerencia
0..*
é-preenchido-por é-definida-por
Disciplina Coordenador
1..* 1
1
aluno 1 1..*
está-matriculado-em é-ministrada-por
Estudante Turma Professor
3..10 4 0..3 1
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Turma
– Cada turma oferecida possui
código
um código, uma sala e um sala
horário. horário
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Diagrama de Classes
é-processado-por
FormularioMatricula AnalisadorMatricula
0..* 1
1 1
gerencia
0..*
Disciplina
é-definida-por
é-preenchido-por nome Coordenador
1..* 1
numCréditos
1
1..*
aluno 1
Turma
Estudante código é-ministrada-por
Professor
está-matriculado-em
nome sala nome
3..10 4 0..3 1
matricula horário titulação
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
: SIM : AnalisadorMatricula
AnalisadorMatricula
2: adicionar(a,d )
SIM
submeterFormulario(formulario)
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Diagrama de Classes:
• E a navegabilidade?
Diagrama de Classes:
• Acrescentando generalizações:
– Atributos, operações e/ou relacionamentos comuns podem ser
movidos para uma classe mais geral.
Us uario
nome : Texto
definirNome(nome)
obterNome()
Estudante Professor
matricula : Inteiro titulacao : Texto
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
FormularioMatricula
é -pr ocessado-por AnalisadorMatricula
usa SIM
obterEstudante() : Estudante 0.. * 1 adic ion ar(alun o, di s cipli na) 1 1
obterNomeDIsciplina(i : Inteiro) : Texto
1
1
é-preenchido-por gerencia
-aluno 1
0..*
Estudante
matricula : Inteiro Disciplina
nome : Texto
definirMatricula(matricula) numCreditos : Inteiro
obterMatricula()
3.. 10
estaCompleta()
adicionar(aluno : Estudante)
1
está-m atriculado-em
Usuario
nome : Texto
definirNome(nom e)
obterNom e() 1..*
Turma
codigo : Texto
sala : Texto
4 horario : Horario
Professor num Alunos : Inteiro
responsável-por
titulacao : Texto com pleta : Booleano
0..3 1
definirTitulacao(titulacao) estaCompleta() : Booleano
obterTitulacao()
© LES/PUC-Rio