Escolar Documentos
Profissional Documentos
Cultura Documentos
Orientado a Objetos
Artefatos
(Design):
Diagramas de
Comunicação e
Diagrama de
Classes
3
Disciplina de Projeto (design) de
Software
• Visa produzir uma solução para o problema
identificado pela análise:
– Casos de Uso
– Modelo conceitual
– Diagramas de Sequência do Sistema (DSS)
– Contratos
4
Disciplina de Projeto de Software
Os artefatos produzidos durante a análise OO representam o
“quê” o sistema faz, sem detalhes que comprometam a
solução a uma tecnologia específica
6
Disciplina de Projeto de Software
• Diagramas de Comunicação:
– Deve haver pelo menos um para cada operação ou
consulta complexa de sistema, levando em conta o modelo
conceitual e os contratos
– Apóia a identificação dos métodos necessários para
concretizar cada operação e consulta de sistema
• Diagrama de Classes:
– Se baseia, em primeiro lugar, no modelo conceitual,
adicionando mais informações (métodos, tipos dos
atributos, etc.)
7
Disciplina de Projeto de Software
• Pode-se dizer que o núcleo do Projeto de Software
Orientado a Objetos é o Diagrama de Classes!
8
Disciplina de Projeto de Software
• Diagrama de Comunicação x Implementação
– Alguns dizem ser capazes de implementar sem “perder
tempo” desenhando diagramas
– Outros usam diagramas de comunicação só para
documentar
– Estão ERRADOS!!!!
9
Diagrama de
Comunicação
10
Diagrama de Comunicação
• Diagramas de Comunicação permitem realizar a
modelagem dinâmica do sistema
– ou seja, como os objetos que fazem parte da arquitetura
trocam mensagens para realizar suas responsabilidades
– O que é um objeto?
12
Relembrando...
Objetos e Classes: Exemplos
classes
objetos
13
Relembrando...
Objetos e Classes: Exemplos
• Classe é um agrupamento de objetos similares
15
Atributos e Métodos
Automóvel
proprietário
marca
placa Atributos
ano
registrar()
transferir_Proprietário()
mudar_Placa() Métodos
16
Métodos X Mensagem
mensagem
método
17
Diagrama de Comunicação
• Deve haver um diagrama de comunicação para cada
contrato descrito na análise
Nome da operação ou
consulta
18
Diagrama de Sequência
• Também pode ser utilizado no projeto
• Neste caso, deve haver um diagrama de sequência para cada
contrato descrito na análise
Nome da operação
ou consulta
19
Diagrama de Sequência (DS)
vs Comunicação
(DC)
• Ambos são especializações do diagrama de interação da UML
21
Mensagem entre dois objetos
• Um objeto, ao receber uma mensagem, executa um
método para atender a essa mensagem
Uma mensagem representa uma chamada/invocação a um
método do objeto
22
Mensagem entre dois objetos no
diagrama de comunicação
Instância
Classe Instância
nomeada
24
Exemplo
Modelo Conceitual - Diagrama de classes -
antes depois
Nova mensagem
Diagrama de identificada
Comunicação
1. mudarSituacao(“disponivel”): void
25
Exemplo
1. mudarSituacao(“disponivel”): void
26
Ordem das mensagens
27
Ordem das mensagens
• Assim, a ordem em que as mensagens são enviadas é
frequentemente muito importante
28
Ordem das mensagens
29
Variáveis de retorno
A variável tipo é passada
como parâmetro para o
construtor de
ItemDoEmprestimo
obterTipoLeitor retorna um
resultado que é armazenado na
variável tipo
30
Variáveis de retorno
• Em um Diagrama de Comunicação, pode ser necessário
armazenar certos resultados de invocação de mensagens
para serem utilizados posteriormente, por exemplo, para
serem passados como parâmetros em outras mensagens
– Para isso, pode-se utilizar variáveis
32
Invocação condicional
O construtor de
ItemDoEmprestimo só é
invocado se apto for
verdadeiro
33
Invocação condicional
• Operadores lógicos e relacionais podem ser
utilizados para combinar várias condições
– Exemplo
[naoEstaEmAtraso AND nroLivros<maximoPermitido]
34
Invocação condicional
• Pode-se desviar o fluxo da execução das mensagens
para um método ou outro, simulando um comando
condicional, colocando-se [condição] em um deles e
[not condição] no outro
[condicao] mensagem1()
:ClasseB
:ClasseA
:ClasseC
[not condicao] mensagem2()
35
Repetição de mensagem
• Em alguns casos, uma mensagem pode precisar ser
enviada várias vezes ao objeto, por exemplo em um laço
– A UML 2.x define o uso de * ou *|| para repetição de
mensagens, exemplo: *[i := 1..n], *||[k:1..n]
– Mas nem todas as ferramentas CASE fornecem essa
possibilidade, e para tanto pode-se usar palavras chave tais
como para cada, repita, etc.
:ClasseA :ClasseB
36
Mensagem para coleção de objetos
• Uma mensagem pode ser enviada a vários objetos,
ou seja, para uma coleção de objetos.
– Por exemplo, para obter os títulos dos livros emprestados pelo leitor
em uma certa data, deve-se percorrer todas as linhas de empréstimo
do empréstimo em questão, obtendo de cada uma delas o título do
livro correspondente
:Emprestimo :ItemDoEmprestimo
37
Mensagem para coleção de objetos
• Para denotar vários objetos (coleção) em algumas
ferramentas UML utiliza-se um retângulo com linhas
duplas, como mostrado anteriormente
– Deve-se notar que a mensagem obterTituloDoLivro é
enviada uma única vez para cada um dos objetos
itemDoEmprestimo que pertencem à coleção de linhas de
empréstimo do empréstimo atual
38
Mensagem para o próprio objeto
• Uma mensagem pode ser enviada de um objeto para
ele mesmo (auto-mensagem), denotando que o
próprio objeto entende e processa a mensagem
– No exemplo a seguir, o objeto l1 da classe Livro recebe a mensagem
ehDeConsulta, processa-a e armazena seu resultado na variável
booleana cons, que depois é utilizada como condição para mudar ou
não a situação do exemplar do livro
39
Resumo da sintaxe
• Sintaxe básica das expressões de mensagens
retorno = mensagem(parâmetro:tipo,...):tipoDeRetorno
– Exemplo:
inicie()
inicie(cod)
d = obterDescProduto(id:idItem):String
40
Diagrama de Sequência
• Exemplo de diagrama de sequência: registrarPagamento
42
Codificando de acordo com o projeto
public class CaixaRegistradora
{
private Venda venda;
//...
public void registrarPagamento(double quantia)
{
venda.registrarPagamento(quantia);
//...
} public class Venda
//... {
} private Pagamento pagamento;
//...
public void registrarPagamento(double quantia)
{
pagamento = new Pagamento(quantia);
//...
}
//... 43
}
Diagrama de Comunicação x UML
• Modeladores UML novatos não prestam atenção
suficiente nos diagramas de comunicação
Diretriz
44
Diagramas de Comunicação no PU
• É a realização de cada pós-condição do contrato da operação de sistema e
de cada resultado da consulta do sistema
– Cada pós-condição corresponderá a uma ou mais mensagens enviadas
entre objetos
45
Regras para elaborar Diagramas de
Comunicação
1. Criar um diagrama de comunicação para cada operação ou
consulta de sistema complexa que está sendo desenvolvida
na iteração atual
– Para cada mensagem de operação ou consulta de sistema complexa,
criar um diagrama com essa mensagem como mensagem inicial
46
• Elaborar o diagrama de comunicação da operação
cancelarConsulta(idConsulta)
1.1: listaConsultas =
retornaConsultasAgendadas(cpf)
47
Modelo
Conceitual
• Exercício feito em
sala de aula
0..* 0..*
0..1
0..*
0..*
0..1
1..* 0..*
Contrato
Operação: cancelarConsulta(idConsulta)
Referências Cruzadas: Caso de uso “Cancelar consulta”
Pré-Condições: Um paciente já foi identificado, as consultas agendadas do
paciente já foram identificadas, uma consulta cujo identificador idConsulta foi
selecionada para ser cancelada
Pós-Condições:
– O objeto cons da classe Consulta cujo identificador é idConsulta foi
identificado.
– cons.situação foi atualizada para “cancelada”.
49
Modelo
Conceitual
• Exercício feito em
sala de aula
0..* 0..*
0..1
0..*
0..*
• Adicionar o 1
atributo situação
1..*
0..1
0..*
descoberta no
contrato
Diagrama de comunicação
• Operação: cancelarConsulta(idConsulta)
51
Exercício 1
• Elabore o diagrama de comunicação da operação
removerConsulta(idConsulta)
52
Contrato
Operação: removerConsulta(idConsulta)
Referências Cruzadas: Caso de uso “Gerenciar consulta”
Pré-Condições: A operação remover foi selecionada, uma consulta com
identificador idConsulta foi informada para ser removida.
Pós-Condições:
– O objeto cons da classe Consulta cujo identificador é idConsulta foi
identificado
– A associação entre cons e dentista foi desfeita
– A associação entre cons e paciente foi desfeita
– A associação entre cons e secretária foi desfeita
– O objeto cons foi excluído.
53
Diagrama de comunicação
• Solução do exercício 1
54
Exercício 2
• Elabore o diagrama
de comunicação da
operação
agendarConsulta
55
Exercício 2:
agendarConsulta(CPF, CRO, data, hora)
Operação: agendarConsulta(CPF, CRO, data, hora)
Referências cruzadas: Caso de uso “Agendar Consulta”
Pré-condições: O paciente e o dentista estão cadastrados no sistema; a data e hora do
agendamento da consulta foram informadas e estão disponíveis
Pós-Condições:
– O objeto pac de Paciente cujo CPF é igual ao parâmetro CPF foi encontrado
– O objeto dent de Dentista cujo CRO é igual ao parâmetro CRO foi encontrado
– Um objeto cons de Consulta foi criado
– cons.DataAgendamento foi atualizado com a data atual
– cons.dataConsulta foi atualizado com o valor do parâmetro data
– cons.horaConsulta foi atualizado com o valor do parâmetro hora
– cons.situacao foi atualizado para “agendado”
– O objeto pac foi associado ao objeto cons
– O objeto dent foi associado ao objeto cons
56
Referências
• Material didático próprio da FACOM baseado no trabalho das professoras Maria
Istela Cagnin Machado, Debóra Maria Barroso Paiva e Jane Sandim Eleutério.
• Bibliografia Básica:
– BOOCH, G. et al. UML – Guia do usuário. 2.ed. Rio de Janeiro: Campus, 2005.
– WAZLAWICK, R. S. Análise e projeto de sistemas de informação orientados a objetos. Rio de
Janeiro: Campus, 2a edição, 2011.
• Bibliografia Complementar:
– FOWLER, M. UML distilled: a brief guide to the standard object modeling language. 3. ed.
Upple Saddle River: Addison-Wesley, 2003.
– LARMAN, C. Utilizando UML e padrões. 3. ed. Porto Alegre: Bookman, 2007.
SCHACH, S. R. Object-oriented software engineering. New York: McGraw-Hill, 2007.
– STUMPF, R. V.; BEZERRA, E. Princípios de análise e projeto de sistemas com UML, Elsevier
Acadêmico, 3. ed 2014.
– TEAGUE, L. C. Object oriented systems analysis and design with UML. New York: McGraw-Hill,
2004.
APSOO 57