Material de Apoio Programação de Computadores

Material de Apoio Programação de Computadores

(Parte 1 de 7)

Material de Apoio Programação de Computadores

INTRODUÇÃO

NESTE MATERIAL FALAREMOS SOBRE:

  • O que é Herança?

  • Um Rápido Exemplo de Herança

  • Membros Compartilhados

  • Palavras Chave de Herança

  • Polimorfismo

  • Um Exemplo Visual de Herança

  • Quando Usar e Quando Não Usar Herança

  • Ado Net - Introdução

SUMARIO

O que é Herança? 1

Um Rápido Exemplo de Herança 1

Membros Compartilhados 1

Palavras Chave de Herança 1

Polimorfismo 1

Um Exemplo Visual de Herança 1

Quando Usar e Quando Não Usar Herança 1

Ado Net - Introdução 1

O que é Herança? 3

Um Rápido Exemplo de Herança 6

Membros Compartilhados 8

Palavras-Chave de Herança 11

Polimorfismo 18

Um Exemplo Visual de Herança 21

Quando Usar e Quando Não Usar Herança 27

Sumário 28

A Importância do ADO.NET 29

A Árvore da Família ADO.NET 30

No Princípio: SQL Embutido e APIs 31

ODBC, DAO, e RDO 31

OLE DB e ADO 33

Chegou a herança! Chegou a herança!

Talvez o mais requisitado recurso para o Visual Basic deste a versão 1.0 tem sido a herança. Finalmente, a herança chegou para satisfazer o desejo dos adeptos da programação orientada para objeto (POO). E ela venho bem. Muitos dos desenvolvedores podem desprezar este recurso, mas ele é realmente muito poderoso e, com o poder vem a responsabilidade. Você precisa ter plena consciência de quando está fazendo uso da herança.

Se você nunca teve contato com o conceito de herança antes, você pode estar se perguntando o que vem a ser herança ou, ao menos, o que ela pode fazer por você. Este capítulo procurará apresentar-lhe a herança no estilo .NET.

O que é Herança?

Por anos, um dos recursos mais requisitados para o VB tem sido a herança. A Microsoft tem disponibilizado uma forma de herança no VB: a herança de interface, disponível no VB desde que o VB iniciou o suporte à criação de objetos no VB4. Os desenvolvedores, contudo, queriam ter o que é conhecido como herança de implementação. Com o VB .NET, os desenvolvedores finalmente realizaram seu desejo, graças à CLR (common language runtime). Se você não sabe o que são herança de interface e herança de implementação, veja a seguir.

Herança é um modo poderoso de reutilizar código. Com a herança, você escreve uma classe que contém algumas propriedades e métodos. Esta classe torna-se a base para outras classes e é conhecida como classe base. Classes que usam esta classe base são conhecidas como classes derivadas. Muito frequentemente, as classes derivadas estendem a funcionalidade da classe base.

Imagine se você quisesse criar uma aplicação para modelar parte de uma universidade. Como parte da aplicação, você gostaria de criar dois objetos representando estudantes e professores. Estudantes e professores têm ambos um número de coisas em comum. Cada um tem um nome, um endereço, e assim por diante. Contudo, cada um também tem algumas diferenças. Estudantes têm especialização, enquanto professores têm cursos que ministram. Estudantes são cobrados, enquanto professores são pagos pelos seus trabalhos. Professores aprovam , enquanto estudantes são aprovados.

Como você pode ver, há similaridades e diferenças que devem ser levadas em conta quando estes objetos são criados. O objetivo de se usar herança é escrever o código para as similaridades apenas uma vez, e então, reutilizá-lo em ambos os objetos: estudantes e professores.

Herança de Interface no VB6

No VB6, você tinha o que era chamado de herança de interface. Com a herança de interface, você podia criar a interface de um componente reutilizável. Suponhamos que você queira criar um objeto Pessoa que tenha todas as propriedades compartilhadas por estudantes e professores. No caso do VB6, você criaria um módulo de classe que contivesse as definições daquelas propriedades, mas não o verdadeiro código de implementação.  Sua classe de interface poderia ser chamada IPessoa e parecer-se com isto:

Public Property Get Nome() As String

End Property

Public Property Let Nome(psNome As String)

End Property

Public Property Get Endereco() As String

End Property

Public Property Let Endereco(psEndereco As String)

End Property

Public Function Matricular() As Boolean

End Function

No VB6, você podia criar uma interface usando um módulo de classe. Tecnicamente, o VB não podia criar interfaces, mas você podia usar o truque de criar um módulo de classe apenas com definições de propriedades e métodos, e então implementá-los em outra classe. Era apenas a criação de uma classe, mas sem nenhum código de implementação dentro dela, assim ela era vista como uma interface. Por exemplo, o método Matriculado não tem nenhum código para tratar a matrícula. E, se você está curioso para saber o porquê de haver um método Matricular na interface IPessoa, é por que professores também podem fazer cursos na universidade, o que alguns fazem, porque eles têm a vantagem de fazê-lo de graça em muitas instituições.

Para usar esta interface em outras classes do VB6, você tinha de adicionar esta linha de código na classe:

Implements IPessoa

Esta linha prepara a sua nova classe para herdar a interface da classe IPessoa. No VB6, você podia realmente adicionar código de implementação dentro da classe de interface, mas ele era ignorado quando você implementava a interface na classe derivada.

Imagine que você tenha usado a palavra Implements em um classe chamada Estudante. Esta classe precisa agora implementar cada propriedade pública, método e evento encontrado em IPessoa. Portanto, o seu código para Estudante incluiria algo parecido com o seguinte:

Public Property Get IPessoa_Nome() As String

IPessoa_Nome = msNome

End Property

Public Property Let IPessoa_Name(psNome As String)

msName = psName

End Property

Public Property Get IPessoa_Endereco() As String

IPessoa_Endereco = msEndereco

End Property

Public Property Let IPessoa_Endereco(psEndereco As String)

msEndereco = psEndereco

End Property

Public Function IPessoa_Matricular() As Boolean

'Abre banco de dados

'Verifica se curso está completo

'Se não, adiciona estudante

End Function

O código em Estudante contém a implementação da interface projetada em IPessoa.

Examinando isto, você provavelmente reconhecerá que, na maior parte do tempo, a implementação para a classe Estudante será a mesma para a classe Professor, ao menos para estes membros de classe. Não seria mais fácil criar este código de implementação na classe IPessoa e então apenas ter este código trazido para dentro da classe Estudante e Professor? Isto é o que a herança de implementação faz.

Herança de Implementação do VB .NET

No VB .NET, você não tem que criar uma interface em separado, embora você até possa. Você pode criar uma classe com código de implementação e herdá-la em outra classe. Isto significa que você poderia adicionar o código para as propriedades Nome e Endereço e para o método Matricular em uma classe Pessoa. Então, as classes Professor e Estudante poderiam ambas herdar da classe base Pessoa. Estudante e Professor teriam ambos os acessos ao código interno à Pessoa, ou poderiam substituí-lo pelo seu próprio código se fosse preciso.

Uma coisa a observar é que no VB .NET, todas as classes são herdáveis por default. Isto inclui formulários, que são apenas mais um tipo de classe. Isto significa que você pode criar um novo formulário baseado em um já existente. Você verá um exemplo de herança de formulários mais adiante neste capítulo.

Embora o VB .NET possibilite a verdadeira herança de implementação, as interfaces não desapareceram. Na verdade, elas foram muito melhoradas no VB .NET; juntas, herança e interfaces lhe dão a possibilidade de usar polimorfismo. Isto será examinado no final deste capítulo.

Um Rápido Exemplo de Herança

Crie uma nova aplicação Windows com o VB .NET e nomeie o projeto TesteDeHeranca. Adicione um botão ao formulário e vá para a janela de código. No código, adicione a seguinte classe. Certifique-se de que você a adiciona fora da definição de classe para o formulário!

Public Class Pessoa

Dim msNome, msEndereco As String

Property Nome() As String

Get

Nome = msNome

End Get

Set(ByVal Value As String)

msNome = Value

End Set

End Property

Property Endereco() As String

Get

Endereco = msEndereco

End Get

(Parte 1 de 7)

Comentários