notação básica dos diagramas de comunicaçãoines/cursos/proj-si/materiais/aula0… · garantia...
TRANSCRIPT
Notação Básica dos Diagramas de Comunicação
UNIVERSIDADE ESTADUAL PAULISTAINSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATASDEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA
Diagramas de Comunicação
Projeto e Desenvolvimento de Sistemas de Informação
RefinarPlano
Sincronizarartefatos
Analisar Projetar Construir Testar
1. Refinar a arquitetura do sistema
2. Definir diagramasde interação
3. Definir Diagramas deClasses de Projeto
4. Definir o EsquemaDo Banco de Dados
Conclusão da Fase de Análise
� A fase de análise enfatiza uma compreensão dos requisitos do sistema.
� Conjunto mínimo de artefatos:
Artefato da Análise
Casos de Uso
Modelo Conceitual
Diagramas de Sequência do Sistema
Contratos
Questões respondidas
Quais são os processos do domínio?
Quais são os conceitos, os termos?
Quais são os eventos e operações?
O que fazem as operações do sistema?
O começo da fase projetar� Nesta fase é desenvolvida uma solução
lógica baseada no paradigma orientado a objetos.
� Os dois artefatos principais a serem � Os dois artefatos principais a serem desenvolvidos são:� Diagramas de Interação
� Princípios para atribuição de responsabilidades aos objetos envolvidos em uma operação
� Uso de Padrões.� Diagramas de Classe de Projeto
O que já foi visto até agoraCasos de Uso Completo Abstrato
Caso de Uso: Emprestar Livro
Ator Principal: Atendente
Interessados e Interesses:
- Atendente: deseja registrar que um ou mais livros estão em posse de um leitor, para
controlar se a devolução será feita no tempo determinado.
- Leitor: deseja emprestar um ou mais livros, de forma rápida e segura.
- Bibliotecário: deseja controlar o uso dos livros, para que não se percam e para que
sempre se saiba com que leitor estão no momento.
Pré-Condições: O Atendente é identificado e autenticado. Emprestar Livro
Diagrama de Casos de Uso
Pré-Condições: O Atendente é identificado e autenticado.
Garantia de Sucesso (Pós-Condições): Os dados do novo empréstimo estão armazenados
no Sistema. Os livros emprestados possuem status “emprestado”
Cenário de Sucesso Principal:
1. O Leitor chega ao balcão de atendimento da biblioteca e diz ao atendente que deseja
emprestar um ou mais livros da biblioteca.
2. O Atendente seleciona a opção para realizar um novo empréstimo.
3. O Atendente solicita ao leitor sua carteira de identificação, seja de estudante ou
professor.
4. O Atendente informa ao sistema a identificação do leitor.
5. O Sistema exibe o nome do leitor e sua situação.
6. O Atendente solicita os livros a serem emprestados.
7. Para cada um deles, informa ao sistema o código de identificação do livro.
8. O Sistema informa a data de devolução de cada livro.
9. Se necessário, o Atendente desbloqueia os livros para que possam sair da biblioteca.
10. O Leitor sai com os livros.
Fluxos Alternativos: (1-8). A qualquer momento o Leitor informa ao Atendente que desistiu do empréstimo.
3. O Leitor informa ao Atendente que esqueceu a carteira de identificação.
1. O Atendente faz uma busca pelo cadastro do Leitor e pede a ele alguma
informação pessoal para garantir que ele é mesmo quem diz ser.
4. O Leitor está impedido de fazer empréstimo, por ter não estar apto.
1.Cancelar a operação.
7a. O Livro não pode ser emprestado, pois está reservado para outro leitor.
1. O Atendente informa ao Leitor que não poderá emprestar o livro e pergunta se
deseja reservá-lo.
2. Cancelar a operação (se for o único livro)
7b. O Livro não pode ser emprestado, pois é um livro reservado somente para consulta.
1. Cancelar a operação (se for o único livro)
Consultar Livro
Devolver Livro
Atendente
Incluir LivroBibliotecária
Comprar Livro
Leitor
O que já foi visto até agoraCasos de uso com
substantivos e verbos sublinhados
Caso de Uso 1
Modelo Conceitual
Atendente Leitor0..n1 0..n1
Reserva
períodosituacao : char0..n0..n
1
^
faz
0..1
0..1
0..1
0..1
corresponde a
0..10..1 corresponde a0..n0..n
Caso de Uso 2
Caso de Uso n
.
.
.
Atendente
nome
Leitor
nometipo : char
0..n1 0..n1
registra
Empréstimo/Devolução
data do empréstimosituação : Char0..n1 0..n1
faz
LinhaDoEmpréstimo
data_prevista_devoluçãodata_entrega_real
1..n
1
1..n
1 possui
Bibliotecaria
nome
0..10..1
CopiaDoLivro
nro sequencialsituacao : charliberadoParaEmprestimo : char
1
0..n
1
0..n
< refere-se a
Livro
titulo : String[30]autor : String[30]ano : intISBN : string[20]editora : inttipo : char
0..n1 0..n
registra
11refere-se a >
0..n0..n
1possui
O que já foi visto até agora
Modelo Conceitual
+
Casos de Uso
O que foi visto até agora
Projeto Orientado a Objetos
� Finalizada a análise, parte-se para o Projetodo sistema.
� Artefatos de projeto contém detalhes de como o sistema poderá ser implementado como o sistema poderá ser implementado utilizando um computador.� Comportamento esperado de cada objeto e a
colaboração entre os objetos -> diagramas de interação.
� Detalhar as informações sobre as classes que irão compor o sistema -> diagrama de classes.
Diagramas de Interação
� A UML oferece dois tipos de diagrama para mostrar a interação entre os objetos do sistema, por meio de troca objetos do sistema, por meio de troca de mensagens:� Diagrama de sequência e� Diagrama de Comunicação (obs: era
chamado de Diagrama de Colaboração nas versões anteriores à UML 2.0)
Diagrama de Sequência
mensagem1()
:instância da
Classe A
:instância da
Classe B
1:mensagem2()
:instância da
Classe C
SISTEMA
mensagem1()1:mensagem2()
2:mensagem3()3:mensagem4()
Observar que o diagrama de sequência na fase de projeto
“abre” o sistema em objetos que interagem entre si.
Objetos
Diagramas de Comunicação
mensagem1():Instância da
Classe A
:Instância da
Classe B
1:mensagem2()
2:mensagem3()
3:mensagem4()
� Os diagramas de comunicação têm melhor capacidade de expressar informações contextuais e exceções e podem ser mais econômicos em termos de espaço.
:Instância da
Classe C
3:mensagem4()
Diagramas de Comunicação
� São um dos artefatos mais importantes criados na análise e projeto OO
� O tempo gasto na sua criação deve absorver um percentual de tempo
� O tempo gasto na sua criação deve absorver um percentual de tempo significativo do tempo gasto no projeto
� Os padrões estabelecidos, os princípios e idiomas podem ser aplicados para melhorar a qualidade do projeto.
Contribuições dos Diagramas de Comunicação
� Adição dos métodos� Adição da direção das associações� Possível detalhamento dos atributos e � Possível detalhamento dos atributos e
associações.� Possível alteração na estrutura das
classes e associações.� Possível criação de atributos privados
ou protegidos.
Notação básica para diagramas de comunicação
Mensagem entre dois objetos
obj1:Classe1 obj2:Classe21:mensagem1(parâmetro1, parâmetro2)
• obj1 é uma instância da classe Classe1
• obj2 é uma instância da classe Classe2
• A mensagem1 está sendo enviada pelo objeto obj1 ao objeto obj2
• A mensagem1 passa dois parâmetros para o objeto obj2.
Classes X Instâncias
Livro :Livro livro1:Livro
Classeinstância
Instância
nomeada
ligações
obj1:Classe1 obj2:Classe21:mensagem1(parâmetro1, parâmetro2)
Linha de ligação
• Uma ligação é uma conexão entre duas instâncias
• Indicam que existe (ou é possível) alguma forma de navegação e de visibilidade entre as instâncias
• Uma ligação é uma instância de uma associação
Mensagens
� Se existe uma ligação, podem fluir mensagens
� As mensagens podem ser escritas em diferentes sintaxes. Ex. UML, Java e
� As mensagens podem ser escritas em diferentes sintaxes. Ex. UML, Java e Smalltalk, etc.
� Sintaxe UML:
Return := message(parameter : parameterType) : returnType
Ordem das mensagens, condicionais e atribuição às
variáveis
:CópiaTítulo :Empréstimo
1: [novo] criar(id_leitor, id_livro)
Criar só é executada se apto for true
:linhaDoEmpréstimo:Leitor
3: [apto] criar(t)
2: t=obterTipoLeitor()
obterTipoLeitor retorna um resultado que é armazenado na
variável t
A variável t é passada como parâmetro pelo
método criar
Objeto como retorno de método
e1: Emprestimo
2: mudarSituacao("emprestada")
Agora e1 conhece c1 e pode enviar-lhe a mensagem
mudarSituacao()
l1: LinhaDoEmprestimo c1: CopiaDoLivro
1: c1: copia()
c1 é um objeto que retornou como resultado da
invocação de copia()
Criação de instância
C++: aloc. automática ou
new + cham. construtor
Java: operador new
Smalltalk: new + initiatilize
:Obj1 <<new>>:Obj2
1:criar()
msg1()
Condicionais e operadores lógicos e relacionais
e1: Emprestimo
1: [naoEstaEmAtraso] and [nroLivros < maximoPermitido] criar()
:linhaDoEmprestimo
c1: Classe1
c2: Classe2
c3: Classe3
1: [condicao1] mensagem1()
2: [not condicao1] mensagem2()
Caminhos condicionais Mutuamente exclusivos
Apenas uma das mensagens é enviada, dependendo da condição ser verdadeira ou falsa
---
---
if (condicao = true)
:ClasseB.msg2()
msg1()
:ClasseA :ClasseB
:ClasseC
msg1()
1a: [condição] msg2()
1b:[not condição] msg3()
falsa :ClasseB.msg2()
else :ClasseC.msg3()
---
---
Caminhos condicionais Mutuamente exclusivos
:ClasseE
2:msg6()
1a.1:msg3()
:ClasseA :ClasseB
:ClasseC
msg1() 1a: [condição] msg2()
1b:[not condição] msg4()
:ClasseD1b.1:msg5()
Repetição de mensagem
c1: Classe1 c2: Classe2
1: [repita para i de 1 a 100] mensagem1(i)
Em ambos os casos, a mensagem é enviada várias vezes, sempre para o mesmo objeto.
c2: Classe2c1: Classe1
1: [para cada registro] mensagem1()
Múltiplas mensagens na mesma iteração
msg1()
msg1() {
for i=1 to 10 {
meuB.msg2()
meuC.msg3()}
}
1*:[i:=1..10]msg2()
2*:[i:=1..10]msg3()
:A meuB:B
meuC:C
}
Cláusulas de
iteração iguais
Coleções de objetos
� Em um DC pode ser necessário a representação de vários objetos de uma mesma classe (multi-objeto)
� Um multi-objeto ou conjunto de instâncias é representado por um ícone de objeto com repetições.
� Um multi-objeto normalmente é implementado como um grupo de instâncias armazenado em um contêiner ou em um objeto coleção (lista, vector, etc.)
� Uma mensagem enviada a um ícone de multi-objeto indica que ela é enviada ao objeto-coleção.
Mensagens para coleções
:Emprestimo
1: s:=size() : int
msg1()
:LinhaDoEmpres-
timo
msg1()
2: imprimir()
1:le:=obtenha(ID):Emprestimo :LinhaDoEmprestimo
le:LinhaDoEmprestimo
Mensagem para cada elemento da coleção
:Emprestimo :LinhaDoEmprestimo1: * [para cada] obterTituloDoLivro()
A mensagem é enviada uma vez para cada objeto da coleção
Criação de uma coleção, percurso de uma coleção
: Emprestimo
:LinhaDoEmprestimo2: * [para cada linha de emprestimo] linh:=proximo()
3: tit:=obterTituloDoLivro()
A coleção é criada (1) para depois ser preenchida com títulos (4). O método próximo() é utilizado para percorrer a coleção.
titulosEmprestados: String
linh: LinhaDoEmprestimo1: criar()
4: adicionar(tit)
Auto-mensagem
1: cons :=ehDeConsulta()
c1: CopiaDoLivrol1: Livro
2: [not cons] mudarSituacao("emprestada")
Exemplo de um Diagrama de Comunicação – Sistema VideoLocadora
emprestar(fCodigo)
Sistema Biblioteca - Elaborar o DC para cada uma dasoperações do Caso de Uso Emprestar Livro
Atendente
nomeLeitor
nometipo
0..n1 0..n1
registra
Reserva
períodosituacao
0..n
1
0..n
1
^faz
0..n0..n
Empréstimo/Devoluçãodata do empréstimosituação0..n0..n1
faz
0..1
0..1
0..1
0..1
corresponde a
0..10..1
corresponde a
Modelo Conceitual Biblioteca
Bibliotecarianome
CopiaDoLivronro sequencialsituacaoliberadoParaEmprestimo
LivrotituloautoranoISBNeditoratipo
0..n1 0..n1
registra
11refere-se a >
0..n0..n
1
possui
LinhaDoEmpréstimodata_prevista_devoluçãodata_entrega_real
0..10..1
1
0..n
1
0..n
refere-se a
1..n1..n
Fazer um DC para a operação iniciarEmprestimo()
� Operação: iniciarEmprestimo(id_leitor)� Referências Cruzadas: Caso de uso:
“Emprestar Livro”� Pré-Condições:
� O leitor é registrado na biblioteca e sabe-se seu ID.
� Pós-Condições:� Um leitor apto a emprestar livros foi
identificado.� Um objeto Empréstimo/Devolução foi
criado e associado ao leitor
Diagrama de Comunicação
:BibliotecaLeitoriniciarEmprestimo (idLeitor) --->
1. le:=busca(idLeitor)
le: Leitor
e : Empréstimo/Devolução
2. [le not null] inadimp:=verificarInadimplencia()
3. [not inadimp] criar() 4. Associar_e(e)
Diagrama de Comunicação para a operação EmprestarLivro
� Operação: emprestarLivro(id_Livro)
� Referências Cruzadas: Caso de uso: “Emprestar Livro”
� Pré-Condições: � Pré-Condições: � Um leitor apto a emprestar livros já foi identificado;
� Pós-Condições:� um objeto LinhaDoEmpréstimo foi criado;
� a LinhaDoEmpréstimo foi associada à cópia do livro e ao empréstimo criado para o leitor na operação anterior “iniciarEmprestimo”;
� O atributo “situação” da cópia do livro foi alterado para “emprestada”.
� a data de devolução foi calculada, armazenada na “LinhaDoEmprestimo” e informada ao leitor.
Atendente
nomeLeitor
nometipo
0..n1 0..n1
registra
Reserva
períodosituacao
0..n
1
0..n
1
^faz
0..n0..n
Empréstimo/Devoluçãodata do empréstimosituação0..n0..n1
faz
0..1
0..1
0..1
0..1
corresponde a
0..10..1
corresponde a
Modelo Conceitual Biblioteca
Bibliotecarianome
CopiaDoLivronro sequencialsituacaoliberadoParaEmprestimo
LivrotituloautoranoISBNeditoratipo
0..n1 0..n1
registra
11refere-se a >
0..n0..n
1
possui
LinhaDoEmpréstimodata_prevista_devoluçãodata_entrega_real
0..10..1
1
0..n
1
0..n
refere-se a
1..n1..n
:Biblioteca
: LivroemprestarLivro(idLivro)
le: Leitor
1. liv:=busca(idLivro)
2. disponivel:=verificaLivro()3. [disponivel] dtDev:=calcularDataDevolucao()
Diagrama de Comunicação
:Reserva
lemp: LinhaEmprest
: CopiaDoLivrocl :CopiaDoLivro
liv : Livro
2.1. nc:=qtCopiasDispon()
4.1. mudaSituacaoCopia()
4.1.1. cl:=buscaCopiaDispon()4.1.2. tornarEmprestado()
le: Leitor
4. [disponivel] criar(liv, dtDev)
2.1.1. nr:=qtCopiasReserv()
e:Emprestimo
5. associarLE(lemp)
Para o que serve o Diagrama de Comunicação?
� Isso será discutido nas próximas aulas(GRASP)
Exercício: Complementar a operação emprestarLivro(idLivro) -> verificar se leitor já não tem o número máximo leitor já não tem o número máximo permitido de livros em seu poder.
Fazer um DC para a operação encerrarEmprestimo()
� Operação: encerrarEmpréstimo()
� Referências Cruzadas: Caso de uso: “Emprestar Livro”
� Pré-Condições: � Pré-Condições: � Existe “emprestimo/devolução” e ao menos uma linha do empréstimo
� Pós-Condições: � O sistema foi informado que o empréstimo atual foi concluído.
� O atributo “situação” de “Emprestimo/Devolução” foi alterado para “vigente”
1.1. alterarSi tuacao("Vigente")
Diagrama de Comunicação
encerrarEmprestimo() --->:Biblioteca e :
Empréstimo/Devolução
1. encerrar()
Próxima aulaRefinarPlano
Sincronizarartefatos
Analisar Projetar Construir Testar
Padrões GRASP
1. Refinar a arquitetura do sistema
2. Definir diagramasde interação
3. Definir Diagramas deClasses de Projeto
4. Definir o EsquemaDo Banco de Dados