SlideShare uma empresa Scribd logo
1 de 46
Baixar para ler offline
UML: Diagrama de Classes
© LES/PUC-Rio
UML – Diagrama de Classes
• Introdução – Diagrama de classes
• Elementos do diagrama de classes
• Exemplo: Sistema de matrícula
© LES/PUC-Rio
Introdução - 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
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um diagrama de classes
– Classes
– Relacionamentos
• Associação
– Agregação
– Composição
• Generalização
• Dependência
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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.
• Devem receber nomes de acordo com o vocabulário do
domínio do problema.
• É comum adotar um padrão para nomeá-las
Ex: todos os nomes de classes serão substantivos singulares
com a primeira letra maiúscula
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
• Elementos de um 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:
– Nome: descrição dada ao relacionamento (faz, tem, possui,...)
– Sentido de leitura
– Navegabilidade: indicada por uma seta no fim do relacionamento
– Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7
– Tipo: associação (agregação, composição), generalização e
dependência
– Papéis: desempenhados por classes em um relacionamento
© LES/PUC-Rio
Elementos – Diagrama de Classes
Pessoa Empresa
1..*
Tipo: associação
multiplicidade
*trabalha para
empregado
papéis
empregador
sentido de leitura
• Relacionamentos
E a navegabilidade?
nome
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamentos
• O cliente sabe quais são seus endereços, mas o endereço não sabe
a quais clientes pertence
EndereçoCliente
reside
1 *
navegabilidade
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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
• 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
© 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)
Pessoa Empresa
1..*
associação
multiplicidade
*trabalha para
© LES/PUC-Rio
Relacionamentos: Associação
Relacionamentos: Associação
Exemplo:
• 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
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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”
– um objeto “parte” pode fazer parte de vários objetos “todo”
ItemPedido
1 1..*
agregação
todo parte
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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
– Quando o “todo” morre todas as suas “partes” também morrem
TecladoNotebook
FrameWindow
1 1
1 0..*
1..* 0..*
errado
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Relacionamento: Composição
Ex:
Janela
Scroll Título Corpo
1
0..12 1
Empresa
Departamento Escritório
1
1..*1..*
0..1
*
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Agregação X Composição
Andar Edifício1..n
MesaSala
1..n
11
1..n
1..n
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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)
“é um”
“é um tipo de”
superclasse
subclasse
Veículo
Terrestre Aéreo
© LES/PUC-Rio
Elementos – Diagrama de Classes
• Elementos de um 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:
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
cliente fornecedor
© 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);
}
HelloWorld Graphics
paint(Graphics g)
Applet
© 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
– C possui referência para A e para B
• Não existem dois objetos C e C’que referenciam a mesma tupla
A,B, isto é, não existe c(a,b,x) e c’(a,b,x’) onde a e b são objetos
de A e B, respectivamente, e x e x’ são valores de um atributo de
C.
– d(a,b,x) e d(a,b,x’) existem
A B
C
A D B
© LES/PUC-Rio
Elementos – Diagrama de Classes
PessoaEmpresa
Emprego
descrição
salário
atributos do
relacionamento
1..*0..* trabalha
PessoaEmpresa Pedido
10..*1 0..*
fazpertence
itemPedido
• Não existe uma
pessoa com
dois empregos
na mesma
empresa
• Uma pessoa pode
fazer mais de um
pedido na mesma
empresa
• Classe de associação
© LES/PUC-Rio
Exemplo: O Blog
• Um blog tem um título e uma data de criação e além disso é
um conjunto de conteúdos.
• Estes conteúdos (mensagens) 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)
© LES/PUC-Rio
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.
© LES/PUC-Rio
Blog: Casos de uso
blogSystem
Criar Comentario
Ler Conteudo
Remover Conteudo Remover Nota
Remover Comentario
Criar Blog
Ler Comentario
Ler Nota
Criar Nota
Usuario
Dono do blog
<<include>> <<include>>
<<include>>
© LES/PUC-Rio
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
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
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, porém o número de
estudantes inscritos deve ser entre 3 e 10.
• Estudantes selecionam 4 disciplinas.
• 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. O Coordenador também.
• Todos os usuários do sistema devem ser validados.
Descrição
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Diagrama de Casos de Uso
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Descrição do Caso de Uso “Matricular em Disciplina”
• Esse caso de uso 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.
• 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.
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
Professor Coordenador Estudante
TurmaUniversidade Disciplina
FormularioMatricula
Curso
AnalisadorMatricula
SistemaRegistroAcademico ListaAlunos
Diagrama de Classes: identificando as classes
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
• Exemplos de candidatos a relacionamentos:
– A é parte física ou lógica de B.
– A está contido fisicamente ou logicamente em B.
– A é uma descrição de B.
– A é membro de B.
– A é subunidade organizacional de B.
– A usa ou gerencia B.
– A se comunica/interage com B.
– A está relacionado com uma transação B.
– A é possuído por B.
– A é um tipo de B.
Diagrama de Classes: identificando os relacionamentos
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
• O formulário de matrícula é processado por um analisador
de matrícula
• O analisador de matrícula gerencia a disciplina
FormularioMatricula AnalisadorMatricula
é-processado-por
10..*
Disciplina
FormularioMatricula AnalisadorMatricula
é-processado-por
10..*
1
0..*
Diagrama de Classes: identificando os relacionamentos
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
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
Diagrama de Classes
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
– Os 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
Diagrama de Classes: identificando os atributos
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
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
Diagrama de Classes
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
SIM
submeterFormulario(formulario)
AnalisadorMatricula
adicionar(aluno, disciplina)
: SIM : AnalisadorMatricula
2: adicionar(a,d )
1: submeterFormulario(f)
Diagrama de Classes: identificando os métodos
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
• E a navegabilidade?
public class Turma {
private String codigo;
private String sala;
private Estudante alunos[];
...
}
Diagrama de Classes:
public class Estudante {
private String nome;
private String matricula;
...
}
OBS: Turma não aparece como atributo de Estudante!
TurmaEstudante
3..10
está-matriculado-em
3..10 4
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
• 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()
Diagrama de Classes:
© LES/PUC-Rio
Exemplo: Sistema de Matrícula
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..*

Mais conteúdo relacionado

Mais procurados

POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)Marcello Thiry
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Vitor Hugo Melo Araújo
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetosCleyton Ferrari
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)Janynne Gomes
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Leinylson Fontinele
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)Armando Daniel
 
Apostila de Banco de Dados
Apostila de Banco de Dados Apostila de Banco de Dados
Apostila de Banco de Dados info_cimol
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UMLinfo_cimol
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de SoftwareMarcelo Yamaguti
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesRodrigo Cascarrolho
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Leinylson Fontinele
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Leinylson Fontinele
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLNatanael Simões
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análiseFilipe Soares
 

Mais procurados (20)

POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)POO   - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
POO - Unidade 2 (parte 1) - Diagrama de Classe - Associação (versão 2)
 
Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER Aula 5 - Modelo de Entidade e Relacionamento - MER
Aula 5 - Modelo de Entidade e Relacionamento - MER
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
UML - Diagrama de Pacotes
UML - Diagrama de PacotesUML - Diagrama de Pacotes
UML - Diagrama de Pacotes
 
Programação orientada a objetos
Programação orientada a objetosProgramação orientada a objetos
Programação orientada a objetos
 
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)Aula 4  - Diagrama Entidade Relacionamento (com exercício no final)
Aula 4 - Diagrama Entidade Relacionamento (com exercício no final)
 
Principais diagramas da UML
Principais diagramas da UMLPrincipais diagramas da UML
Principais diagramas da UML
 
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
Banco de Dados I - Aula 06 - Banco de Dados Relacional (Modelo Lógico)
 
Java orientação a objetos (associacao, composicao, agregacao)
Java   orientação a objetos (associacao, composicao, agregacao)Java   orientação a objetos (associacao, composicao, agregacao)
Java orientação a objetos (associacao, composicao, agregacao)
 
Apostila de Banco de Dados
Apostila de Banco de Dados Apostila de Banco de Dados
Apostila de Banco de Dados
 
Exercitando modelagem em UML
Exercitando modelagem em UMLExercitando modelagem em UML
Exercitando modelagem em UML
 
Análise e Modelagem de Software
Análise e Modelagem de SoftwareAnálise e Modelagem de Software
Análise e Modelagem de Software
 
UML - Criando Diagramas Eficientes
UML - Criando Diagramas EficientesUML - Criando Diagramas Eficientes
UML - Criando Diagramas Eficientes
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
Banco de Dados I - Aula 05 - Banco de Dados Relacional (Modelo Conceitual)
 
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
Banco de Dados II Aula 03 - Modelagem de Dados (Modelo Lógico)
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Aula 06 - Diagrama de classes
Aula 06 - Diagrama de classesAula 06 - Diagrama de classes
Aula 06 - Diagrama de classes
 
07 diagrama de classes de análise
07  diagrama de classes de análise07  diagrama de classes de análise
07 diagrama de classes de análise
 
Classes abstratas e interfaces
Classes abstratas e interfacesClasses abstratas e interfaces
Classes abstratas e interfaces
 

Semelhante a UML Diagrama de Classes Sistema Matrícula

Diagrama de Classes (8).pdf
Diagrama de Classes (8).pdfDiagrama de Classes (8).pdf
Diagrama de Classes (8).pdfJean440975
 
Diagrama de classe aula 02 PDF para UML.
Diagrama de classe aula 02 PDF para UML.Diagrama de classe aula 02 PDF para UML.
Diagrama de classe aula 02 PDF para UML.NunoVieira83
 
Diagrama de classe
Diagrama de classeDiagrama de classe
Diagrama de classeSuissa
 
Apresentação sobre Diagrama de Classes com exemplos
Apresentação sobre Diagrama de Classes com exemplosApresentação sobre Diagrama de Classes com exemplos
Apresentação sobre Diagrama de Classes com exemplosmauroladeiafilho
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de umlaudiclerio
 
Aula 3-IDB - Modelo Conceptual-2.pdf
Aula 3-IDB - Modelo Conceptual-2.pdfAula 3-IDB - Modelo Conceptual-2.pdf
Aula 3-IDB - Modelo Conceptual-2.pdfCelestino24
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UMLChristopher Cerqueira
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosCláudio Amaral
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetosGabriel Faustino
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetosGustavo Souza
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxCarlos Albuquerque
 

Semelhante a UML Diagrama de Classes Sistema Matrícula (20)

Diagrama de Classes (8).pdf
Diagrama de Classes (8).pdfDiagrama de Classes (8).pdf
Diagrama de Classes (8).pdf
 
8 02
8 028 02
8 02
 
[CEFET][ESw] Aula 5 - Diagrama de Classe
[CEFET][ESw] Aula 5 - Diagrama de Classe[CEFET][ESw] Aula 5 - Diagrama de Classe
[CEFET][ESw] Aula 5 - Diagrama de Classe
 
Diagrama de classe aula 02 PDF para UML.
Diagrama de classe aula 02 PDF para UML.Diagrama de classe aula 02 PDF para UML.
Diagrama de classe aula 02 PDF para UML.
 
Diagrama de classe
Diagrama de classeDiagrama de classe
Diagrama de classe
 
Apresentação sobre Diagrama de Classes com exemplos
Apresentação sobre Diagrama de Classes com exemplosApresentação sobre Diagrama de Classes com exemplos
Apresentação sobre Diagrama de Classes com exemplos
 
Apostila de uml
Apostila de umlApostila de uml
Apostila de uml
 
Diagrama classes
Diagrama classesDiagrama classes
Diagrama classes
 
Aula 3-IDB - Modelo Conceptual-2.pdf
Aula 3-IDB - Modelo Conceptual-2.pdfAula 3-IDB - Modelo Conceptual-2.pdf
Aula 3-IDB - Modelo Conceptual-2.pdf
 
Paradigma Orientado a Objetos
Paradigma Orientado a ObjetosParadigma Orientado a Objetos
Paradigma Orientado a Objetos
 
[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML[CRASHCOURSE] Orientação a Objeto e UML
[CRASHCOURSE] Orientação a Objeto e UML
 
Aula 7 diagramas_classes2
Aula 7 diagramas_classes2Aula 7 diagramas_classes2
Aula 7 diagramas_classes2
 
Sistema acadêmico
Sistema acadêmicoSistema acadêmico
Sistema acadêmico
 
UMLIntro.pptx
UMLIntro.pptxUMLIntro.pptx
UMLIntro.pptx
 
DER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e RelacionamentosDER - Diagrama de Entidade e Relacionamentos
DER - Diagrama de Entidade e Relacionamentos
 
Metodologia orientado a objetos
Metodologia orientado a objetosMetodologia orientado a objetos
Metodologia orientado a objetos
 
A Linguagem UML
A Linguagem UMLA Linguagem UML
A Linguagem UML
 
Padrões de projetos
Padrões de projetosPadrões de projetos
Padrões de projetos
 
Introdução à linguagem UML
Introdução à linguagem UMLIntrodução à linguagem UML
Introdução à linguagem UML
 
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptxAula sobre Diagrama Classe para a modelagem de requisitos.pptx
Aula sobre Diagrama Classe para a modelagem de requisitos.pptx
 

UML Diagrama de Classes Sistema Matrícula

  • 2. © LES/PUC-Rio UML – Diagrama de Classes • Introdução – Diagrama de classes • Elementos do diagrama de classes • Exemplo: Sistema de matrícula
  • 3. © LES/PUC-Rio Introdução - 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
  • 4. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 5. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 6. © LES/PUC-Rio Elementos – Diagrama de Classes Classes • Graficamente, as classes são representadas por retângulos incluindo nome, atributos e métodos. • Devem receber nomes de acordo com o vocabulário do domínio do problema. • É comum adotar um padrão para nomeá-las Ex: todos os nomes de classes serão substantivos singulares com a primeira letra maiúscula Nome_da_classe atributo1 atributo2 ... metodo1 metodo2 metodo3 ...
  • 7. © 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
  • 8. © 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
  • 9. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 10. © LES/PUC-Rio Elementos – Diagrama de Classes Relacionamentos • Os relacionamentos possuem: – Nome: descrição dada ao relacionamento (faz, tem, possui,...) – Sentido de leitura – Navegabilidade: indicada por uma seta no fim do relacionamento – Multiplicidade: 0..1, 0..*, 1, 1..*, 2, 3..7 – Tipo: associação (agregação, composição), generalização e dependência – Papéis: desempenhados por classes em um relacionamento
  • 11. © LES/PUC-Rio Elementos – Diagrama de Classes Pessoa Empresa 1..* Tipo: associação multiplicidade *trabalha para empregado papéis empregador sentido de leitura • Relacionamentos E a navegabilidade? nome
  • 12. © LES/PUC-Rio Elementos – Diagrama de Classes • Relacionamentos • O cliente sabe quais são seus endereços, mas o endereço não sabe a quais clientes pertence EndereçoCliente reside 1 * navegabilidade
  • 13. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 14. © LES/PUC-Rio Elementos – Diagrama de Classes 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
  • 15. © 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) Pessoa Empresa 1..* associação multiplicidade *trabalha para
  • 16. © LES/PUC-Rio Relacionamentos: Associação Relacionamentos: Associação Exemplo: • 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
  • 17. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 18. © LES/PUC-Rio Elementos – Diagrama de Classes • Relacionamento: Agregação – É um tipo especial de associação – Utilizada para indicar “todo-parte” – um objeto “parte” pode fazer parte de vários objetos “todo” ItemPedido 1 1..* agregação todo parte
  • 19. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 20. © 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 – Quando o “todo” morre todas as suas “partes” também morrem TecladoNotebook FrameWindow 1 1 1 0..* 1..* 0..* errado
  • 21. © LES/PUC-Rio Elementos – Diagrama de Classes • Relacionamento: Composição Ex: Janela Scroll Título Corpo 1 0..12 1 Empresa Departamento Escritório 1 1..*1..* 0..1 *
  • 22. © LES/PUC-Rio Elementos – Diagrama de Classes • Agregação X Composição Andar Edifício1..n MesaSala 1..n 11 1..n 1..n
  • 23. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 24. © LES/PUC-Rio Elementos – Diagrama de Classes • Relacionamento: Generalização • É um relacionamento entre itens gerais (superclasses) e itens mais específicos (subclasses) “é um” “é um tipo de” superclasse subclasse Veículo Terrestre Aéreo
  • 25. © LES/PUC-Rio Elementos – Diagrama de Classes • Elementos de um diagrama de classes – Classes – Relacionamentos • Associação – Agregação – Composição • Generalização • Dependência
  • 26. © 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: 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 cliente fornecedor
  • 27. © 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); } HelloWorld Graphics paint(Graphics g) Applet
  • 28. © 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 – C possui referência para A e para B • Não existem dois objetos C e C’que referenciam a mesma tupla A,B, isto é, não existe c(a,b,x) e c’(a,b,x’) onde a e b são objetos de A e B, respectivamente, e x e x’ são valores de um atributo de C. – d(a,b,x) e d(a,b,x’) existem A B C A D B
  • 29. © LES/PUC-Rio Elementos – Diagrama de Classes PessoaEmpresa Emprego descrição salário atributos do relacionamento 1..*0..* trabalha PessoaEmpresa Pedido 10..*1 0..* fazpertence itemPedido • Não existe uma pessoa com dois empregos na mesma empresa • Uma pessoa pode fazer mais de um pedido na mesma empresa • Classe de associação
  • 30. © LES/PUC-Rio Exemplo: O Blog • Um blog tem um título e uma data de criação e além disso é um conjunto de conteúdos. • Estes conteúdos (mensagens) 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)
  • 31. © LES/PUC-Rio 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.
  • 32. © LES/PUC-Rio Blog: Casos de uso blogSystem Criar Comentario Ler Conteudo Remover Conteudo Remover Nota Remover Comentario Criar Blog Ler Comentario Ler Nota Criar Nota Usuario Dono do blog <<include>> <<include>> <<include>>
  • 33. © LES/PUC-Rio 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
  • 34. © LES/PUC-Rio Exemplo: Sistema de Matrícula 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, porém o número de estudantes inscritos deve ser entre 3 e 10. • Estudantes selecionam 4 disciplinas. • 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. O Coordenador também. • Todos os usuários do sistema devem ser validados. Descrição
  • 35. © LES/PUC-Rio Exemplo: Sistema de Matrícula Diagrama de Casos de Uso
  • 36. © LES/PUC-Rio Exemplo: Sistema de Matrícula Descrição do Caso de Uso “Matricular em Disciplina” • Esse caso de uso 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. • 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.
  • 37. © LES/PUC-Rio Exemplo: Sistema de Matrícula Professor Coordenador Estudante TurmaUniversidade Disciplina FormularioMatricula Curso AnalisadorMatricula SistemaRegistroAcademico ListaAlunos Diagrama de Classes: identificando as classes
  • 38. © LES/PUC-Rio Exemplo: Sistema de Matrícula • Exemplos de candidatos a relacionamentos: – A é parte física ou lógica de B. – A está contido fisicamente ou logicamente em B. – A é uma descrição de B. – A é membro de B. – A é subunidade organizacional de B. – A usa ou gerencia B. – A se comunica/interage com B. – A está relacionado com uma transação B. – A é possuído por B. – A é um tipo de B. Diagrama de Classes: identificando os relacionamentos
  • 39. © LES/PUC-Rio Exemplo: Sistema de Matrícula • O formulário de matrícula é processado por um analisador de matrícula • O analisador de matrícula gerencia a disciplina FormularioMatricula AnalisadorMatricula é-processado-por 10..* Disciplina FormularioMatricula AnalisadorMatricula é-processado-por 10..* 1 0..* Diagrama de Classes: identificando os relacionamentos
  • 40. © LES/PUC-Rio Exemplo: Sistema de Matrícula 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 Diagrama de Classes
  • 41. © LES/PUC-Rio Exemplo: Sistema de Matrícula – Os 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 Diagrama de Classes: identificando os atributos
  • 42. © LES/PUC-Rio Exemplo: Sistema de Matrícula 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 Diagrama de Classes
  • 43. © LES/PUC-Rio Exemplo: Sistema de Matrícula SIM submeterFormulario(formulario) AnalisadorMatricula adicionar(aluno, disciplina) : SIM : AnalisadorMatricula 2: adicionar(a,d ) 1: submeterFormulario(f) Diagrama de Classes: identificando os métodos
  • 44. © LES/PUC-Rio Exemplo: Sistema de Matrícula • E a navegabilidade? public class Turma { private String codigo; private String sala; private Estudante alunos[]; ... } Diagrama de Classes: public class Estudante { private String nome; private String matricula; ... } OBS: Turma não aparece como atributo de Estudante! TurmaEstudante 3..10 está-matriculado-em 3..10 4
  • 45. © LES/PUC-Rio Exemplo: Sistema de Matrícula • 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() Diagrama de Classes:
  • 46. © LES/PUC-Rio Exemplo: Sistema de Matrícula 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..*