• Nenhum resultado encontrado

Análise e Projeto de Sistemas OO

N/A
N/A
Protected

Academic year: 2019

Share "Análise e Projeto de Sistemas OO"

Copied!
28
0
0

Texto

(1)

Aná lise e Proje t o de Sist e m a s OO

Aná lise e Proje t o de Sist e m a s OO

288

Diagramas de Classes

Descreve os tipos dos objetos existentes no sistema e as associações estáticas entre eles As principais relações estáticas são:

Classes, suas estruturas internas e comportamento Associações, agregações, dependências, e relações de herança

Multiplicidade e indicadores de navegação

Nomes de papéis (o que uma classe representa para outra)

Mostram também os atributos, operações e restrições que se aplicam aos objetos de uma determinada classe.

(2)

Diagramas de Classes

Classes

Classes

Representam os tipos de objetos existentes no modelo Descritas a partir de seus atributos, operações e

restrições

Podem ser organizadas segundo uma estrutura de generalização/especialização

Admitem classificação simples ou múltipla (herança simples

ou múltipla)

C la s s e Atrib u to s

O p e r a çõ e s ()

290

Classes

As classes são representadas por caixas contendo

(3)

Propriedades

Classes são descritas via suas propriedades

Primitivas: representadas como atributos

Compostas: representadas como associações para outras classes

Quando transformadas para código, as

propriedades se tornam sempre campos da classe

Atributos: Nome e Tipo

O nome do atributo corresponde ao nome que será utilizado no código fonte

É aceitável utilizar nomes com espaço e acentos na fase de análise

O tipo do atributo corresponde ao tipo que será utilizado no código fonte

Tipos primitivos da linguagem

(4)

Operações ou métodos

Operações: nome e tipo de retorno

Normalmente o nome de uma operação é

formado por um verbo (opcionalmente

seguido de substantivo)

(5)

Operações: lista de parâmetros

A lista de parâmetros pode ser composta por zero ou mais parâmetros separados por vírgula

Parâmetro: [direção] nome : tipo [= valor padrão] Nome

Tipo

Primitivo Classe

Valor padrão (opcional)

Análise x Design

Em análise não se atenha aos detalhes mas em design sim

Visibilidade Navegabilidade Tipo

Visibilidade pública em propriedades

Assume campo privado e métodos de acesso (get e set) Operações

(6)

Diagramas de Classes

Associações

Associações

Representam relacionamentos entre instâncias de classes (uma pessoa trabalha para uma companhia, uma companhia tem um numero de escritórios)

Conceitualmente representam relacionamentos entre classes

Possuem 2 papéis, um para cada sentido da

associação, que pode ser explicitamente representado por um label é uma conexão bi-direcional entre

classes

Uma associação é mostrada como uma linha conectando as classes relacionadas.

291

Associações

C la sse A C la sse B

C la sse C

As s oc ia ç ã o

Co m pos iç ã o

D e p e n d ê n ci a

A n o ta ç ã o

m in . . m a x

m in . . m a x

C la sse 1

C la sse 2 P a rte

T o d o

m in . . m a x

m in . . m a x

(7)

Navegabilidade

Qualquer associação entre classes é bidirecional. No entanto, a implementação de um relacionamento bidimensional é custosa em termos de implementação. Isto faz com que para cada associação tenhamos que determinar sua navegabilidade.

Se uma classe não necessita saber a que outras classes está associada, então não é necessário criar condições para tal navegação. Por intermédio dos diagramas de sequência e colaboração, que serão vistos mais tarde, é possível identificar o sentido da navegabilidade

Associações: Navegabilidade

Mostra a direção de navegação, ou seja do canal de comunicação entre os objetos e classes.

Uma associação é navegável da classe A para a classe B, se, dado um objeto de A, consegue-se obter de forma direta os objetos relacionados da classe B.

(8)

Associações: Navegabilidade

Dada uma mercadoria pode-se identificar diretamente a empresa fornecedora, mas a volta não é verdadeira

Navegabilidade: exemplos

Neste caso temos que a navegabilidade é de livro para autor significando que em tempo de execução

(9)

Navegabilidade: exemplos

Neste caso temos que a navegabilidade é de autor para livro significando que em tempo de execução a classe autor dever reter um atributo que guarde

os livros a ela relacionados .

Navegabilidade: exemplos

Neste caso temos que a navegabilidade é bidirecional significando que uma deve guardar informações da outra quanto ao relacionamento

(10)

Navegabilidade: exemplos

Para garantir a navegabilidade é necessário a definição de atributo(s) que guardem informações das instancias de classe associadas. Se considerarmos o primeiro caso onde a navegabilidade é de livro para autor teremos:

Associações reflexivas

Associa objetos da mesma classe.

Cada objeto tem um papel distinto na associação.

A utilização de papéis é bastante importante para evitar ambigüidades na leitura da associação.

Uma associação reflexiva objeto se

associa com ele próprio.

Ao contrário, indica que objetos de uma mesma classe se

(11)

Exemplo: associação reflexiva

Mais sobre Associação

Relações fornecem um caminho para a comunicação entre os objetos

Diagramas de seqüência e/ou colaboração são examinados para determinar quais ligações entre objetos precisam existir para se chegar ao comportamento desejado

Há três tipos de relações:

Associação Agregação Dependência

(12)

Agregação

É um tipo especial de associação onde tenta-se demonstrar que as informações de um objeto (chamado objeto-todo) precisam ser complementadas pelas informações contidas em um ou mais objetos de outra classe (chamados objeto-parte) Relação TODO-PARTE

Uma agregação é um tipo mais forte de conexão, aonde a relação é entre o todo e suas partes

294

Agregação

Uma agregação é mostrada como uma linha conectando as classes relacionadas com um losango perto da classe que representa o todo.

Exemplo:

V en d ed or

C lien t e Ite m_ P e d id o

P e d id o de V en d a s 0 . .*

1 0 . .* 1

0 .. * 1 1

1 ..* 1 ..*

1

1 0 .. * Envia

Inclui Possui

(13)

Agregação/Composição

Características particulares:

São assimétricas: se um objeto A é parte de um

objeto B, B não pode ser parte de A.

Propagam comportamento, no sentido de que um comportamento que se aplica a um todo automaticamente se aplica as suas partes.

As partes são criadas e destruídas pelo todo, na classe do objeto todo, existem operações para remover e adicionar as partes

Como identificar

Sejam duas classes associadas, X e Y. Se

uma das perguntas a seguir for respondida

com um sim, provavelmente há uma

agregação onde X é todo e Y é parte.

(14)

Agregação

É uma associação com a semântica de Serve como uma relação todo-parte fraca O todo existe sem as partes

As partes existem sem o todo

Composição

É uma associação com a semântica de

Serve como uma relação todo-parte forte As partes não existem sem o topo

As partes pertencem a somente um todo

(15)

Composição

Constitui-se em uma variação de agregação.

Tenta representar um vínculo mais forte entre objetos-todo e os objetos-parte, procurando demonstrar que os objetos-parte têm de pertencer exclusivamente a um único objeto-todo com que se relacionam.

Em uma composição, um mesmo objeto-parte não pode associar-se a mais de um objeto-todo.

296

Composição

Uma composição é mostrada como uma

linha conectando as classes relacionadas

com um losango

preenchido perto da

classe que representa o todo.

(16)

Dependência

Como o próprio nome diz, identifica um certo grau de dependência de uma classe em relação à outra, isto é, sempre que ocorrer uma mudança na classe da qual uma outra classe depende, este deverá também sofrer uma mudança.

Uma dependência é mostrada como uma linha pontilhada entre o cliente e o fornecedor

298

Dependência

Uma Dependência indica um relacionamento

semântico entre os dois elementos de

modelagem (ou conjunto de elementos de

modelagem).

(17)

Dependência

A dependência, relacionamento temporário, pode implementada por uma de três soluções:

variável local de métodos, parâmetros de métodos, ou variáveis globais.

A seguir as soluções são detalhadas e ilustradas em um diagrama de classe e exemplificadas na listagem a seguir.

1. A operação op1() de ClasseA contém um variável local do tipo

ClasseB.

2. A instância da ClasseB é passada para a instância da ClasseA no

método op2(ClasseB b).

3. Uma classe é visível à ClasseA porque é global. Por exemplo, em

Java, as classe java.lang.Math e java.lang.Vector estão visíveis e globais para a ClasseA. Se os nomes das classes estiverem

completamente qualificados, então o importe não é necessário.

Associação Ternária ou N-ária

São associações que conectam mais de duas classes;

São úteis para demonstrar associações complexas, no entanto deve-se evitar utilizá-las, por muitas vezes, sua leitura ser de difícil interpretação.

São representadas por um losângulo para onde convergem todas as ligações da associação:

(18)

Associação Ternária ou N-ária

No exemplo, mostra um fato corriqueiro na maioria das universidades:

Um professor pode lecionar para muitas turmas;

Uma turma pode possuir muitos professores e utilizar muitas salas

Um professor lecionando para uma turma específica pode utilizar mais de uma sala de aula.

Ou seja:

300

Mais sobre Associação

Relações

podem

ser

descobertas

examinando-se os Diagramas de Iteração

M a trícu la F o rm

Coo r d e n a d o r

3. m a trícu la (a lu n o ,m a té ria )

Formulário de Matrícula

Coordenador

Matrícula(aluno, curso)

(19)

Mais sobre Associação

Apesar de associações e agregações serem bi-direcionais por definição, freqüentemente é

desejável restringir a navegação em uma única direção

Caso a navegação seja restringida, uma seta é adicionada para se indicar a direção da navegação

302

Diagramas de Classes

Multiplicidades

Multiplicidades

A multiplicidade de um papel representa o número de objetos que pode participar da associação

Do ponto de vista da especificação do sistema as associações representam responsabilidades Do ponto de vista de implementação

associações indicam a existência de referências entre os objetos, e servem para indicar a

navegabilidade do modelo

(20)

Diagramas de Classes

Multiplicidade de Associações

Multiplicidade de Associações

Cla sse

Cla sse

Cla sse

1 Ex a t am e nte um

M uitos (0 ou m a is )

0 ..1 O pc iona l (0 ou 1 )

*

1 ..* 1 ou m a is

Classe

1 ..3 ,5 P os s ibilida de s

Cla sse

E s pec ífic a s

P e d id o

n ú m e r o

P e ç a

n ú m e ro * C o n tê m 1 ..*

É -c o m p o s to -d e E s tá -in c lu íd a

304

Diagramas de Classes

Co o rd e n a d o r

Alu n o F o rm u lá rio d e M a trícu la

Alg o ritm o d e Ho rá rio

Cu rso

P ro f esso r

M a té ria

Exemplo evolutivo

Exemplo evolutivo

(21)

Atributos

A estrutura de uma classe é representada pelos seus atributos

Atributos podem ser encontrados pelo exame das definições de classes, requisitos de problemas, e pela aplicação do conhecimento do domínio

M a té ria

lo ca l h o rá rio

Cada Matéria oferecida possui um local e horário

306

Operações

O comportamento de uma classe é representado pelas suas operações

Operações podem ser encontradas examinando-se os Diagramas de Interação

M a trícula F orm

Coor de na do r

3. m a trícu la (a luno ,m a té ria )

Coor de na dor

Ma tríc u la (a lu n o , c u rs o )

(22)

Diagramas de Classes

Diagramas de Classes

C o o rd e n a d o r

Ma tríc u l a(a l u n o , cu rs o )

A lu n o

n o m e s it u a ç ã o F o rm u lá ri o d e M a trícu la

A lg o rit m o d e H o rá rio

C u rso

n o m e

N ú m e ro C ré d ito s

a b rir() im p rim ir()

P ro fe sso r

n o m e s it u a ç ã o

M a té ria lo c a l

h o rá ri o

a b rir()

in c lu irAlu n o ( alu n o )

308

Diagramas de Classes

Diagramas de Classes

F o rm u lá rio d e M a trícu la

Al g o ri tm o d e Ho r á rio

Co o rd e n a d o r

Ma tríc u la (a lu n o , c u rs o )

P ro fe sso r

n o m e s itu a ç ã o

Alu n o

n o m e s it ua ç ã o

M a t é ria

lo c a l h o rá ri o

a b rir()

in c lu irAlu n o (a lu n o )

Cu rso

n o m e

N ú m e ro C ré d ito s

a b rir() im p rim ir()

(23)

Mais sobre Multiplicidade

Multiplicidade define como muitos objetos

participam numa relação

Multiplicidade é o número de instâncias de uma classe que se relacionam a UMA instância de uma outra classe

Para cada associação e agregação, haverá duas decisões relativas a multiplicidade a se tomar: uma para cada lado da relação

310

Diagramas de Classes

Diagramas de Classes

F o rm u lá rio d e M a trícu la

Al g o ri tm o d e Ho r á rio

Co o rd e n a d o r

Ma tríc u la (a lu n o , c u rs o ) 1

0 . . *

Alu n o

n o m e s it ua ç ã o

Cu rso

n o m e

N ú m e ro C ré d ito s

a b rir() im p rim ir() 0 . . *

1 0 . . *

1

1

0 . . *

P ro fe sso r

n o m e s itu a ç ã o

M a t é ria

lo c a l h o rá ri o

a b rir()

in c lu irAlu n o (a lu n o ) 4

3. . 1 0 1

1 . .*

0 . . 4

1 0 . . 4

1

1

1 . .* 4

3. . 1 0

(24)

Herança

Herança é uma relação entre uma super-classe e suas sub-classes

Atributos comuns, operações, relações e/ou, são mostradas no nível aplicável mais alto da hierarquia

G e n e ra liz aç ã o

E s p e c ia liz a ç ã o 1 E s p e c ia liz a ç ã o 2

312

Herança

Herança

F o rm u lá rio d e M a trícu la

Al g o ri tm o d e Ho r á rio

C o o rd e n a d or

Ma tr íc u la ( a lu n o , cu r s o) 1

0 . . *

Alu n o

n o m e s it ua ç ã o

C u rso

n o m e

N ú m e ro C ré d i to s

a b rir() im p rim ir() 0 . .*

1 0 . . * 1

1

0 . .*

P ro fe sso r

n o m e s it ua ç ã o

M a t é ria

lo c a l h o rá rio

a b rir()

in c lu irAlu n o (a l u n o ) 4

3 . . 1 0

1

1 . .*

0 . . 4

1 0 . . 4

1

1

1 . .* 4

3 . . 1 0

U suá ri o

n o m e

(25)

Exemplo

Exemplo

Automóvel Proprietário Fabricante Modelo Cor AnoModelo AnoFabricação TipoCombustível ValorMercado QuilometragemAtual LitrosCombustível CapacidadePortaMalas CalcularConsumoCombustível() Verifi carNívelCombustível() InformarAbastecimentoCombustível() CalcularIPVA() Caminhão Proprietário Fabricante Modelo Cor AnoFabricação TipoCombustível ValorMercado QuilometragemAtual LitrosCombustível NúmeroEixos ValorFrete CalcularConsumoCombustível() VerificarNívelCombustível() InformarAbastecimentoCombus tível() CalcularIPVA() CalcularFrete() Ônibus Proprietário Fabricante Modelo AnoFabricação TipoCombustível ValorMercado QuilometragemAtual LitrosCombustível NúmeroEixos ValorPassagem CalcularConsumoCombustível() VerificarNívelCombustível() InformarAbastecimentoCombustível() CalcularIPVA() CalcularFaturamentoDiário() CalcularNúmeroPassageiros() 314

V e ícu lo

P ro p ri e tá rio F a b ri c a n te Mo d e lo

An o F a b r ic a ç ã o T ip o C o m b u s tíve l Va l o rMe rc a d o

Q u il o m e tra g e m Atu a l L itro s C o m b u s tíve l

C a lc u la r C o n s u m o C o m b u s tíve l () Ve r ific a rN íve lC o m b u s tíve l( )

In fo r m a rAb a s te c i m e n to C o m b u s tíve l () C a l c u l a rIP VA( )

A u to m ó ve l

C o r

An o Mo d e l o

C a p ac id a d e P o rta Ma la s

C a m in h ã o

C o r

N ú m e ro E i xo s Va l o rF re te

C a l c u la rF re te ()

Ô n ib u s

N ú m e r o E i xo s Va lo rP a s s a g e m

C a lc u l a rF a tu ra m e n to D iá ri o ( ) C a lc u l a rN ú m e ro P a s s a g e ir o s ()

Exemplo

Exemplo

(26)

Au to m ó ve l C o r

An o M o d e l o

C a p a c id a d e P o rta M a la s

Ca m in h ã o

C o r

N ú m e ro E ixo s Va lo rF r e te

C a lc u la rF r e te ()

Ô n ib u s

N ú m e ro E i xo s Val o rP a s s a g e m

C a l c u la rF a tu ra m e n to D iá rio ( ) C a lc u l a rN ú m e ro P a s s a g e i ro s ( ) Mo t o ri sta

N o m e M o to r is ta N ú m e r o C N H C a te g o ri a C N H Va lid a d e C N H

Ve r ific a rC a te g o ria ( ) Ve rifi c a rVa lid a d e C N H ( )

V e ícu lo P r o p r ie tá rio

F a b r ic a n te M o d e lo

An o F a b rica ç ã o T i p o C o m b us t íve l Va l o rM e r ca d o

Q u ilo m e tra g e m Atu a l L i tro s C o m b us t ív e l

C al c ul a rC o n s u m o C o m b us t ív e l( ) Ve r ifi ca rN íve lC o m b us t ív e l()

In fo rm a r Ab a s te c im e n to C o m b u s tíve l( ) C a lc u l a rIP VA()

0.. * 0. .*

0. .* 0.. *

Exemplo

Exemplo

316

Exemplo

Exemplo

Autom óve l

C o r An o Mo d e lo

C a p a cid a d e P o rta Ma la s

Ca mi nhã o

C o r

N ú m e ro E ixo s Va lo rFre te

C a lcu la rFre te ()

Ônibus

N ú m e ro E ixo s Va lo rPa s s a g e m

C a lcu la rFa tu ra m e n to D iá rio () C a lcu la rN ú m e ro P a s s a g e iro s ()

M otorista

N o m e Mo to ris ta N ú m e ro C N H C a te g o ria C N H Va lid a d e C N H

Ve rifica rC a te g o ria () Ve rifica rVa lid a d e C N H ()

M otor

P o tê n cia

D a ta P ró xim a R e vis ã o

C a lcu la rC o ns u m o Ó le o ()

V e ículo

P ro p rie tá rio Fa b rica n te Mo d e lo An o Fa b rica çã o Tip o C o m b u s tíve l Va lo rMe rca d o Qu ilo m e tra g e m Atu a l L itro s C o m b u s tíve l

C a lcu la rC o n s u m o C o m b u s tíve l() Ve rifica rN íve lC o m b u s tíve l()

In fo rm a rAb a s te cim e n to C o m b u s tíve l() C a lcu la rIPVA()

(27)

Dicas

Inicie com um diagrama simples

O que normalmente tem em todo diagrama Classes

Atributos Operações Associações

Use os demais recursos da linguagem somente quando for realmente necessário

Dicas: possíveis candidatos

Classes

Entidades externas que produzem ou consomem informações (ex: sistema de validação do cartão de crédito)

Coisas que são parte do problema e que são informações compostas (ex.: Produto)

Eventos que ocorrem durante a operação do sistema (ex.: Pedido)

Papeis que interagem com o sistema (ex.: Cliente) Unidades organizacionais relevantes (ex.: Rede de lojas)

Lugares que fornecem o contexto do problema ou do sistema (ex.: Loja)

(28)

Dicas: possíveis candidatos

Atributos

Informação primitiva que precisa ser memorizada (ex.: Preço)

Associações

A classe A precisa se relacionar com a classe B para atender a operações específicas (ex.: Cliente Pedido)

Operações

Referências

Documentos relacionados

Para entender o supermercado como possível espaço de exercício cidadão, ainda, é importante retomar alguns pontos tratados anteriormente: (a) as compras entendidas como

ado a necessidade de modificar o pré- se manter o dorso do frango à 95C por 30 minutos, este procedimento desnaturava o colágeno, formando um gel scrito

Garantir a oferta de educação bilíngue, em Língua Brasileira de Sinais – Libras como primeira língua e na modalidade escrita da Língua Portuguesa como segunda língua, a

(ii) análise da oferta de cursos de licenciatura na modalidade a distância em Minas Gerais. Em uma primeira sondagem dos dados sobre educação superior por meio da EaD em

As variedades responderam de modo quadrático as doses de potássio para todas as variáveis estudadas, excetuando-se o o Brix e o índice de maturação;.. As variedades RB72454

Ao integrar o sistema de informações (sistema orçamento, sistema resultado e sistema rentabilidade) o Banco objeto de estudo passou a utilizar uma única base de dados, integrando

Sendo aprovado no processo de seleção, o candidato deverá, obrigatoriamente, apresentar no ato da matricula acadêmica o Registro Nacional de Estrangeiro (RNE) ou

Configure o perfil do usuário de acordo com a seguinte ordem: sexo, idade, unidade de peso, peso, unidade de altura, altura, nível de aptidão, tocante os seguintes: • +/ST/SP