Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula07 DiagramaDeClasse
Aula07 DiagramaDeClasse
2
DEFINIÇÃO
3
DEFINIÇÃO (CONT.)
4
ASSOCIAÇÕES E NAVEGABILIDADE
5
ASSOCIAÇÕES E NAVEGABILIDADE
6
COMO DETERMINAR A NAVEGABILIDADE?
7
Considere o seguinte modelo conceitual:
Reserva
0..1 corresponde a
0..n período
situacao : char
0..n corresponde a
^
faz 0..1
1..1 0..1
Atendente 1..1 0..n Leitor
faz Empréstimo/Devolução
nome nome
registra data do empréstimo 1..1
tipo : char possui
1..1 0..n situação : Char
Livro
1..1
refere-se a > titulo : String[30] 1..n
autor : String[30] 0..1
ano : int LinhaDoEmpréstimo
1..1 0..n ISBN : string[20]
Bibliotecaria data_prevista_devolução
editora : int data_entrega_real
nome
registra tipo : char
0..n
1..1 < refere-se a
possui
CopiaDoLivro
nro sequencial 1..1
situacao : char
0..n liberadoParaEmprestimo : char
NAVEGABILIDADE
adicionarCopia(copiaLivro)---> : Emprestimo
2: criar(d, copiaLivro)
1: d:=calcularDataDevolução()
9
Este diagrama de comunicação implica nas
navegabilidades:
Emprestimo LinhaDoEmprestimo
LinhaDoEmprestimo CopiaDeLivro
2: cc:=codigoCopia()
6: mudarSituacao('devolvida')
4: [encontrou] atualizaDataDev(dataDeHoje)
3: codigoCopia()
linh: LinhaDoEmprestimo
cop: CopiaDeLivro
5: sinalizaDevolucao()
CLASSES QUE APARECEM NOS DIAGRAMAS DE
COMUNICAÇÃO
Leitor Emprestimo
nome data_do_emprestimo
tipo situacao : char
CopiaDoLivro
LinhaDoEmprestimo
nro_sequencial
data_prevista_
situacao : char
devolução
liberadoParaEmprestimo :
11
DIAGRAMA DE CLASSES COM
NAVEGABILIDADE
Leitor Emprestimo
nome 1..1 0..* data_do_emprestimo
tipo situacao : char
faz
1..1
possui Note que a navegabilidade é
independente do sentido de leitura do
nome da associação
1..*
CopiaDoLivro
LinhaDoEmprestimo refere-se a
nro_sequencial
data_prevista_devolução
situacao : char
data_entrega_real
liberadoParaEmprestimo : char
0..* 1..1
12
COMO INCLUIR OS MÉTODOS NAS
CLASSES?
Operações são incluídas nas classes
controladoras
Métodos são incluídos nas classes que recebem a
mensagem
Linguagens de programação distintas podem ter
sintaxes distintas para métodos
recomendável: usar sintaxe básica UML
nomeMétodo(Par1, Par2, … Parn)
13
COMO INCLUIR OS MÉTODOS NAS
CLASSES?
Não incluir:
Método criar (linguagem OO provê o criador)
Métodos de acesso a atributos, por exemplo:
setNome, getNome, etc. assume-se que cada atributo tem
necessariamente esses métodos
14
INCLUSÃO DE MÉTODOS
adicionarCopia(copiaLivro)---> : Emprestimo
2: criar(d, copiaLivro)
1: d:=calcularDataDevolução()
15
Este diagrama de colaboração implica nos
métodos:
Emprestimo devolverCopia() LinhaEmprestimo codigoCopia()
LinhaEmprestimo atualizaDataDev() CopiaDeLivro mudarSituacao()
CopiaDeLivro codigoCopia() CopiaDeLivro sinalizaDevolucao()
1: *[enquanto encontrou=false] linh:==proximo()
2: cc:=codigoCopia()
6: mudarSituacao('devolvida')
4: [encontrou] atualizaDataDev(dataDeHoje)
3: codigoCopia()
linh: LinhaDoEmprestimo
cop: CopiaDeLivro
5: sinalizaDevolucao()
DIAGRAMA DE CLASSES RESULTANTE
Emprestimo
Leitor
data_do_emprestimo
nome 1..1 0..* situacao : char
tipo
faz adicionarCopia( )
calcularDataDevolucao( )
devolverCopia( )
1..1
possui
1..* CopiaDoLivro
LinhaDoEmprestimo nro_sequencial
data_prevista_devolução refere-se a situacao : char
data_entrega_real liberadoParaEmprestimo : char
17
ATRIBUTOS
Pode-se acrescentar tipos de atributos,
parâmetros e retornos de métodos, observando
os diagrama de comunicação
Atributos identificados durante o projeto podem
ser incluídos
se uma ferramenta CASE for utilizada para geração
automática de código, os tipos detalhados são
necessários
se o diagrama for usado exclusivamente por
desenvolvedores de software, o excesso de informação
pode “poluir” o diagrama e dificultar seu entendimento
18
OBSERVAÇÕES
19
RELACIONAMENTO DE DEPENDÊNCIA
20
EXEMPLO: DEPENDÊNCIA
Emprestimo
Leitor
data_do_emprestimo
nome 1..1 0..* situacao : char
tipo
faz adicionarCopia( )
calcularDataDevolucao( )
devolverCopia( )
1..* CopiaDoLivro
LinhaDoEmprestimo nro_sequencial
data_prevista_devolução refere-se a situacao : char
data_entrega_real liberadoParaEmprestimo : char
22