A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Conformidade de tipo e comportamento fechado

Apresentações semelhantes


Apresentação em tema: "Conformidade de tipo e comportamento fechado"— Transcrição da apresentação:

1 Conformidade de tipo e comportamento fechado

2 Classe X Tipo “Uma classe é uma implementação de um tipo, que é a visão abstrata ou externa de uma classe” “Um tipo pode ser implementado sob a forma de diversas classes. Tendo cada classe seu próprio desenho interno” Conformidade de tipo

3 ÁrvoreUtilizandoMatriz
Por exemplo: <<type>> Grupo {abstrato} <<class>> ÁrvoreUtilizandoID acrescentarElementos (novoElemento) {abstrato} <<implements>> <<class>> ÁrvoreUtilizandoMatriz <<type>> Árvore acrescentarElementos (novoElemento) {abstrato} <<implements>> Conformidade de tipo

4 [semanticamente não tem sentido]
Embora um tipo represente a visão externa de uma classe, o conceito de subtipo é distinto do conceito de subclasse! Por exemplo: Elefante herda de Retângulo {sintaticamente pode ser válido} [semanticamente não tem sentido] Conformidade de tipo

5 Princípio da Conformidade de Tipo:
“Se S é subtipo real de T, então S deve se conformar a T. Ou seja, um objeto de tipo S pode ser provido em qualquer contexto no qual um objeto de tipo T seja esperado, e a exatidão será preservada quando qualquer operação de acesso do objeto for executada.” Conformidade de tipo

6 Por exemplo: Círculo é um subtipo de Elipse!
Qualquer objeto que for um círculo será também uma elipse. “em um desenho OO sadio, o tipo de cada classe deve conformar-se ao tipo de sua superclasse.” [contrariando a definição!] Conformidade de tipo

7 Como assegurar a Conformidade de Tipo?
A invariante da subclasse deve ser, no mínimo, tão forte quanto a da superclasse. Ex: Retângulo >> w1=w2 and h1=h2 Quadrado >> w1=w2 and h1=h2 and w1=h2 Conformidade de tipo

8 e … deve satisfazer também:
Toda operação da superclasse deve ter uma correspondente na subclasse com mesmo nome e assinatura A pré-condição de qq operação não deve ser mais forte do que da superclasse (princípio da contravariação) A pós-condição de qq operação deve ser, no mínimo, tão forte quanto a operação da superclasse (princípio da covariação) Conformidade de tipo

9 Ex de conformidade de tipo:
Funcionário CalcularBônus (avaliaçãoDeDesempenho, out %DeBônus) Gerente CalcularBônus (avaliaçãoDeDesempenho, out %DeBônus) Conformidade de tipo

10 invariantes: Funcionário >> nivelDeFormação > 0
Gerente >> nivelDeFormação > 20! Operações correspondentes (ok) Pré-condição: avaliaçãoDeDesempenho: 0 a 5 para Gerente e Funcionário 0 a 8 maior (mais fraca) para Gerente! Pós-condição: %DeBônus: 0% a 10% para Gerente e Funcionário 0% a 6% menor (mais forte) para Gerente Conformidade de tipo

11 Resumo dos requisitos para conformidade de tipo:
Para S ser um subtipo verdadeiro de T: O espaço-estado de S deve ter as mesmas dimensões de T Nas dimensões que S e T compartilham, o espaço-estado de S deve ser igual a, ou residir dentro do espaço-estado de, T S.op deve ter o mesmo nome que T.op Conformidade de tipo

12 A pré-condição de S.op deve ser igual ou mais fraca do que de T.op
A lista de argumentos da assinatura formal de S.op deve corresponder à de T.op A pré-condição de S.op deve ser igual ou mais fraca do que de T.op A pós-condição de S.op deve ser igual ou mais fraca de T.op Conformidade de tipo

13 O princípio do Comportamento Fechado:
“em uma hierarquia de herança baseada em tipo/subtipo, a execução de qualquer operação em um objeto da classe C – incluindo as operações herdadas de suas superclasses – deverá obedecer à invariante de classe de C.” Conformidade de tipo

14 Mover (distância: comprimento)
Caso 1 (sem problemas!) mover tr1: Polígono Mover (distância: comprimento) Conformidade de tipo

15 Caso 2 (com problemas!) ? acrescentarVértice tr1: Polígono
(novoVértice: Ponto) Conformidade de tipo

16 Solução: Evitar a herança de acrescentarVértice
Suprimir acrescentarVértice de forma que ela não tenha qualquer efeito Estar preparado para reclassificar Triângulo como Quadrilátero (se for admissível pela aplicação) Conformidade de tipo


Carregar ppt "Conformidade de tipo e comportamento fechado"

Apresentações semelhantes


Anúncios Google