Desenvolvimento em .Net - Herança e Interfaces

Preview:

Citation preview

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

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

Construtor● boa prática

– mybase.new● nota

– acessibilidade dentro da mesma familia

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

funções● shadows

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

● 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

Exercicio● Criar novo projecto chamado 0006_Heranca3

Exercicio

Exercicio

Exercicio

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

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)

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

Exercicio● Criar novo projecto chamado 0008_Interface

Exercicio

Exercicio

Exercicio

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.

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

Recommended