João F. M. Figueiredo www.joaomatosf.com [email_address] Departamento de Informática – UFPB
Sumário <ul><li>Como Determinar a Visibilidade </li></ul><ul><ul><li>A visibilidade entre objetos </li></ul></ul><ul><ul><...
1.1 Visibilidade entre objetos <ul><ul><li>Definições: </li></ul></ul><ul><ul><ul><li>Possibilidade de Ver. (TheFreeDictio...
1.1 Visibilidade entre objetos Figura 18.1 – A Visibilidade do Registro para o CatálogoDeProduto é exigida.
1.2 Tipos de Visibilidade <ul><li>Visibilidade por atributo: </li></ul><ul><ul><ul><li>B é atributo de A. </li></ul></ul><...
1.2 Tipos de Visibilidade (2) <ul><li>Visibilidade por Atributo </li></ul>Figura 18.2 – Visibilidade por atributo
<ul><li>Visibilidade Por Parâmetro </li></ul>1.2 Tipos de Visibilidade (3) Figura 18.3 – Visibilidade por parâmetro
<ul><li>Visibilidade Por Parâmetro </li></ul>1.2 Tipos de Visibilidade (4) Figura 18.1 – A Visibilidade de parâmetro para ...
<ul><li>Visibilidade Local </li></ul>1.2 Tipos de Visibilidade (5) Figura 18.1 – Visibilidade local
<ul><li>Visibilidade Global </li></ul><ul><ul><li>Um objeto global é visível a todos </li></ul></ul><ul><ul><li>Não uma bo...
<ul><li>Como Ilustrar Visibilidade na UML </li></ul>1.3 Visibilidade na UML Figura 18.6 – Implementação de estereótipos pa...
2. Como Criar Diagramas de Classe de Projeto <ul><li>Objetivos: </li></ul><ul><ul><li>Criar Diagramas de Classes de Projet...
2.1 O que é e Quando Criar DCPs <ul><li>Especifica as classes  de software  e as interfaces da aplicação; </li></ul><ul><u...
2.1 O que é e Quando criar DCPs (2) <ul><li>Informação tipicamente incluída:  </li></ul><ul><ul><li>Classes, associações e...
2.2 Exemplo de DCPs Figura 19.1 – Amostra de diagrama de classe de projeto
2.3 Modelo de Domínio  Versus  Classes de Modelo de Projeto Figura 19.2 – Modelo do domínio  vs   classes do modelo de pro...
2.4 Criação De Um DCP Para o Estudo de Caso <ul><li>Identificar as classes que participam da solução de software. </li></u...
2.4 Criação De Um DCP Para o Estudo de Caso (2) Figura 19.3 – Classes de software na aplicação
2.4 Criação De Um DCP Para o Estudo de Caso (3) <ul><li>Acrescentar nomes de métodos </li></ul>Figura 19.4 – Nomes de méto...
2.4 Criação De Um DCP Para o Estudo de Caso (3) <ul><li>Acrescentar nomes de métodos </li></ul>Figura 19.5 – Métodos na ap...
2.4 Criação De Um DCP Para o Estudo de Caso (4) <ul><li>Acrescentar informação de tipo </li></ul>Figura 19.7 – Informação ...
2.4 Criação De Um DCP Para o Estudo de Caso (5) <ul><li>Acrescentar associações e navegabilidade </li></ul>Figura 19.8 – M...
2.4 Criação De Um DCP Para o Estudo de Caso (5) <ul><li>Acrescentar associações e navegabilidade </li></ul>Figura 19.10 – ...
2.4 Criação De Um DCP Para o Estudo de Caso (6) <ul><li>Acrescentar relações de dependência </li></ul>Figura 19.10 – Relac...
2.4 Criação De Um DCP Para o Estudo de Caso (7) <ul><li>Incluir detalhes de membro de classes </li></ul><ul><ul><li>Exempl...
3. Referências Bibliográficas <ul><li>Craig Larman: Utilizando UML e padrões: uma introdução à análise  e ao projeto orien...
João F. M. Figueiredo www.joaomatosf.com [email_address] Brian Departamento de Informática – UFPB
Próximos SlideShares
Carregando em…5
×

Visibilidade e Diagrama de Classe de Projeto na UML

18.726 visualizações

Publicada em

Slides do seminário sobre modelos de visibilidade e diagramas de classe de projetos na UML. Apresentados como parte do conteúdo do processo unificado.

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
18.726
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.820
Ações
Compartilhamentos
0
Downloads
247
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide
  • Habilidade de um objeto ver ou fazer referência a outro objeto. Inserir figura 18.1 Ao criar um projeto de objetos interativos, é necessário assegurar que a visibilidade necessária esteja presente para apoiar a interação da mensagem. A UML tem notação especial para ilustrar a visibilidade.
  • Habilidade de um objeto ver ou fazer referência a outro objeto. Inserir figura 18.1 Ao criar um projeto de objetos interativos, é necessário assegurar que a visibilidade necessária esteja presente para apoiar a interação da mensagem. A UML tem notação especial para ilustrar a visibilidade.
  • Na figura, temos a motivação para considerar a visibilidade: Para um A enviar uma mensagem para um objeto B, B deve ser visível para A. Há quatro meios comuns pelos quais pode ser alcançada a visibilidade de A para B.
  • A visibilidade por atributo de A para B, existe quando B é um atributo(variável de instância) de A. Persiste enquanto A e B existem. É uma forma bastante comum em sistemas OOP.
  • A visibilidade por parâmetro de A para B existe quando B é passado como um parâmetro para um método de A. Persiste somente dentro do corpo do método. É a segunda forma mais comum em OOP. Na figura, Registro já possui visibilidade para CatálogoDeProdutos por atributo, conforme o exemplo anterior, porém Venda não possui essa visibilidade. Então, quando a mensagem criarLinhaDeItem é enviada para Venda, uma instancia de EspecificaçãoDeProduto é passada como parâmetro. Assim, dentro do escopo criarLinhaDeVenda, venda tem visibilidade por parâmetro para CatalogoDeProduto. É comum esse tipo de visibilidade se transformar em visibilidade por atributo, usando o construtor para tal.
  • A visibilidade por parâmetro de A para B existe quando B é passado como um parâmetro para um método de A. Persiste somente dentro do corpo do método. É a segunda forma mais comum em OOP. Na figura, Registro já possui visibilidade para CatálogoDeProdutos por atributo, conforme o exemplo anterior, porém Venda não possui essa visibilidade. Então, quando a mensagem criarLinhaDeItem é enviada para Venda, uma instancia de EspecificaçãoDeProduto é passada como parâmetro. Assim, dentro do escopo criarLinhaDeVenda, venda tem visibilidade por parâmetro para CatalogoDeProduto. É comum esse tipo de visibilidade se transformar em visibilidade por atributo, usando o construtor para tal.
  • Visibilidade local de A para B existe quando B é declara como um objeto local dentro de um método de A. Persiste somente dentro do escopo do método; Terceira forma mais comum em sistemas OOP. Dois meios comuns pelos quais a visibilidade se realiza: Criar uma nova instancia e atribuir a uma variável local Atribuir o objeto que retorna de uma invocação de método para uma variável local Ex: //existe visibilidade local implícita para objeto ‘foo’ retornado via chama objterFoo umObjeto.obterFoo().executarBar();
  • Um objeto global é visível a todos Não uma boa forma de ter visibilidade Se for obrigado a ter objetos globais, é melhor usar o padrão de projeto Singleton (GoF) Existe visibilidade gloca de A para B quando B é global em A. Existe enquanto A e B existirem. Forma menos comum em sistemas OOP; Pode ser alcançada atribuindo-se uma instancia a uma variável global; Possíbel em C++ mas não em java. Normalmente se usa o padrão Objeto Unitário, que será tratado no proximo capitulo.
  • Objetivos do Capítulo! A UML tem notação para mostrar detalhes de projetos em diagramas de Classes. Ilustrar-se-á isso.
  • São diagramas mais detalhistas com relação ao software. Exibindo informações como métodos, por exemplos. São geralmente criados em paralelo com os diagramas de interação;
  • São diagramas mais detalhistas com relação ao software. Exibindo informações como métodos, por exemplos. São geralmente criados em paralelo com os diagramas de interação; Vale apena ressaltar que apartir das DCPs, pode-se gerar código em alguma linguagem de programação.
  • Conforme pode-se ver, nas dcps tem-se 3 caixas na definição de calsses. Uma delas define informações de tipos, a seguinte define os métodos. A navegabilidade também está disponível nas dcps. OBS: os parâmetros dos métodos não são especificados
  • Neste ponto, já pode-se perceber a diferença das DCPs para o MD. Para ambos, UML usa o diagrama de classes No modelo conceitual, uma entidade não representa uma classe de software mas um conceito do domínio do problema No diagrama de classes da fase de projeto, as classes são de software
  • Verificar os diagramas de interação para identificar as classes; Adicioná-las ao diagrama de classes, junto com os atributos; Não incluir classes que não participam da iteração atual. Localizar as mensagens para identificar os métodos das classes.
  • Verificar os diagramas de interação para identificar as classes; Adicioná-las ao diagrama de classes, junto com os atributos; Não incluir classes que não participam da iteração atual.
  • Analisar os diagramas de interação para descobrir os métodos de cada classe Alguns detalhes sobre métodos O método create() de UML não aparece em muitas linguagens, pois é uma chamada a um construtor Muitas vezes, não se incluem os métodos acessores (getAtributo() e setAtributo()) Se classes de bibliotecas (ex. Vector em Java) são mostrados no diagrama, não se precisa mencionar seus métodos Pode-se usar a sintaxe da linguagem de programação final, se desejado
  • Analisar os diagramas de interação para descobrir os métodos de cada classe Alguns detalhes sobre métodos O método create() de UML não aparece em muitas linguagens, pois é uma chamada a um construtor Muitas vezes, não se incluem os métodos acessores (getAtributo() e setAtributo()) Se classes de bibliotecas (ex. Vector em Java) são mostrados no diagrama, não se precisa mencionar seus métodos Pode-se usar a sintaxe da linguagem de programação final, se desejado
  • Este passo é opcional Se o diagrama de classes está sendo criado numa ferramenta CASE (ex. Rational Rose), e a ferramenta será usada para gerar código, todos os detalhes de tipos devem ser dados Se o diagrama for preparado apenas para leitura por desenvolvedores, o nível de detalhamento pode ser menor O seguinte diagrama contém toda a informação de tipo
  • A navegabilidade implica visibilidade da fonte para o destino Normalmente navegabilidade de atributo, incluída na implementação As associações devem ser apenas aquelas necessárias para a visibilidade de objetos Isso é diferente das associações no modelo conceitual, as quais podem ser incluídas para melhorar o entendimento Os diagramas de interação são usados para descobrir a visibilidade, associações e navegabilidade Situações comuns que levam a associações: A envia uma mensagem a B A cria uma instância de B A deve manter conhecimento de B Exemplo:
  • A navegabilidade implica visibilidade da fonte para o destino Normalmente navegabilidade de atributo, incluída na implementação As associações devem ser apenas aquelas necessárias para a visibilidade de objetos Isso é diferente das associações no modelo conceitual, as quais podem ser incluídas para melhorar o entendimento Os diagramas de interação são usados para descobrir a visibilidade, associações e navegabilidade Situações comuns que levam a associações: A envia uma mensagem a B A cria uma instância de B A deve manter conhecimento de B Exemplo:
  • Quando uma classe conhece outra (tem visibilidade), mas a visibilidade não é de atributo, usa-se uma linha tracejada Exemplo: TPDV recebe um objeto da classe EspecificaçãoDeProduto como retorno do método especificação da classe TPDV Diagrama de classes com dependências:
  • UML possui sintaxe para especificar: Visibilidade Valores iniciais etc. Exemplo:
  • UML possui sintaxe para especificar: Visibilidade Valores iniciais etc. Exemplo:
  • Visibilidade e Diagrama de Classe de Projeto na UML

    1. 1. João F. M. Figueiredo www.joaomatosf.com [email_address] Departamento de Informática – UFPB
    2. 2. Sumário <ul><li>Como Determinar a Visibilidade </li></ul><ul><ul><li>A visibilidade entre objetos </li></ul></ul><ul><ul><li>Tipos de Visibilidade </li></ul></ul><ul><ul><li>Visibilidade na UML </li></ul></ul><ul><li>Como Criar Diagramas de Classe de Projeto </li></ul><ul><ul><li>Quando criar DCPs </li></ul></ul><ul><ul><li>Exemplo de DCP </li></ul></ul><ul><ul><li>Modelo de Domínio Versus Classes do Modelo de Projeto </li></ul></ul><ul><ul><li>Criação de um DCP para o PDV ProxGear(estudo de caso) </li></ul></ul>
    3. 3. 1.1 Visibilidade entre objetos <ul><ul><li>Definições: </li></ul></ul><ul><ul><ul><li>Possibilidade de Ver. (TheFreeDictionary) </li></ul></ul></ul><ul><ul><ul><li>Medida da facilidade com que o objeto é encontrado. (Enciclopédia Livre) </li></ul></ul></ul><ul><ul><ul><li>Habilidade de um objeto ver ou fazer referência a outro objeto. (Craig Larman, 2004) </li></ul></ul></ul>mensagem
    4. 4. 1.1 Visibilidade entre objetos Figura 18.1 – A Visibilidade do Registro para o CatálogoDeProduto é exigida.
    5. 5. 1.2 Tipos de Visibilidade <ul><li>Visibilidade por atributo: </li></ul><ul><ul><ul><li>B é atributo de A. </li></ul></ul></ul><ul><li>Visibilidade por parâmetro: </li></ul><ul><ul><ul><li>B é um parâmetro de um método de A. </li></ul></ul></ul><ul><li>Visibilidade local: </li></ul><ul><ul><ul><li>B é um objeto local(não-parâmetro) em um método de A. </li></ul></ul></ul><ul><li>Visibilidade global: </li></ul><ul><ul><ul><li>B é, de certo modo, globalmente visível. </li></ul></ul></ul>mensagem
    6. 6. 1.2 Tipos de Visibilidade (2) <ul><li>Visibilidade por Atributo </li></ul>Figura 18.2 – Visibilidade por atributo
    7. 7. <ul><li>Visibilidade Por Parâmetro </li></ul>1.2 Tipos de Visibilidade (3) Figura 18.3 – Visibilidade por parâmetro
    8. 8. <ul><li>Visibilidade Por Parâmetro </li></ul>1.2 Tipos de Visibilidade (4) Figura 18.1 – A Visibilidade de parâmetro para atributo.
    9. 9. <ul><li>Visibilidade Local </li></ul>1.2 Tipos de Visibilidade (5) Figura 18.1 – Visibilidade local
    10. 10. <ul><li>Visibilidade Global </li></ul><ul><ul><li>Um objeto global é visível a todos </li></ul></ul><ul><ul><li>Não uma boa forma de ter visibilidade </li></ul></ul>1.2 Tipos de Visibilidade (6)
    11. 11. <ul><li>Como Ilustrar Visibilidade na UML </li></ul>1.3 Visibilidade na UML Figura 18.6 – Implementação de estereótipos para visibilidade
    12. 12. 2. Como Criar Diagramas de Classe de Projeto <ul><li>Objetivos: </li></ul><ul><ul><li>Criar Diagramas de Classes de Projeto (DCPs) </li></ul></ul><ul><ul><li>Identificar as classes, os métodos e as associações para mostrar em um DCP. </li></ul></ul>
    13. 13. 2.1 O que é e Quando Criar DCPs <ul><li>Especifica as classes de software e as interfaces da aplicação; </li></ul><ul><ul><li>Não somente das entidades conceituais. </li></ul></ul><ul><li>Normalmente criado em paralelo com os diagramas de interação. </li></ul>
    14. 14. 2.1 O que é e Quando criar DCPs (2) <ul><li>Informação tipicamente incluída: </li></ul><ul><ul><li>Classes, associações e atributos </li></ul></ul><ul><ul><li>Interfaces, incluindo métodos e constantes </li></ul></ul><ul><ul><li>Métodos </li></ul></ul><ul><ul><li>Informação de tipo de atributos </li></ul></ul><ul><ul><li>Navegabilidade </li></ul></ul><ul><ul><li>Dependências </li></ul></ul>
    15. 15. 2.2 Exemplo de DCPs Figura 19.1 – Amostra de diagrama de classe de projeto
    16. 16. 2.3 Modelo de Domínio Versus Classes de Modelo de Projeto Figura 19.2 – Modelo do domínio vs classes do modelo de projeto
    17. 17. 2.4 Criação De Um DCP Para o Estudo de Caso <ul><li>Identificar as classes que participam da solução de software. </li></ul><ul><ul><li>Verificar os diagramas de interação para identificar as classes. </li></ul></ul><ul><li>Desenhar um diagrama de classe para estas classes e incluir os atributos identificados. </li></ul>
    18. 18. 2.4 Criação De Um DCP Para o Estudo de Caso (2) Figura 19.3 – Classes de software na aplicação
    19. 19. 2.4 Criação De Um DCP Para o Estudo de Caso (3) <ul><li>Acrescentar nomes de métodos </li></ul>Figura 19.4 – Nomes de métodos a partir dos diagramas de interação
    20. 20. 2.4 Criação De Um DCP Para o Estudo de Caso (3) <ul><li>Acrescentar nomes de métodos </li></ul>Figura 19.5 – Métodos na aplicação
    21. 21. 2.4 Criação De Um DCP Para o Estudo de Caso (4) <ul><li>Acrescentar informação de tipo </li></ul>Figura 19.7 – Informação de tipo
    22. 22. 2.4 Criação De Um DCP Para o Estudo de Caso (5) <ul><li>Acrescentar associações e navegabilidade </li></ul>Figura 19.8 – Mostrar navegabilidade ou visibilidade do atributo
    23. 23. 2.4 Criação De Um DCP Para o Estudo de Caso (5) <ul><li>Acrescentar associações e navegabilidade </li></ul>Figura 19.10 – Associações com adorno de navegabilidade
    24. 24. 2.4 Criação De Um DCP Para o Estudo de Caso (6) <ul><li>Acrescentar relações de dependência </li></ul>Figura 19.10 – Relacionamentos de dependência que indicam visibilidade que não é implementada por atributo
    25. 25. 2.4 Criação De Um DCP Para o Estudo de Caso (7) <ul><li>Incluir detalhes de membro de classes </li></ul><ul><ul><li>Exemplo: </li></ul></ul>Figura 19.12 – Detalhes da notação de membro do diagrama de classes UML
    26. 26. 3. Referências Bibliográficas <ul><li>Craig Larman: Utilizando UML e padrões: uma introdução à análise e ao projeto orientados a objetos e ao Processo Unificado. 2ed – Porto Alegre: Bookman, 2004. </li></ul>
    27. 27. João F. M. Figueiredo www.joaomatosf.com [email_address] Brian Departamento de Informática – UFPB

    ×