Continuando nossa série de artigos (ou diria curso) sobre VB.NET - Primeiros passos , vamos falar um pouco sobre as características da OOP presentes no VB.NET . OOP significa : OOP - Object Oriented Programming Language , e para você ficar sabendo mais sobre OOP veja os artigos :
Vou tentar não ser repetitivo , pois muitos conceitos já foram abordados nos artigos acima , procurando dar um visão geral das novidades relacionadas a OOP presente no VB.NET , afinal o VB.NET é uma linguagem orientada a objetos.
Classes
As classes são o foco principal da OOP , em uma classe temos um tipo de dados que oferece alguma funcionalidade. No VB.NET uma classe é declarada usando a palavra-chave : Class .
Class Aluno End Class |
Temos ao
lado a estrutura básica de uma classe :
|
Para começar a trabalhar com uma classe incluindo-a em um projeto VB.NET , primeiro temos que criar um projeto do tipo Windows Application e e selecionar no menu Project->Add Class .
Será incluído em seu projeto um arquivo padrão com o nome de Class1.vb (a extensão .vb também refere-se a arquivos para formulário, modulo , etc...)
Nota1: A notação recomendada para dar nome a uma classe é a seguinte : O primeiro caractere do nome da classe deve estar em caixa alta ; assim também como cada primeiro caractere de uma palavra concatenada para formar o nome da classe. Ex: CalculaSalario , EnviaArquivoTexto , etc..
Membros de uma Classe
Class Aluno Public FaçaAlgumaCoisa() MsgBox " Olá Pessoal ", End Sub End Class |
As sub-rotinas e funções são chamados de métodos. As regras usadas para dar nome aos métodos são as mesmas que explanamos em Nota1. |
Outro tipo de membro de uma classe são os campos. Damos nomes aos campos usando a seguinte regra: somente o primeiro caractere do nome da classe deve ficar em caixa baixa , os demais primeiros caracteres das palavras concatenadas para formar o nome do campo devem ficar me caixa alta. Ex: nomeAluno , salarioIntegral , etc.
Vamos criar dois campos para classe Aluno:
Public Class
Aluno Dim notaExame As Double = 7.8 Dim materiaExame As String = "Inglês" Public Sub MostraNota() System.Console.WriteLine(notaExame) End Sub End Class |
Instanciando um objeto
Uma classe é um modelo de uma entidade que a classe representa. Para usar um campo , método ou qualquer outro membro de uma classe você vai precisar tornar a classe em um objeto.
No paradigma OOP um objeto é uma instância de uma classe; assim para criar um objeto temos que instanciar o objeto a partir de uma classe.
Vamos mostrar como fazer isto com a classe Aluno:
- Vamos incluir um módulo no nosso
projeto. Faça isto no menu
Project opção Add
Module - No arquivo Module1.vb temos a sub-rotina Main onde declaramos a variável objeto - objAluno - como um objeto da classe Aluno - Após instanciar o objeto temos acesso as sua funcionalidades : no nosso caso somente temo o método MostraNota(). |
Nota: poderíamos ter usado uma sintaxe diferente para instanciar o objeto , fazendo isto em duas etapas :
declarar uma variável objeto do tipo Aluno : Dim objAluno As Aluno
Instanciar o objeto com a palavra-chave - New - : objAluno = New Aluno
Namespaces
Ao escrever um programa no VB.NET , escrevemos classes , funções , rotinas e outros tipos.
Para organizar a aplicação agrupamos as classes dentro de namespaces . Veja o método MostraNota() da Classe Aluno . Este método usa a classe Console que esta dentro do namespace System, por isto tivemos que escrever : System.Console.WriteLine. (é uma regra escrever o nome do namespace na frente da classe)
Para tornar o seu trabalho de digitação mais fácil e o seu código mais limpo e legível podemos importar um namespace que esta sendo usado com frequência e assim não precisaremos mais ficar referenciando nome do namespace ao qual a classe pertence. Vamos aplicar isto a classe Aluno:
Imports System Public Class Aluno Dim notaExame As Double = 7.8 Dim materiaExame As String = "Inglês" Public Sub MostraNota() Console.WriteLine(notaExame) End Sub End Class |
Como importamos o Namespace System , não precisamos fazer mais referência a ela ao usar a classe Console.
Classes - Tipos de acesso
Ao escrever suas classes você pode ou não querer que outras pessoas acessem sua funcionalidade acessando suas propriedades e chamando seus métodos.
Na OOP podemos restringir o acesso a um membro de uma classe e ter assim mais controle sobre o conteúdo da classe. Você é quem decide se vai permitir que outras pessoas acessem os métodos e propriedades da sua classe ou se o acesso somente poderá ser feito a partir da sua própria classe.
O VB.NET oferece os seguintes níveis de acesso :
Membros Estáticos
Na OOP existe um tipo especial de membro chamado membro estático - static - no VB.NET também usamos o termo Shared .
Um membro estático é aquele que pode ser acessado sem ser necessário fazer a instância do objeto, isto é, eles estão sempre disponíveis, basta pegar e usar.
Vamos mostrar como aplicar este conceito na nossa classe Aluno:
Public Class
NotaFinal Public Shared Nota1 As Double = 8.5 Public Shared Nota2 As Double = 7.6 Public Shared Nota3 As Double = 6.4 Public Shared Nota4 As Double = 5.9 Public Shared Nota5 As Double = 9.3 End Class Public Class Aluno Dim notaExame As Double = 7.8 Dim materiaExame As String = "Inglês" Public Sub MostraNota() System.Console.WriteLine(NotaFinal.Nota2) End Sub End Class |
- Observe que criamos uma classe
chamada :
NotaFinal e definimos na classe cinco
propriedades(membros) do tipo
static (estática)
- No método MostraNota da classe Aluno estamos acessando o membro Nota2 sem instanciar a classe NotaFinal - Indicamos apenas o nome da Classe e já temos o acesso aos membros estáticos da mesma:
|
Nota: A plataforma .NET possui muitos membros estáticos. Você usou um sem perceber. Quer ver só ?
Quando criamos a classe Aluno , usamos o método WriteLine da classe console para exibir as notas, pois bem, acessamos Writeline sem ter que instanciar o objeto System.Console.
Classes - Construtor
O que é um Construtor ?
Um construtor é um método especial que deve estar presente em uma classe para que a classe possa ser instanciada. Um construtor também é usado para inicializar as variáveis membros da classe.
No VB.NET este método é usado com o nome de Sub New.
Ora, nós não criamos a nossa classe Aluno com membros e métodos e ela não esta funcionando ???
Eu não me lembro de ter criado nenhum construtor para a nossa classe Aluno, no entanto ela esta funcionando normalmente. Sabe porque ?
Por que quando não definimos um método construtor o VB.NET cria um construtor padrão automaticamente para nós.
Quando você instancia um objeto usando a palavra-chave New o construtor da classe é chamado automaticamente e se você definir um construtor para sua classe é ele que será chamado.
Então um construtor é um método que controla a inicialização de um objeto e você pode usá-lo para realizar as operações necessárias á inicialização de um objeto.
O VB.NET permite que você crie uma rotina Sub New() dentro da sua classe para criar um construtor. O construtor é executado apenas uma vez quando você criar a instância do objeto.
Veja no exemplo abaixo a criação de um construtor para nossa classe Aluno.
Imports System Public Class Aluno Dim notaExame As Double Dim materiaExame As String Sub New() MyBase.new() 'chama o construtor da classe base notaExame = 0 materiaExame = "Inglês" End Sub Public Sub MostraNota() System.Console.WriteLine(notaExame) End Sub End Class |
O construtor da classe inicializa os
campos
notaExame e materiaExame. A palavra chave MyBase é usada para se referir aos membros da classe base quando se trabalha em uma classe derivada. Você usa a MyBase para se referenciar a classe base imediata e seus membros públicos herdados. |
Herança
Agora o VB.NET possui herança. Mas o que é herança ?
Não !!! não uma fortuna que você recebe de um parente distante !!! ...
Herança é uma característica que permite que você estenda uma classe ,ou seja, você pode criar novas classes e fazer com essas classes herdem as características da classe origem. Então você pode acrescentar novas propriedades e métodos a estas classes.
Uma classe que herda as características de outra é chamada de classe-filha ou subclasse . A classe que foi herdada é chamada de classe-Pai ou classe base ou superclasse.
No VB.NET usamos a declaração inherits para implementar a herança. O VB.NET não suporta herança múltipla, assim uma classe derivada pode ter uma única classe base.
Algumas considerações sobre herança:
NotInheritable Class Calculadora End Class |
A classe Calculadora não pode ser herdada. |
Vou mostrar na prática como utilizar a herança. Vamos criar uma classe que herde da classe Aluno.
Vamos chamar esta classe de Teste. Assim Aluno será a classe base e Teste a classe subclasse.
A classe não vai possuir nenhum método ou propriedade.
Vejamos como criar a classe Teste usando herança:
Class Teste:
Inherits Aluno End Class |
Class Teste Inherits Aluno End Class |
Acima exibimos a duas maneiras de usar a palavra-chave Inherits e criar uma subclasse a partir de uma classe Pai.
Pela teoria a classe Teste vai herdar todos as propriedades e métodos da classe Aluno.
Ao lado temos o código que instância a classe Teste. Como a classe teste herda todas as propriedades e métodos da classe Aluno , pois é uma subclasse dela, temos acesso ao método MostraNota da classe Aluno. |
Vamos agora incluir o método - ImprimeMateria - na classe Teste :
Public Class
Aluno
Public notaExame As Double Public materiaExame As String Sub New() MyBase.new() notaExame = 0 materiaExame = "Inglês" End Sub Public Sub MostraNota() System.Console.WriteLine(notaExame) End Sub End Class Public Class Teste Inherits Aluno Public Sub ImprimeMateria() Console.WriteLine(materiaExame) End Sub End Class |
O novo método -
ImprimeMateria
- acessa a propriedade
materiaExame definida como
public
na classe
Aluno. Se você alterar o tipo para private haverá um erro em tempo de execução. |
O melhor exemplo da utilização a herança é a própria plataforma .NET Framework , ela na verdade consiste em uma hierarquia de classes onde uma classe deriva de outra.
Assim a classe Button do namespace Windows.Forms é uma classe filha da classe ButtonBase que por sua vez é uma classe filha de Control.
Com isto creio que as bases das características OOP presentes no VB.NET já não são mais algo misterioso e obscuro para você.
Aguarde a continuação do assunto em VB.NET - Primeiros passos - Conceitos - VI , onde continuaremos a falar sobre : sobrecarga, interfaces , classes abstratas e muito mais....
Veja os Destaques e novidades do SUPER DVD VB (sempre atualizado) : clique e confira ! Quer migrar para o VB .NET ? Veja mais sistemas completos para a plataforma .NET no Super DVD .NET , confira... Quer aprender C# ?? Chegou o Super DVD C# com exclusivo material de suporte e vídeo aulas com curso básico sobre C# Veja também os cursos em Vídeo Aulas : |
Gostou ? Compartilhe no Facebook Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Visual Basic .NET - aquecendo as turbinas