VB.NET -
Primeiros passos - Conceitos - V 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 nao 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 caracter 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
Uma classe pode possuir membros como : campos ,
propriedades , métodos: sub-rotinas e funções. Assim vamos incluir uma
sub-rotina a nossa classe Aluno:| 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 . Na linguagem 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 :
Public - Os membros da classe
não possuem qualquer restrição e podem ser acessados
por qualquer programa.
Private - Os membros somente podem
ser acessados a partir da própria classe.
Protected - Os membros são
acessíveis a partir da própria classe e das classes
derivadas.
Friend - Os membros são
acessíveis somente dentro do programa que possuem a
declaração da classe.
Protected
Friend
- Os membros são acessados somente pelo código de
dentro do projeto e pelo código na classe derivada.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 a 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 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 á
incializaçã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ê extenda 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 caracteristicas 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 herenç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 |
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 |
Class Teste |
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....
(aguarde ativação do link)
José Carlos Macoratti