20

Click here to load reader

Desenvolvimento em .Net - Herança e Interfaces

Embed Size (px)

Citation preview

Page 1: Desenvolvimento em .Net - Herança e Interfaces

Desenvolvimento em .NET

Herança e Interfaces

Page 2: Desenvolvimento em .Net - Herança e Interfaces

Objectivos● Perceber conceito de herança● Dominar terminologia aplicável● Conhecer keywords aplicáveis● Perceber aplicabilidade de Classes Abstractas● Perceber conceito de interfaces● Distinguir utilização de interfaces e classes

abstractas

Page 3: Desenvolvimento em .Net - Herança e Interfaces

Herança● Criar especializações● Base class / derived class● Base class é mais genérica que derived class● Derived class é mais especifica que base class● Base class pode sempre ser substituida por

derived class● Uma classe só pode herdar de uma outra

classe

Page 4: Desenvolvimento em .Net - Herança e Interfaces

Construtor● boa prática

– mybase.new● nota

– acessibilidade dentro da mesma familia

Page 5: Desenvolvimento em .Net - Herança e Interfaces

Keywords● inherits● overridable / overrides● not inheritable => classe / not overridable =>

funções● shadows

Page 6: Desenvolvimento em .Net - Herança e Interfaces

Cenário● Terceiros (base class)

– Cliente / Fornecedor (derived class)● ambos têm um método DeterminarMorada() que de

formas diferentes determinam a morada apropriada● Artigo (base class)

– Produto / Serviço (derived class)● ambos têm um método CalcularValor() que de formas

diferentes calcula o valor final

Page 7: Desenvolvimento em .Net - Herança e Interfaces

● Problema– Base class sabe que é obrigatorio implementar

determinado método / propriedade, mas não sabe os detalhes de implementação ou então propõe uma solução

● Solução– MustInherit / MustOverride

Classes Abstractas

Page 8: Desenvolvimento em .Net - Herança e Interfaces

Exercicio● Criar novo projecto chamado 0006_Heranca3

Page 9: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 10: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 11: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 12: Desenvolvimento em .Net - Herança e Interfaces

Interface● é um contrato● não tem nenhuma implementação● uma classe pode implementar mais do que um

interface● Convenção – nome do interface começa

sempre por I. ex: IPesquisavel

Page 13: Desenvolvimento em .Net - Herança e Interfaces

Herança ou Interface● Herança

– indica uma relação “is a” que será SEMPRE válida● um cliente será sempre um terceiro

● Interface– especifica uma potencialidade

● um artigo é pesquisável assim como um terceiro também é pesquisável

– especifica um conjunto de caracteristicas (métodos / propriedades)

Page 14: Desenvolvimento em .Net - Herança e Interfaces

Vantagens Interface● Como não tem implementação é mais rápido

de definir● Permite partilhar um “contrato” entre objectos

não relacionados hierarquicamente– um artigo não é um terceiro mas os dois podem ser

pesquisáveis● Normalmente recomenda-se a definição de

Interfaces em deterimento da definição de Classe Abstractas

Page 15: Desenvolvimento em .Net - Herança e Interfaces

Exercicio● Criar novo projecto chamado 0008_Interface

Page 16: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 17: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 18: Desenvolvimento em .Net - Herança e Interfaces

Exercicio

Page 19: Desenvolvimento em .Net - Herança e Interfaces

Exemplo MultiITV● Acesso a dados via Application Server, XML,

ODBC– todos têm que implementar (à sua maneira) o

mesmo conjunto de métodos:● Open(), Close(), Execute()

– partilham um conjunto de métodos e propriedades● State, ConnectionProperties, RuntimeProperties,

InicializarComandos()● no código só faço connection.Execute

– pedido reencaminhado para acesso a dados específico.

Page 20: Desenvolvimento em .Net - Herança e Interfaces

Objectivos● Perceber conceito de herança● Dominar terminologia aplicável● Conhecer keywords aplicáveis● Perceber aplicabilidade de Classes Abstractas● Perceber conceito de interfaces● Distinguir utilização de interfaces e classes

abstractas