43
Análise e Projeto Orientados a Objetos: Visibilidade Diagrama de Classe de Projeto UNIVERSIDADE ESTADUAL PAULISTA INSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATAS DEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA 1

Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Embed Size (px)

Citation preview

Page 1: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Análise e Projeto Orientados a Objetos:Visibilidade

Diagrama de Classe de Projeto

UNIVERSIDADE ESTADUAL PAULISTAINSTITUTO DE BIOCIÊNCIAS, LETRAS E CIÊNCIAS EXATASDEPARTAMENTO DE CIÊNCIAS DE COMPUTAÇÃO E ESTATÍSTICA

1

Diagrama de Classe de Projeto

Page 2: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade entre Objetos

2

Page 3: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade entre Objetos� Habilidade de um objeto poder “ver” ou ter

referência para outro objeto.� Quando se cria um projeto de objetos que

interagem entre si, é preciso assegurar que a

3

interagem entre si, é preciso assegurar que a visibilidade necessária esteja presente.� Emissor da mensagem deve ter algum tipo de

referência ou ponteiro para o objeto receptor.� Visibilidade está relacionada com escopo: um

recurso (uma instância) está dentro do escopo de outro?

Page 4: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade� Para um objeto A enviar uma mensagem a

um objeto B, B deve ser visível para A.� Tipos de visibilidade

� Por atributo: B é um atributo de A

4

� Por atributo: B é um atributo de A� Por Parâmetro: B é um parâmetro de um método

de A� Localmente declarada: B é declarado como um

objeto local em um método de A� Global: B é, de alguma forma, globalmente visível.

Page 5: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Notação de Visibilidade em UML - Estereótipos

:msg()A B

<<associação>>

<<associação>> é usada

para visibilidade de atributo

5

:msg()A B

<<global>>

:msg()A B

<<local>>

:msg()A B

<<parâmetro>>

Page 6: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade por atributo

� A-> B => B é atributo de A� Persiste por muito tempo� É a forma mais comum

6

� É a forma mais comum� Geralmente se deve às associações

existentes no modelo conceitual.� Ex. TPV tem catálogo de produtos

como um atributo (prodCatálogo) para poder enviar mensagens ao Catálogo de Produtos.

Page 7: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

:TPV

entrarItem(upc,qtd)

2:espec:=especificação(cup)

Class TPV {...

Private CatálogodeProdutos prodCatálogo;

... }

Ex de Visibilidade por atributo

7

2:espec:=especificação(cup)

prodCatálogo:Catálo

deProdutos

TPV – entrarItem(upc,qtd)

{ ...

espec = prodCatálogo.especificação(cup)

...}

Page 8: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade por atributo (Sistema Biblioteca)

� Ex: Empréstimo tem um atributo leitor para poder enviar mensagens ao Leitorque efetuou o empréstimo

8

que efetuou o empréstimo

Page 9: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Exemplo

9

Page 10: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade por parâmetro� A-> B => B é passado como um

parâmetro para um método de A� É relativamente temporária, persiste

enquanto persistir o método.

10

enquanto persistir o método.

:TPV

entrarItem(cup,qtd)

:Venda3:criarLinhadeItem(espec,qtd)()

espec é passada como parâmetro para que a

venda tenha visibilidade para uma

especificação de produto.

Page 11: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Da visibilidade de parâmetros para visibilidade de atributos

� É comum a visibilidade por parâmetro criar uma visibilidade por atributo

entrarItem(cup,qtd)

11

LinhadeItemdeVenda(Especificacao

Produto espec, int qtd)

{ ...

especdeProd = espec;

...}

:TPV :Venda3:criarLinhadeItem(espec,qtd)()

Lv:LinhadeItemdeVenda

3.1 Criar(espec,qtd)

construtor

Page 12: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade localmente declarada

� Visibilidade local de A para B existe quando B é declarado como um objeto local dentro de um método de A.

� Visibilidade local: relativamente

12

� Visibilidade local: relativamente temporária (persiste somente dentro do escopo do método)

� Meios para obtê-la:� Atribuir o objeto retornado pela invocação

de um método a uma variável local.� Criar uma nova instância local e atribuí-la

a uma variável local

Page 13: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

:TPV

entrarItem(cup,qtd)

:Venda

1:[nova_venda] criar()

3:criarLinhadeItem(espec,qtd)

2:espec:=especificação(cup)

13

2:espec:=especificação(cup)

:Catálogode

Produtos TPV – entrarItem(cup,qtd)

{ //obj. de retorno para um

//objeto local

EspecificaçãodeProduto

espec = prodCatálogo.

especificação(cup)

TPV tem visibilidade local

para uma especificação de

produto espec

Page 14: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Visibilidade Global

� A->B existe quando B é global para A.� Menos comum� Relativamente permanente (persiste

14

� Relativamente permanente (persiste enquanto A ou B existirem)

� Forma óbvia e menos desejável: atribuir uma instância de objeto a uma variável global.

Page 15: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Diagrama de Classes de Projeto

15

Projeto

Page 16: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

RefinarPlano

Sincronizarartefatos

Analisar Projetar Construir Testar

16

1. Definir Casos deUso Reais

2. Definir Relatórios, IU e “Storyboards”

3. Refinar a arquitetura do sistema

4. Definir diagramasde interação

5. Definir Diagramas deClasses de Projeto

Page 17: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

� O Diagrama de Classes de Projeto apresenta especificações para classes de software e interfaces de uma aplicação.

� As informações típicas são as seguintes:

Definição

17

� As informações típicas são as seguintes:� classes, associações e atributos� interfaces, com suas operações e constantes� métodos� tipos de atributos� navegabilidade� dependências

Page 18: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Definição (cont.)� Modelo Conceitual ⇒ abstrações de

conceitos, ou objetos, do mundo real.� Conceitos são também chamados de classes

conceituais.

18

� Diagrama de Classes de Projeto ⇒ definição de classes como componentes de software� Entidades de software

Page 19: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Definição (cont.)� Na prática, o Diagrama de Classes pode ser

construído à medida que a fase de projeto avança, a partir dos diagramas de comunicação.

19

� Cada classe que aparece no diagrama de comunicação automaticamente é incluída no diagrama de classes do projeto.

� Os atributos são inicialmente, os que estão no modelo conceitual

Page 20: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Como Criar os Diag. de Classes

� Identificar todas as classes a partir dos diagramas de comunicação.

� Desenhar todas essas classes no D.de Classes� Copiar todos os atributos do modelo conceitual� Acrescentar os métodos provenientes dos diagramas de

comunicação.

20

comunicação.� Acrescentar tipos aos atributos e métodos.� Acrescentar as associações que indicam visibilidade

por atributo.� Acrescentar informações sobre direção da visibilidade por

atributo (flechas de navegabilidade).� Indicar relacionamentos de dependência para indicar

visibilidades que não sejam de atributos.

Page 21: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Diagrama de Classe de Projeto para o Sistema TPV:

Classe� Depende dos casos de uso incluídos neste

ciclo de desenvolvimento. Por isso, nem todas as classes do modelo conceitual serão incluídas no Diagrama de Classe de Proj.

21

incluídas no Diagrama de Classe de Proj.� Só serão incluídas as classes que aparecem

nos diagramas de comunicação. Neste ciclo essas classes são:

� TPV, CatálogodeProdutos, Loja, Pagamento, Venda, EspecificaçãodeProduto, LinhadeItemdeVenda.

Page 22: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

TPV CatálogodeProdutos

quantidade

EspecificaçãodeProdutodescrição

preço

CUP

Loja Venda LinhadeItemdeVenda

22

Lojaendereço

nome

VendadataestáCompletahora

LinhadeItemdeVenda

quantidade

Pagamento

quantia

Page 23: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Como incluir os métodos nas classes

� Operações (eventos de sistema) são incluídas nas classes controladoras.

� Métodos são incluídos nas classes que recebem a mensagem.

23

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)

Page 24: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Inclusão de métodos

Vendadata

estáCompleta

hora

criarLinhadeItem()

24

:TPV

entrarItem(cup,qtd)

:Venda3:criarLinhadeItem(espec,qtd)

Page 25: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Como incluir os métodos nas classes (cont.)

� Não incluir:� Métodos enviados à coleções (esses

métodos devem ser implementados pela

25

métodos devem ser implementados pela classe Coleção)

Page 26: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Mensagem para um multobjeto

:TPV

entrarItem(cup,qtd)

2:espec:=especificação(cup)

26

2:espec:=especificação(cup)

2.1:espec:=encontrar(cup)

:Catálogode

Produtos

:Especificaçãode

Produto

A mensagem encontrar é

dirigida para o objeto

coleção, não para um objeto

EspeficicaçãodeProduto

Page 27: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Como incluir os métodos nas classes (cont.)

� Não incluir:� Método Criar (linguagem OO provê o

criador – construtor)

27

criador – construtor)� Métodos de acesso a atributos, por

exemplo, setNome, getNome, etc -> assume-se que a classe fornece método de acesso para cada atributo.

Page 28: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Acrescentando os demais métodos em Venda....

Venda

data

28

data

estáCompleta

hora

criarLinhadeItem()

tornarseCompleta()

efetuarPagamento()

total()

Page 29: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Atributos� Pode-se acrescentar tipos de atributos,

parâmetros e retorno de métodos, observando os diagramas de comunicação.

� Atributos identificados durante o projeto podem ser incluídos.

29

podem ser incluídos.� Se uma ferramenta CASE for utilizada para

geração automática de código, os tipos detalhados serã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.

Page 30: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Atributos

� Observação:� Embora uma visibilidade por atributo

venha a ser implementada posteriormente

30

venha a ser implementada posteriormente como um atributo na classe origem, isso não deve ser mostrado no diagrama de classes – manter as associações no diagramas de classes.

Page 31: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Venda

data: Date

estáCompleta: Boolean

hora: Time

Adição de Atributos e tipos

31

hora: Time

criarLinhadeItem()

tornarseCompleta()

efetuarPagamento()

total()

Page 32: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Associações e Navegabilidade

� Associações e navegabilidade entre classes de projeto são indicadas pelos diagramas de comunicação� Navegabilidade indica possibilidade de navegação

32

� Navegabilidade indica possibilidade de navegação unidirecional por meio de uma associação entre classes� Geralmente implica visibilidade por atributos

� A multiplicidade e os nomes das associações são retirados do Modelo Conceitual

� Notação: seta contínua.

Page 33: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Associações e Navegabilidade

� Indícios de associações e presença de navegabilidade:� A envia mensagem para B

33

� A envia mensagem para B� A cria B� A precisa manter uma conexão com B

Page 34: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Como determinar a navegabilidade?

� Verificar o envio de mensagens de objetos que possuem visibilidade por atributo.

34

atributo.� Desenhar a seta no sentido da classe

que envia a mensagem para a classe que recebe a mensagem.

Page 35: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

A navegabilidade é identificada a

partir do diagrama de comunicação

:Loja

criar()

:TPV

:Especificãode

2 : criar (pc)

1 : criar ( )

:Catálogode

1.1 criar ()

1.1.2* : adicionar (ep)

35

Este diagrama de colaboração implica nas

navegabilidades:

Loja → TPV

Loja → CatálogodeProdutos

CatálogodeProdutos → EspecificaçãodeProduto

:Especificãode

Produto

ep:EspecificaçãodeProduto

:Catálogode

Produtos1.1.2* : adicionar (ep)

1.2.1* : criar(cup,preço,descrição)

1.2 : carregarEspecProd( )

Page 36: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Navegabilidade

:TPV

entrarItem(cup,qtd)

:Venda1:[nova_venda] criar()

36

:linhadeItemde

Venda

1.1:criar()

Este diagrama de colaboração implica nas

navegabilidades:

TPV → Venda

Venda → LinhadeItemdeVenda

Page 37: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Diagrama de Classe com navegabilidade

Venda

data: Date

estáCompleta: Boolean

TPV1

captura

37

estáCompleta: Boolean

hora: Time

criarLinhadeItem()

tornarseCompleta()

efetuarPagamento()

total()

terminarVenda()

entrarItem()

registrarPagame

nto()

1

Observar que a navegabilidade é

independente do sentido de leitura

da associação.

Page 38: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Relacionamento de Dependência

� No diagrama de classes, o relacionamento de dependência representa a visibilidade entre classes que não é implementada por atributo� Visibilidade por parâmetro

38

� Visibilidade por parâmetro� Visibilidade local ou global

� Um objeto de uma classe A tem conhecimento (enxerga) um objeto da classe B

� Notação: seta tracejada

Page 39: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Exemplo: Dependência

Venda EspecificaçãodeProduto

39

EspecificaçãodeProduto

Venda tem visibilidade a uma

especificação de produto pois recebe-a

como parâmetro em um dos diagramas

de comunicação

Page 40: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Versão Final do Diagrama de Classe de Projeto

1

1

1

1..*

Especificação de Produtodescrição : Textopreço : QuantidadeCUP : CUP

1

Descreve

11

Lojaendereço : Endereçonome : Texto

acrescentarVenda( )

Venda

1

1

Catálogo de Produtos

especificacao( )

1

Usa

1..*1

Contém

1

Possui

1Busca-em

40

1

Pagamentoquantia : Quantidade

1

1 1..*

*

*

LinhadeItemdeVendaquantidade : Inteiro

subtotal( )

*1

1 1

data : Datahora : HoraestáCompleta : Booleano

tornarseCompleta( )criarLinhadeItem( )efetuarPagamento( )total( )

1

1

Paga-por

1 1..*

Contém

*

Registra-Dados-da >

1

TPV

terminarVenda( )entrarItem( )registrarPagamento( )

1..*

Possui

1 1

Captura

1

Page 41: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Alguns detalhes de notação para métodos e atributos - UML

Nome da Classe

atributo

atributo:tipo

atributo:tipo = valor inicial

/atributoDerivado, ...

41

método1()

método2(lista par.):tipo ret.

métodoAbstrato()

+métodoPúblico()

-métodoPrivado()

#métodoProtegido()

Page 42: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

Sistema TPV: atributos privados e métodos públicos

Venda

data: Date

estáCompleta: Boolean

42

estáCompleta: Boolean

hora: Time

+criarLinhadeItem()

+tornarseCompleta()

+efetuarPagamento()

+total()

Page 43: Análise e Projeto Orientados a Objetos: Visibilidade ...ines/cursos/proj-si/materiais/... · Visibilidade entre Objetos Habilidade de um objeto poder “ver” ou ter referência

43