27
Domínios e Coesão 1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Embed Size (px)

Citation preview

Page 1: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 1

Domínios, Grau de Dependência

e Coesão

Page 2: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 2

Domínios de Classes:

As classes têm complexidade e características diferentes. Variam com a área de negócios, área de indústria, etc.

Vamos tentar classificar as classes em grandes “domínios”

Page 3: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 3

Classificação das Classes:

Domínio de Aplicação: Classes gerenciadoras de eventos Classes reconhecedoras de eventos

Domínio de negócios: Classes de relacionamento Classes de papel Classes de atributo

Page 4: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 4

Domínio de arquitetura Classes de interface humana Classes de manipulação de banco de

dados Classes de comunicação de máquina

Domínio de base: Classes semânticas Classes estruturais Classes fundamentais

Page 5: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 5

O domínio de base:

Utilizáveis em várias aplicações, em indústrias diferentes e em ampla faixa de arquiteturas de computador: fundamentais: Booleano, Char, Real, … estruturais: Pilha, Fila, Lista, Conjunto,

… semânticas: Data, Hora, Ângulo,

Dinheiro, Massa, …

Page 6: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 6

O domínio de arquitetura:

Reutilização limitada a uma única arquitetura de computador: comunicação de máquina: Porta,

MáquinaRemota, … manipulação de banco de dados:

Negociação, Backup, … interface humana: Janela,

BotãoDeComando, …

Page 7: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 7

O domínio de negócios:

Úteis em muitas aplicações, mas restritas a uma área de negócios: de atributos: Saldo,

TemperaturaDoCorpo, … de papel: Cliente, Paciente, … de relacionamento:

TitularidadeDeConta, SupervisãoDePaciente, …

Page 8: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 8

O domínio de aplicação:

Utilizada em uma única aplicação ou em aplicações afins: reconhecedoras de eventos:

MonitorDeTemperaturaDePaciente, …

gerenciadoras de eventos: AquecimentoDePacienteHipotérmico, …

Page 9: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 9

Domínio de classes e suas reutilizações:

Domínio de aplicação Gerenciadora de eventos Reconhecedora de eventos

Domínio de negócios Relacionamento Papel Atributo

Domínio de arquitetura Interface humana Banco de dados Comunicação de máquina

Domínio de base Semântica Estrutura Fundamental

Baixareutilização

Altareutilização

Médiareutilização

Page 10: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 10

A origem das classes em cada domínio

De onde vêm as classes? Domínio de base >> “compradas” de

um distribuidor! [custo de desenvolver 1000 vezes maior!]

Eventualmente, podem ser acrescidas algumas classes próprias.

Page 11: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 11

...

Domínio de arquitetura: Similar ao domínio de base, com as observações: Talvez você tenha de adquirir do fornecedor

da infra-estrutura de hardware e software Podem existir incompatibilidades de classes

provenientes dos diversos distribuidores A biblioteca de base pode ser incompatível

com as bibliotecas de arquitetura É provável que a bilbioteca de arquitetura

precise de modificações

Page 12: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 12

...

Domínio de negócio: Bastante difíceis de comprar!

(distribuidores gerais não têm habilidade;mercado é difícel de contentar)

Boa análise e desenho resultarão em grau elevado de reutilização

Page 13: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 13

Domínio de aplicação: Reutilização pequena! {não se preocupe

muito com isto} Podem ser implementadas como

procedimentos convencionais, ou pacote de utilidade.

Por ex: AquecimentoDePacienteHipotérmico: - procedimento; única operação de classe;

ou operação da classe Paciente.

Page 14: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 14

Gráu de dependência:

O conjunto de classes referenciadas por uma determinada classe:

C é herdeira de D C tem atributo de D C tem argumento de

entrada de D C é uma variável de D C tem uma classe

amiga D (C++)

C tem um método que envia mensagem com argumento retornado de D

C tem método com variável local de D

C supre D com parâmetro de classe real em classe parametrizada

Page 15: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 15

Conjunto classe-referência direto:

C

C2 C3C1

3

Page 16: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 16

Conjunto classe-referência indireto:

C

C2 C3C1

C11 C12 C21 C31 C32

F1 F2 F3 F4 12

Page 17: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 17

Utilização do grau de dependência:

Fornece uma medida da sofisticação da classe [quanto está acima do domínio de base!]

Classes de domínios mais altos tem alto grau de dependência indireto (mais baixos > baixo grau)

Grau inesperado pode indicar deficiência de desenho (coesão X desenho do nada)

Page 18: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 18

Lei de Deméter [projeto --]

Para um obj da classe C, e qualquer op, cada objeto destinatário de mensagem deve ser:

1. O próprio obj (self /super; this; current)

2. Objeto referenciado na assinatura de op3. Objeto referenciado por variável de obj4. Objeto criado por op5. Objeto referenciado por variável global

Page 19: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 19

Coesão de Classe:

É a medida da inter-relação das características (atributos e operações) da interface externa de uma classe

Baixa coesão: características disparatadas;Alta coesão: características contribuem para

abstração de tipo implementada pela classe

Page 20: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 20

Critérios de desenho X Níveis de encapsulamento (nível 2)

PARA:DE:

NIVEL 0(linhas código)

NIVEL 1(operação)

NIVEL 2(classe)

NIVEL 0(linhas código)

Programação estruturada

Fan-out demensagem

__

NIVEL 1(operação)

Coesão Acoplamento

__

NIVEL 2(classe)

__ Coesão declasse

Acoplamento de classe

Page 21: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 21

Anomalias de coesão:

Coesão de instância mista

Coesão de domínio misto

Coesão de papel misto

Page 22: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 22

Coesão de instância mista:

Algumas características são indefinidas para alguns objetos da classe.

Por ex: Classe Vendedorfred é comissionado:fred.LançarPorcentagemComis;mary não é comissionada: X

mary.LançarPorcentagemComis;

Page 23: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 23

solução:

Vendedor

Vendedor Comissionado

/porcentagemDeComis: .

Vendedor Não Comis.

Page 24: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 24

Coesão de domínio misto:

Contém um elemento que cria dependência em relação a classe extrínseca de domínio diferente

Extrínseca: Elefante e PessoaIntrínseca: Data à Pessoa {data de

nascimento}

Page 25: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 25

exemplo:

Real

arcTang: Ângulo equivalenteEmCelsius: TemperaturaEmCelsiusquantiaEmEuro: DinheiroEuropeu

Page 26: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 26

Coesão de papel misto (a menos problemática!):

Contém um elemento que cria dependência com classe extrínseca no mesmo domínio

Ex: Pessoa e o atributo númeroDeCachorrosPossuidos

Page 27: Domínios e Coesão1 Domínios, Grau de Dependência e Coesão

Domínios e Coesão 27

Problemas:

Se uma aplicação não trata com cachorros? – as pessoas continuam com o atributo númeroDeCachorrosPossuidos?

E, como proceder com:númeroDeBarcosPossuidos,númeroDeGatosPossuidos,númeroDeSaposPossuidos?