Módulos, Estruturas e Classes

Existem apenas três maneiras de organizar uma VB.NET inscrição.

  • Módulos
  • Estruturas
  • Aulas

Mas a maioria dos artigos técnicos supõe que você já saiba tudo sobre eles. Se você é um dos muitos que ainda tem algumas perguntas, você pode ler além dos bits confusos e tentar descobrir de qualquer maneira. E se você tem um muito de tempo, você pode começar a pesquisar Da Microsoft documentação:

  • "Um Módulo é um arquivo executável portátil, como type.dll ou application.exe, que consiste em uma ou mais classes e interfaces."
  • "Uma declaração de classe define um novo tipo de dados."
  • "A instrução Estrutura define um tipo de valor composto que você pode personalizar."

Certo então. Alguma pergunta?

Para ser um pouco mais justo com a Microsoft, eles têm páginas e páginas (e mais páginas) de informações sobre tudo isso que você pode percorrer. E eles precisam ser o mais exatos possível, porque estabelecem o padrão. Em outras palavras, a documentação da Microsoft às vezes parece um livro de direito porque é um livro de direito.

instagram viewer

Mas se você está apenas aprendendo .NET, pode ser muito confuso! Você tem que começar de algum lugar. Compreender as três maneiras fundamentais de escrever código no VB.NET é um bom ponto de partida.

Você pode escrever VB.NET código usando qualquer um desses três formulários. Em outras palavras, você pode criar um Aplicação de console no VB.NET Express e escreva:

Módulo Módulo1
Sub principal()
MsgBox ("Este é um módulo!")
End Sub
Módulo final
Classe Classe 1
Sub principal()
MsgBox ("Esta é uma classe")
End Sub
Classe final
Estrutura Struct1
Dim myString As String
Sub principal()
MsgBox ("Esta é uma estrutura")
End Sub
Estrutura final

Isso não faz qualquer sentido como um programa, é claro. O ponto é que você não recebe um erro de sintaxe, por isso é "legal" Código VB.NET.

Essas três formas são a única maneira de codificar a raiz de abelha rainha de todo o .NET: o objeto. O único elemento que interrompe a simetria das três formas é a afirmação: Dim myString As String. Isso tem a ver com uma estrutura como um "tipo de dados composto", como a Microsoft declara em sua definição.

Outra coisa a notar é que todos os três blocos têm um Sub principal() neles. Um dos princípios mais fundamentais da OOP é geralmente chamado encapsulamento. Este é o efeito "caixa preta". Em outras palavras, você deve poder tratar cada objeto independentemente e isso inclui o uso de sub-rotinas com nome idêntico, se desejar.

Aulas

As aulas são o lugar 'certo' para começar, porque, como Microsoft observa: "Uma classe é um elemento fundamental da programação orientada a objetos (OOP)." De fato, alguns autores tratam módulos e estruturas apenas como tipos especiais de classes. Uma classe é mais orientada a objetos que um módulo, porque é possível instanciar (faça uma cópia de) uma classe, mas não um módulo.

Em outras palavras, você pode codificar ...

Public Class Form1
Subformulário particular1_Load (_
Remetente ByVal como sistema. Objeto, _
ByVal e As System. EventArgs) _
Lida com o MyBase. Carga
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
End Sub
Classe final

(A instanciação da classe é enfatizada.)

Não importa se a própria classe, neste caso, ...

Classe pública Class1
Sub ClassSub ()
MsgBox ("Esta é uma classe")
End Sub
Classe final

... está em um arquivo por si só ou faz parte do mesmo arquivo com o Formulário 1 código. O programa é executado exatamente da mesma maneira. (Notar que Formulário 1 também é uma classe.)

Você também pode escrever um código de classe que se comporte de maneira semelhante a um módulo, ou seja, sem instancia-lo. Isso é chamado de Compartilhado classe. O artigo "Static" (ou seja, "Shared") versus Dynamic Types no VB.NET explica isso com muito mais detalhes.

Outro fato sobre as aulas também deve ser lembrado. Membros (propriedades e métodos) da classe existe apenas enquanto a instância da classe existe. O nome para isso é escopo. Ou seja, o escopo de uma instância de uma classe é limitado. O código acima pode ser alterado para ilustrar esse ponto da seguinte maneira:

Public Class Form1
Subformulário particular1_Load (_
Remetente ByVal como sistema. Objeto, _
ByVal e As System. EventArgs) _
Lida com o MyBase. Carga
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Nothing
myNewClass. ClassSub ()
End Sub
Classe final

Quando o segundo myNewClass. ClassSub () é executada uma instrução Exceção de Referência Nula erro é gerado porque o ClassSub membro não existe.

Módulos

No VB 6, era comum ver programas em que a maior parte do código estava em um módulo (A .BAS, arquivo em vez de, por exemplo, em um Formato arquivo como Form1.frm.) No VB.NET, os módulos e as classes estão em .VB arquivos. A principal razão pela qual os módulos estão incluídos no VB.NET é oferecer aos programadores uma maneira de organizar seus sistemas, colocando o código em locais diferentes para ajustar o escopo e acessar seus código. (Ou seja, por quanto tempo os membros do módulo existem e que outro código pode fazer referência e usar os membros.) Às vezes, convém colocar o código em módulos separados apenas para facilitar o trabalho.

Todos os módulos VB.NET são Compartilhado porque eles não podem ser instanciados (veja acima) e podem ser marcados Amigo ou Público para que eles possam ser acessados ​​na mesma montagem ou sempre que forem referenciados.

Estruturas

Estruturas são as menos compreendidas entre as três formas de objetos. Se estivéssemos falando de "animais" em vez de "objetos", a estrutura seria uma Aardvark.

A grande diferença entre uma estrutura e uma classe é que uma estrutura é um tipo de valor e uma classe é uma tipo de referência.

O que isso significa? Estou tão feliz que você perguntou.

Um tipo de valor é um objeto armazenado diretamente na memória. A Inteiro é um bom exemplo de um tipo de valor. Se você declarou um Inteiro no seu programa como este ...

Dim myInt as Inteiro = 10

... e você verificou o local da memória armazenado em myInt, você encontraria o valor 10. Você também vê isso descrito como "sendo alocado na pilha".

A pilha e a pilha são simplesmente maneiras diferentes de gerenciar o uso da memória do computador.

Um tipo de referência é um objeto em que o local do objeto é armazenado na memória. Portanto, encontrar um valor para um tipo de referência é sempre uma pesquisa em duas etapas. UMA Corda é um bom exemplo de um tipo de referência. Se você declarou um Corda como isso ...

Dim myString as String = "This is myString"

... e você verificou o local da memória armazenado em myString, você encontraria outro local de memória (chamado de ponteiro - essa maneira de fazer as coisas é o coração das linguagens no estilo C). Você precisaria ir para esse local para encontrar o valor "This is myString". Isso geralmente é chamado de "sendo alocado no heap". A pilha e a pilha

Alguns autores dizem que os tipos de valor nem são objetos e apenas os tipos de referência podem ser objetos. Certamente é verdade que as sofisticadas características dos objetos, como herança e encapsulamento só são possíveis com tipos de referência. Mas começamos este artigo dizendo que havia três formas de objetos, então eu tenho que aceitar que as estruturas são algum tipo de objeto, mesmo que sejam objetos não-padrão.

As origens de programação das estruturas remontam a linguagens orientadas a arquivos como o Cobol. Nesses idiomas, os dados eram normalmente processados ​​como arquivos simples seqüenciais. Os "campos" em um registro do arquivo foram descritos por uma seção "definição de dados" (às vezes chamada de "layout de registro" ou "copybook"). Portanto, se um registro do arquivo contiver:

1234567890ABCDEF9876

A única maneira de saber que "1234567890" era um número de telefone, "ABCDEF" era um ID e 9876 era de US $ 98,76 através da definição de dados. As estruturas o ajudam a fazer isso no VB.NET.

Estrutura Estrutura1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Estrutura final

Porque um Corda é um tipo de referência, é necessário manter o mesmo comprimento com o VBFixedString atributo para registros de comprimento fixo. Você pode encontrar uma explicação detalhada desse atributo e dos atributos em geral no artigo Atributos em VB .NET.

Embora as estruturas sejam objetos não padronizados, elas possuem muita capacidade no VB.NET. Você pode codificar métodos, propriedades e até eventos e manipuladores de eventos em estruturas, mas também pode usar código mais simplificado e, por serem tipos de valor, o processamento pode ser mais rápido. Por exemplo, você pode recodificar a estrutura acima desta maneira:

Estrutura Estrutura1
Dim myPhone As String
Dim myID As String
Dim myAmount As String
Sub mySub ()
MsgBox ("Este é o valor do myPhone:" & myPhone)
End Sub
Estrutura final

E use-o assim:

Dim myStruct As Structure1
myStruct.myPhone = "7894560123"
myStruct.mySub ()

Vale a pena brincar um pouco com estruturas e aprender o que elas podem fazer. Eles são um dos cantos estranhos do VB.NET que podem ser uma bala mágica quando você precisar.