55
Engenharia de Projetos

Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Embed Size (px)

Citation preview

Page 1: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Engenharia de Projetos

Page 2: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Documentos de especificacao de Projetos

- Projeto Arquitetural- Projeto de Interface- Projeto de dados- Projeto de componentes- Projeto de implantacao

Page 3: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

PROJETO DE ARQUITETURA

Page 4: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Quatro passos elementares

--Representação do contexto

--Abstrações de mais alto nível através de arquétipos

--Componentes identificados e representados no contexto de arquitetura

- Instanciações especificas de arquitetura

Page 5: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Atividades

-Estruturacao do sistema

-Modelagem de controle

-Decomposicao modular

Page 6: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

ESTRUTURACAO DO SISTEMA(divisao em subsistemas)

DIAGRAMA DE CASO DE USO REAL

PROJETO DE INTERFACE

DIAGRAMA DE CLASSES

ELABORANDO O DIAGRAMA DE CLASSES

Page 7: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Tipos-Arquitetura centrada em dados (grande fluxo de dados entre subsistemas)

-Arquitetura Cliente / Servidor (componentes: cliente, servidor, redes)

-Arquitetura em camadas ou Maquinas Abstratas

-Arquitetura de chamada e retorno

-Arquitetura orientada a objetos

Depósito de dados

Subsistema 1

Subsistema 2

Subsistema 3

Page 8: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Padroes Arquiteturais

-Concorrencia

-Persistencia (dados subsistem depois de criados)

-Distribuicao (ex.: uso de broker - intermediario, CORBA)

Page 9: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Diagrama Arquitetural de Contexto

-Subordinadores

-Subordinados

-Sistema no nivel de pares

-Atores

Page 10: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Modelagem de Controle

-Controle centralizado: um subsistema possui responsabilidade geral (ex. Main() )

-Controle baseado em eventos: resposta a eventos externos

Page 11: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Decomposicao em Modulos

-Modelo orientado a objetos

-Modelo de fluxo de dados (ex. Unix: duto e filtro)

Filtro Filtro

Filtro

Filtro

Filtro

Filtro

Filtro

Filtro

Filtro

Filtro

Page 12: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Arquétipos

Classe ou Padrão que representa uma abstração central critica para o projeto de arquitetura para sistema alvo. (classes abstratas, blocos construtivos, modelagem abstrata parcial)

Page 13: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Exercício

Desenvolva para o projeto da PETROBRAS os seguintes projetos de arquitetura:

-Tipos de Arquitetura a serem usados

-- Padrões de Arquitetura em relação a Concorrência, Persistência e Distribuição [descreva na forma de requisitos de sistema]

Page 14: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

14

UML NO PROJETO DE COMPONENTES:1a PARTE

DIAGRAMA DE CASO DE USO REAL

PROJETO DE INTERFACE

DIAGRAMA DE CLASSES

ELABORANDO O DIAGRAMA DE CLASSES

Page 15: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

15

I . DIAGRAMA DE CASOS DE USO REAL

Casos de uso são elaborados no levantamento de

requisitos, descrevendo o comportamento do sistema sem especifi car como esse comportamento será implementado.

Page 16: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

16

Como exemplo, vamos considerar o caso deuso Solicita cancelamento de f atura:

Solicita cancelamento de fatura

Cliente

Page 17: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

17

Solicita cancelamento de f atura Cenário principal: Solicitação de cancelamento integral da f atura realizada com sucesso 1. Cliente informa número da f atura 2. Sistema verifica a existência deste número 3. Sistema envia ao cliente os dados da f atura, contendo: a

data de emissão, status e valor pago 4. Cliente solicita o cancelamento integral da f atura 5. Sistema armazena a solicitação de cancelamento da f atura

e a data da solicitação 6. Sistema envia ao cliente a confi rmação do cadastramento

de sua solicitação e a informação de que o seu pedido só será analisado quando a Empresa receber os livros relativos à f atura.

Page 18: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

18

Cenário alternativo: Solicitação já cadastrada 3. Sistema envia ao cliente os dados da f atura, contendo: a data de emissão, status, valor pago e a data em que f oi realizada a solicitação 4. Sistema comunica que a solicitação já f oi realizada Os passos seguintes não são realizados. _______________________________________________ Cenário alternativo: Fatura não encontrada 3. Sistema comunica ao cliente que não encontrou a f atura. Os passos seguintes não são realizados. _______________________________________________ Cenário alternativo: Solicitação suspensa pelo cliente ao longo do processo 4. Cliente desiste da solicitação 5. Sistema comunica que não realizou a operação. Os passos seguintes não são realizados.

Page 19: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

19

Agora, na etapa de Projeto, devem ser descritasclasses e outros elementos que trabalharão emconjunto para a implementação do comportamento decada caso de uso.

Na UML uma colaboração permite nomear umconjunto de classes e outros elementos que trabalhamem conjunto para f ornecer algum comportamento.

Colaborações podem ser usadas para:

- especificar a realização de casos de uso- especificar a realização de operações- modelar mecanismos da arquitetura do sistema.

Page 20: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

20

Solicita cancelamento de fatura

Cliente

Solicita cancelamento de fatura real

<<realize>>

Podemos criar um diagrama de caso de uso real,contendo casos de uso reais. Cada caso de uso real, umacolaboração, será ligado ao caso de uso elaboradodurante a análise através de uma associação comestereótipo realize.

Exemplo:

Page 21: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

21

Como exemplo, serão apresentadas a interface e o diagrama de classes elaborados para o caso de uso Solicita cancelamento de f atura real.

Vamos ver a seguir dois elementos que podem f azer parte da descrição de um caso de uso real: a interf ace homem-máquina, o diagrama de classes e a própria especifi cação do caso de uso, referenciando a interf ace homem-máquina.

Page 22: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

22

I I . I N T E R F A C E H - M ( e l a b o r a d a p a r a S o l i c i t aC a n c e l a m e n t o d e F a t u r a R e a l )

J a n e l a P r i n c i p a lA l t e r n a t i v a s :a ) Q u a n d o a o p ç ã o é v á l i d a

Page 23: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

23

0

Opção inválida

b) Q uando a opção é inválida

0

Page 24: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

24

J anelaSolicitaCancelamentoFatura

Opções:

a) Quando cadastramento realizado com sucesso

b) Quando solicitação já cadastrada

O seu pedido será analisado após o recebimento dos livros.

Page 25: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

25

c) Quando a fatura não existir

Page 26: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

26

A partir deste projeto de interface poderíamos elaborar a especificação do caso de uso real:

Solicita cancelamento de fatura real

Cenário principal: Solicitação de cancelamento integral da fatura realizada com sucesso

1. Sistema apresenta a JanelaSolicitaCancelamentoFatura e solicita o número da fatura

2. Cliente informa número da fatura

3. Sistema verifica a existência deste número no Banco de Dados e recupera os dados da fatura

4. Sistema apresenta os dados da fatura, contendo: a data de emissão, status e valor pago.

5. Sistema pergunta se o cliente deseja realmente realizar a solicitação.

6. Cliente solicita o cancelamento integral da fatura

7. Sistema armazena no Banco de Dados: a solicitação de cancelamento da fatura e a data da solicitação

8. Sistema apresenta na tela a confirmação do cadastramento da solicitação e a informação de que o pedido só será analisado quando a Empresa receber os livros relativos à fatura.

Page 27: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

27

Cenário alternativo: Solicitação já cadastrada

4. Sistema apresenta os dados da fatura, contendo: a data de emissão, status, valor pago e a data em que foi realizada a solicitação.

5. Sistema comunica que a solicitação já foi realizada

Os passos seguintes não são realizados.

_______________________________________________

Cenário alternativo: Fatura não encontrada

3. Sistema verifica a inexistência deste número no Banco de Dados e apresenta uma mensagem na tela, comunicando ao cliente este fato.

Os passos seguintes não são realizados.

______________________________________________

Cenário alternativo: Solicitação suspensa pelo cliente ao longo do processo

6. Cliente desiste de solicitar o cancelamento integral da fatura

7. Sistema comunica que não realizou a operação.

Os passos seguintes não são realizados.

Page 28: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

28

I I I . DI AGRAMA DE CLASSES (elaborado paraSolicita Cancelamento de Fatura Real)

ControladorDePedidos

obterFatura(numero : int) : Fatura_ProjcadastrarSolCancFatura(numero : int) : String

Fatura_ProjnumFatura : intdataEmissao : DatedataVencimento : DatevalorPago : doubledataPagamento : DatedataPedidoCancelamento : DatedataCancelamento : Datestatus : String

recuperarPelaPK(numFatura : int) : Fatura_ProjsolicitaCancelamento() : void

JanelaSolicitaCancelamentoFatura

exibir() : void

JanelaPrincipal

main(args : String[]) : void

Page 29: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

29

Descrição das operações:

main - Apresenta as opções do sistema e solicita que o usuário diga oque deseja f azer. Caso ele digite uma opção inválida o usuário écomunicado. Se a opção for válida é executada a operaçãocorrespondente.

exibir - Solicita o número da f atura e verifica a existência dessenúmero através de obterFatura do ControladorDePedidos. Se afatura f or encontrada é exibida através das operações get da classeFatura_Proj . Se não for encontrada a mensagem “Fatura nãoencontrada” é exibida. Verifica se já f oi solicitado o cancelamentoanteriormente. Se tiver sido emite uma mensagem de erro. Casocontrário, pergunta se o usuário confi rma o cadastramento dasolicitação de cancelamento. Se o usuário confi rmar, a solicitação écadastrada

Page 30: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

30

obterFatura – Obtém a f atura, através de recuperarPelaPK de Fatura. Se a f atura não f or encontrada retorna null.

cadastrarSolCancFatura – Obtém a f atura, através de

recuperarPelaPK de Fatura e caso a f atura seja encontrada chama solicitaCancelamento de Fatura e retorna a mensagem "Solicitação de cancelamento cadastrada com sucesso". Caso não seja encontrada retorna a mensagem "Fatura não encontrada". Caso a solicitação já tenha sido f eita retorna a mensagem "Solicitação cadastrada anteriormente"

solicitaCancelamento – Escreve no banco de dados a data de

solicitação e o novo status recuperarPelaPK - Busca no banco de dados os dados

relativos à f atura atribuindo-os ao objeto umaFatura

Page 31: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

31

Obs: Cada operação poderia ser especificada de um modo mais f ormal com o diagrama de atividades, já estudado na primeira parte do curso.

Page 32: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

32

I V. ELABORANDO O DI AGRAMA DE CLASSES

1. I dentifique todas as classes participantes da solução

No caso exemplo f oram incluídas as classes J anelaPrincipal, J anelaSolicitaCancelamentoFatura, ControladorDePedidos e Fatura_Proj .

Esta solução refl ete o f ato de se estar usando o estilo

arquitetural em camadas.

Page 33: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

33

2. Acrescente aos atributos informações que nãoforam descritas no modelo elaborado com aperspectiva conceitual

Sintaxe completa de um atributo:

[visibilidade] nome [ [multiplicidade] ] [:tipo] [= valor inicial] [{propriedade}]

Caso o diagrama seja utilizado por uma ferramentacom geração automática de código, devem seracrescentados detalhes completos dessasinformações.

Page 34: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

34

Visibilidade

A visibilidade de atributos pode ser pública, privadaou protegida (public, private ou protected). A seguir éapresentada a representação e o significado dessestermos:

+ public : Um atributo declarado como publicnuma classe é visível por todas as classes# protected: Um atributo declarado comoprotected numa classe é visível nas subclasses- private: Um atributo declarado como privateé visível apenas na classe na qual f oi declarado

Page 35: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

35

No caso da ferramenta utilizada para elaborar osdiagramas deste curso a notação utilizada é diferente:

private protected public

A

xyz

Page 36: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

36

O significado dos termos public, protected e privatepode mudar dependendo da linguagem de programação.Em J ava, por exemplo, um método ou atributo protectednuma classe pode ser acessado por subclasses mastambém por qualquer outra classe que esteja no mesmopackage.

Considerando essas dif erenças, é importante aodescrevermos a visibilidade, seguir as regras dalinguagem a ser utilizada.

Page 37: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

37

Propriedades

Podem ser dos seguintes tipos:

- changeable: o valor do atributo pode ser modificado semrestrições

- addOnly: quando o atributo tem multiplidade maior do que um,poderão ser incluídos vários valores, mas estes não poderão serremovidos ou alterados.

- f rozen: o valor do atributo não poderá sof rer modificações umavez que o objeto tenha iniciado.

Quando não f or especificada é assumida a propriedade changeable.

Outra propriedade que pode ser incluída é:

- static: o valor de uma variável desse tipo não muda de uma classepara outra. É um valor da classe e não de um objeto em particular

Page 38: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

38

Exemplo: dataEmissão tem visibilidade privatee é do tipo Date.

Fatura_Proj

numFatura : intdataEmissao : DatedataVencimento : DatevalorPago : doubledataPagamento : DatedataPedidoCancelamento : DatedataCancelamento : Datestatus : String

recuperarPelaPK(numFatura : int) : Fatura_Projsoli ci taCancelamento() : void

Page 39: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

39

3. I nclua operações nas classes

Operação é um serviço que pode ser solicitado poralgum objeto da classe.

Como podemos observar no diagrama várias operaçõesforam incluídas.

Fatura_Proj

numFatura : intdataEmissao : DatedataVencimento : DatevalorPago : doubledataPagamento : DatedataPedidoCancelamento : DatedataCancelamento : Datestatus : String

recuperarPelaPK(numFatura : int) : Fatura_Projsoli ci taCancelamento() : void

Page 40: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

40

Obs:

As operações de acesso não f oram incluídos.Operações de acesso são aquelas que obtêm (get) ouescrevem (set) o dado.

É recomendável que os atributos tenham visibilidadeprivada e que haja uma operação get e uma set para cadaatributo. Desta f orma o atributo será acessado f ora daclasse somente através de operações, possibilitando oencapsulamento. Como teríamos muitas operações get eset elas não costumam ser incluídas nos diagramas declasse.

Page 41: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

41

4. Acrescente informações sobre os operações

A sintaxe da UML é a seguinte:

[visibilidade] nome [ (lista de parâmetros) ][:tipo-da-expressão-retornada] [{propriedade}]

Page 42: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

42

Visibilidade

A visibilidade de operações pode ser pública,privada ou protegida. A seguir é apresentada arepresentação e o signifi cado desses termos:

+ public : Uma operação declarada comopublic numa classe é visível por todas asclasses# protected: Uma operação declarada comoprotected numa classe é visível nas subclasses- private: Uma operação declarada comoprivate é visível apenas na classe na qual f oideclarada

Page 43: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

43

No caso da ferramenta utilizada para elaborar osdiagramas deste curso a notação utilizada é diferente:

private protected public

A

x()y()z()

Page 44: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

44

Em Cay S. HorstMann, Gray Cornell, Core J ava –Fundamentals, vol. 1, Sun Microsystems, 1999, são feitas asseguintes considerações sobre a visibilidade em J ava:

- Os atributos de uma classe devem ser declarados comoprivate e os métodos são geralmente declarados como public.Qualquer atributo declarado como private não será visível poroutras classes e isto também vale para subclasses: umasubclasse não pode acessar os dados privados de suasuperclasse.

- Há, no entanto, situações em que se deseja que uma subclassetenha acesso a um método ou a um dado da sua classe pai.Neste caso, devemos declarar o método ou a variável comoprotected. Por exemplo, se o objeto dataContrataçao de umaclasse Empregado f osse declarado como protected em vez deprivate, então os métodos da classe Gerente (uma subclassede empregado) poderiam acessar este campo diretamente.

Page 45: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

45

- Na prática evite utilizar atributos protected. Suponha quevocê projetou uma classe com campos protected e que estaclasse esteja sendo utilizada por outros programadores.Estes programadores poderão derivar classes a partir dasua classe e, então, poderão acessar diretamente os camposdefinidos como protected. Você não poderá mudar aimplementação da sua classe sem incomodar os outrosprogramadores. I sto é contra o espírito da programaçãoorientada a objetos, que estimula o encapsulamento.

- Métodos do tipo protected f azem mais sentido. Uma classecomplexa pode declarar um método como protected e teriacomo vantagem que só a classe e as subclasses poderiamacessar este método.

Page 46: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

46

Parâmetros

Podem ser descritos zero ou mais parâmetros deacordo com a seguinte sintaxe:

[direção] nome: tipo [= valor-padrão]

Direção:- I n: um parâmetro de entrada que não será

modifi cado- Out: um parâmetro de saída que poderá ser

modifi cado- I nout: um parâmetro de entrada que poderá ser

modifi cado

Page 47: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

47

Propriedade

Exemplo de uma propriedade é:

Estática – determina que a operação é da classe e nãodo objeto.

Page 48: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

48

5 . A c r e s c e n t e a n a v e g a ç ã o

I n c l u í m o s u m a s e t a d e n a v e g a ç ã o e m u m a a s s o c i a ç ã o q u a n d od e s e j a m o s l i m i t a r a n a v e g a ç ã o a u m a ú n i c a d i r e ç ã o . S e m a s e t a d en a v e g a ç ã o a a s s o c i a ç ã o é c o n s i d e r a d a b i d i r e c i o n a l , c o m o n oe x e m p l o a s e g u i r :

Cliente

códigoCPFnomeendereçotelef one [0..1]eMail [0..1]

1..*1 f az ->

Pedido

numPedidodataEmissãonomePresenteado [0..1]endereçoEntregadataCancelamento [0..1]status

1..*1

Page 49: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

49

E s p e c i fi c a r a d i r e ç ã o a s e r s e g u i d a n ã o s i g n i fi c an e c e s s a r i a m e n t e q u e a n a v e g a ç ã o e m u m a d a s d i r e ç õ e s éi m p o s s í v e l . A i d é i a é q u e é p o s s í v e l , p a r t i n d o - s e d e u m ae x t r e m i d a d e , c h e g a r d i r e t a e m a i s f a c i l m e n t e a o s o b j e t o s d ao u t r a e x t r e m i d a d e , i s t o p o r q u e o o b j e t o d e o r i g e m d e v ea r m a z e n a r a l g u m a r e f e r ê n c i a a o s o b j e t o s d e d e s t i n o .

N o e x e m p l o a s e g u i r , m a i s f a c i l m e n t e s e r á e n c o n t r a d o oc l i e n t e q u e f e z u m d a d o p e d i d o , m a s p o d e - s e t a m b é m c o n h e c e ro s p e d i d o s d e u m c e r t o c l i e n t e .

Cliente

códigoCPFnomeendereçotelef one [0..1]eMail [0..1]

1..*1

Pedido

numPedidodataEmissãonomePresenteado [0..1]endereçoEntregadataCancelamento [0..1]status

Page 50: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

50

Uma associação com seta de navegação pode serinterpretada como uma visibilidade por atributo daorigem para a classe alvo.

Ao ser implementada numa linguagem orientada aobjetos, esta associação é normalmente traduzida dasseguintes f ormas, dependendo da multiplicidade:

- a classe origem terá um atributo que referenciauma instância da classe alvo

- a classe origem terá um atributo que referenciavárias instâncias da classe alvo

No exemplo anterior, a classe Pedido teria, ao serimplementada, um atributo do tipo Cliente.

Page 51: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

51

6. Acrescente relacionamentos de dependência

Este relacionamento, apresentado através de uma setatracejada, indica que um elemento tem conhecimento deoutro elemento. A dependência é um relacionamento entredois itens em que a alteração de um item pode af etar asemântica do outro.

Num relacionamento de dependência a seta tracejadaaponta o item do qual o outro depende.

Page 52: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

52

No diagrama de classes o relacionamento dedependência pode representar, por exemplo, que umaclasse usa outra como argumento na assinatura de umaoperação. Assim, se a classe utilizada for modificada, aoperação da outra classe pode ser af etada, pois aclasse utilizada pode, ao ser modificada, ter ainterface ou o comportamento alterado.

Uma situação deste tipo ocorre na classeControladorDePedidos: a operação ObterFaturaretorna um objeto da classe Fatura_Proj .

Page 53: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

53

ControladorDePedidos

obterFatura(numero : i nt) : Fatura_ProjcadastrarSolCancFatura(numero : int) : String

Fatura_Proj

numFatura : intdataEmissao : DatedataVencimento : DatevalorPago : doubledataPagamento : DatedataPedidoCancelamento : DatedataCancelamento : Datestatus : String

recuperarPelaPK(numFatura : i nt) : Fatura_Projsoli ci taCancelamento() : void

Page 54: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

54

Outro exemplo:

Page 55: Engenharia de Projetos. Documentos de especificacao de Projetos - Projeto Arquitetural - Projeto de Interface - Projeto de dados - Projeto de componentes

Exercício

Desenvolva para o projeto da PETROBRAS um caso de uso real para interface de consulta para histórico de um aluno específico.