desenvolvimento em .net - herança e interfaces
TRANSCRIPT
![Page 1: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/1.jpg)
Desenvolvimento em .NET
Herança e Interfaces
![Page 2: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/2.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/3.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/4.jpg)
Construtor● boa prática
– mybase.new● nota
– acessibilidade dentro da mesma familia
![Page 5: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/5.jpg)
Keywords● inherits● overridable / overrides● not inheritable => classe / not overridable =>
funções● shadows
![Page 6: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/6.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/7.jpg)
● 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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/8.jpg)
Exercicio● Criar novo projecto chamado 0006_Heranca3
![Page 9: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/9.jpg)
Exercicio
![Page 10: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/10.jpg)
Exercicio
![Page 11: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/11.jpg)
Exercicio
![Page 12: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/12.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/13.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/14.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/15.jpg)
Exercicio● Criar novo projecto chamado 0008_Interface
![Page 16: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/16.jpg)
Exercicio
![Page 17: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/17.jpg)
Exercicio
![Page 18: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/18.jpg)
Exercicio
![Page 19: Desenvolvimento em .Net - Herança e Interfaces](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/19.jpg)
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](https://reader037.vdocuments.com.br/reader037/viewer/2022100518/5599caa21a28abc2418b457c/html5/thumbnails/20.jpg)
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