SlideShare uma empresa Scribd logo
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 (20)

PPT
AOO - Diagrama de Caso de Uso
Maria Alice Jovinski
 
PDF
Aula UML - Unified Modeling Language
Cloves da Rocha
 
PPT
Caso De Uso
Rayol Neto
 
PPT
Apresentação da UML
Eliseu Castelo
 
PDF
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
ODP
Diagrama de Casos de Uso
Nécio de Lima Veras
 
PPT
Aula8 diagrama sequencia
Computação Depressão
 
PPT
Uml
Túlio Filho
 
PDF
Modelos de Engenharia de Software
Nathalia Sautchuk Patricio
 
PDF
Aula 06 - Diagrama de classes
Leinylson Fontinele
 
PDF
Introdução a JavaScript
Bruno Catão
 
PDF
Aula 1 - Introdução a POO
Daniel Brandão
 
PPTX
Aula diagrama de classes
Márcia Rodrigues
 
PPT
Diagramas de casos de uso - aula 2
Franklin Matos Correia
 
PDF
Diagrama de classe aula 02 PDF para UML.
NunoVieira83
 
PPTX
Programação orientada a objetos
Cleyton Ferrari
 
PDF
Programação Orientação a Objetos - Herança
Daniel Brandão
 
PDF
Introdução à linguagem UML
Nécio de Lima Veras
 
PDF
Aula 7 - Modelagem de Software
Leinylson Fontinele
 
ODP
Modelos de processos de software
Nécio de Lima Veras
 
AOO - Diagrama de Caso de Uso
Maria Alice Jovinski
 
Aula UML - Unified Modeling Language
Cloves da Rocha
 
Caso De Uso
Rayol Neto
 
Apresentação da UML
Eliseu Castelo
 
Aula 02 - Principios da Orientação a Objetos (POO)
Daniel Brandão
 
Diagrama de Casos de Uso
Nécio de Lima Veras
 
Aula8 diagrama sequencia
Computação Depressão
 
Modelos de Engenharia de Software
Nathalia Sautchuk Patricio
 
Aula 06 - Diagrama de classes
Leinylson Fontinele
 
Introdução a JavaScript
Bruno Catão
 
Aula 1 - Introdução a POO
Daniel Brandão
 
Aula diagrama de classes
Márcia Rodrigues
 
Diagramas de casos de uso - aula 2
Franklin Matos Correia
 
Diagrama de classe aula 02 PDF para UML.
NunoVieira83
 
Programação orientada a objetos
Cleyton Ferrari
 
Programação Orientação a Objetos - Herança
Daniel Brandão
 
Introdução à linguagem UML
Nécio de Lima Veras
 
Aula 7 - Modelagem de Software
Leinylson Fontinele
 
Modelos de processos de software
Nécio de Lima Veras
 

Destaque (12)

PDF
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Leonardo Alcantara
 
PPT
Si diagrama de classes
Andreia Gonçalves
 
PPT
Diagrama de classe
Suissa
 
PPT
Si modelação dados
Andreia Gonçalves
 
PPT
01 guia cd - mod1
Andreia Gonçalves
 
PDF
Sistemas Computacionais Aula 07 - Sistemas de Informação Organizacionais (SI...
Leinylson Fontinele
 
PDF
Sistemas Computacionais Aula 05 - Tipos de Sistemas de Informação, Exemplos d...
Leinylson Fontinele
 
PDF
Exercicio de UML - Documentacao Restaurante
Juliana Cindra
 
PPTX
graficos do MU e MUV
Marcela Cavalcanti
 
PPT
Análise Orientada a Objetos - Objetos E Classes
CursoSENAC
 
PPT
UML - Criando Diagramas Eficientes
Rodrigo Cascarrolho
 
PPT
Aula de física movimento, repouso, velocidade média
luam1969
 
Desenvolvimento de um modelo de simulação social da cidade de Mandirituba
Leonardo Alcantara
 
Si diagrama de classes
Andreia Gonçalves
 
Diagrama de classe
Suissa
 
Si modelação dados
Andreia Gonçalves
 
01 guia cd - mod1
Andreia Gonçalves
 
Sistemas Computacionais Aula 07 - Sistemas de Informação Organizacionais (SI...
Leinylson Fontinele
 
Sistemas Computacionais Aula 05 - Tipos de Sistemas de Informação, Exemplos d...
Leinylson Fontinele
 
Exercicio de UML - Documentacao Restaurante
Juliana Cindra
 
graficos do MU e MUV
Marcela Cavalcanti
 
Análise Orientada a Objetos - Objetos E Classes
CursoSENAC
 
UML - Criando Diagramas Eficientes
Rodrigo Cascarrolho
 
Aula de física movimento, repouso, velocidade média
luam1969
 
Anúncio

Semelhante a Diagrama de Classes (20)

PDF
Diagrama de Classes (8).pdf
Jean440975
 
PDF
Aula 02 - UML e Padrões de Projeto
Vinícius de Paula
 
PDF
[CEFET][ESw] Aula 5 - Diagrama de Classe
Universidade Federal de Minas Gerais
 
PPTX
Programação Orientada a Objetos - POO (IFPI)
silviorangel10
 
PPTX
Apresentação sobre Diagrama de Classes com exemplos
mauroladeiafilho
 
PDF
Apostila de uml
audiclerio
 
PDF
Diagrama classes
Gabriel Faustino
 
PPTX
Introdução e conceitos sobre padrão UML.pptx
ClovisJunior55
 
PDF
Aula 3-IDB - Modelo Conceptual-2.pdf
Celestino24
 
PDF
Paradigma Orientado a Objetos
Álvaro Farias Pinheiro
 
PDF
[CRASHCOURSE] Orientação a Objeto e UML
Christopher Cerqueira
 
PDF
Aula 7 diagramas_classes2
Portal_do_estudante_ADS
 
PDF
Sistema acadêmico
Leinylson Fontinele
 
PPTX
UMLIntro.pptx
RicardoMarciano5
 
PDF
ISAF_bd_06_ER.pdf434756585768673577455765
tomastenete7
 
PPTX
DER - Diagrama de Entidade e Relacionamentos
Cláudio Amaral
 
PDF
Metodologia orientado a objetos
Gabriel Faustino
 
ODP
A Linguagem UML
Nécio de Lima Veras
 
PDF
Padrões de projetos
Gustavo Souza
 
Diagrama de Classes (8).pdf
Jean440975
 
Aula 02 - UML e Padrões de Projeto
Vinícius de Paula
 
[CEFET][ESw] Aula 5 - Diagrama de Classe
Universidade Federal de Minas Gerais
 
Programação Orientada a Objetos - POO (IFPI)
silviorangel10
 
Apresentação sobre Diagrama de Classes com exemplos
mauroladeiafilho
 
Apostila de uml
audiclerio
 
Diagrama classes
Gabriel Faustino
 
Introdução e conceitos sobre padrão UML.pptx
ClovisJunior55
 
Aula 3-IDB - Modelo Conceptual-2.pdf
Celestino24
 
Paradigma Orientado a Objetos
Álvaro Farias Pinheiro
 
[CRASHCOURSE] Orientação a Objeto e UML
Christopher Cerqueira
 
Aula 7 diagramas_classes2
Portal_do_estudante_ADS
 
Sistema acadêmico
Leinylson Fontinele
 
UMLIntro.pptx
RicardoMarciano5
 
ISAF_bd_06_ER.pdf434756585768673577455765
tomastenete7
 
DER - Diagrama de Entidade e Relacionamentos
Cláudio Amaral
 
Metodologia orientado a objetos
Gabriel Faustino
 
A Linguagem UML
Nécio de Lima Veras
 
Padrões de projetos
Gustavo Souza
 
Anúncio

Último (20)

PDF
A festa de anos da avó.pdfe também dos netos
biblioteca123
 
PDF
🎶 Uma noite de fado em Lisboa.pdfe que fado
biblioteca123
 
DOCX
Mapa da Nova Zelândia - Mapa dos Países do Mundo .docx
Doug Caesar
 
PDF
Na Unidade de Saúde Familiar.pdf ou centro de saúde
biblioteca123
 
PDF
💌 Carta Informal-férias.pdf, Açores nove ilhas
biblioteca123
 
PDF
A história da Maria Un1aula1.pdfe do Manel
biblioteca123
 
PDF
Indicações na cidade.pdf com mapas e tudo
biblioteca123
 
PPTX
Slides Lição 4, CG, Pedro, A Epístola Da Esperança, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
PDF
Aula. Fraudes nas relações de trabalho.pdf
MariaJosRios3
 
PDF
DiálogoRedes sociais.pdfinstagram, tik tok
biblioteca123
 
DOCX
Mapa da Oceania - Países e Dependências.docx
Doug Caesar
 
PDF
Reflexão_Uma análise às licenciaturas que permitem aceder aos mestrados de en...
Nelson Santos
 
PDF
🎨 DiálogoGraça Morais.pdfartista plástica
biblioteca123
 
PPTX
Bandeira dos Países do Mundo África.pptx
Doug Caesar
 
PDF
Visita ao museu.pdf, museu marítimo de Ílhavo
biblioteca123
 
PPTX
Slides Lição 4, Betel, O Primeiro Milagre de Jesus, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
PDF
🧑Entrevista de trabalho.pdf para um lugar
biblioteca123
 
PDF
🩺 Ser Enfermeiro.pdfou médico ou outra coisa
biblioteca123
 
PDF
Rotina diáriaA1-A2.pdf com montes de coisas.
biblioteca123
 
DOCX
Mapa da Austrália - Mapa dos Países do Mundo.docx
Doug Caesar
 
A festa de anos da avó.pdfe também dos netos
biblioteca123
 
🎶 Uma noite de fado em Lisboa.pdfe que fado
biblioteca123
 
Mapa da Nova Zelândia - Mapa dos Países do Mundo .docx
Doug Caesar
 
Na Unidade de Saúde Familiar.pdf ou centro de saúde
biblioteca123
 
💌 Carta Informal-férias.pdf, Açores nove ilhas
biblioteca123
 
A história da Maria Un1aula1.pdfe do Manel
biblioteca123
 
Indicações na cidade.pdf com mapas e tudo
biblioteca123
 
Slides Lição 4, CG, Pedro, A Epístola Da Esperança, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
Aula. Fraudes nas relações de trabalho.pdf
MariaJosRios3
 
DiálogoRedes sociais.pdfinstagram, tik tok
biblioteca123
 
Mapa da Oceania - Países e Dependências.docx
Doug Caesar
 
Reflexão_Uma análise às licenciaturas que permitem aceder aos mestrados de en...
Nelson Santos
 
🎨 DiálogoGraça Morais.pdfartista plástica
biblioteca123
 
Bandeira dos Países do Mundo África.pptx
Doug Caesar
 
Visita ao museu.pdf, museu marítimo de Ílhavo
biblioteca123
 
Slides Lição 4, Betel, O Primeiro Milagre de Jesus, 3Tr25.pptx
LuizHenriquedeAlmeid6
 
🧑Entrevista de trabalho.pdf para um lugar
biblioteca123
 
🩺 Ser Enfermeiro.pdfou médico ou outra coisa
biblioteca123
 
Rotina diáriaA1-A2.pdf com montes de coisas.
biblioteca123
 
Mapa da Austrália - Mapa dos Países do Mundo.docx
Doug Caesar
 

Diagrama de Classes

  • 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..*