Módulos, estructuras y clases

click fraud protection

Solo hay tres formas de organizar un VB.NET solicitud.

  • Módulos
  • Estructuras
  • Clases

Pero la mayoría de los artículos técnicos asumen que ya sabes todo sobre ellos. Si eres uno de los muchos que aún tiene algunas preguntas, puedes leer más allá de los confusos fragmentos e intentar resolverlo de todos modos. Y si tienes un lote de tiempo, puede comenzar a buscar a través de De Microsoft documentación:

  • "Un módulo es un archivo ejecutable portátil, como type.dll o application.exe, que consta de una o más clases e interfaces".
  • "Una instrucción de clase define un nuevo tipo de datos".
  • "La instrucción Estructura define un tipo de valor compuesto que puede personalizar".

En ese mismo momento. ¿Alguna pregunta?

Para ser un poco más justos con Microsoft, tienen páginas y páginas (y más páginas) de información sobre todas estas que puede leer. Y tienen que ser lo más exactos posible porque establecen el estándar. En otras palabras, la documentación de Microsoft a veces se lee como un libro de leyes porque es Un libro de leyes.

instagram viewer

Pero si solo estás aprendiendo .NET, ¡puede ser muy confuso! Tienes que empezar por alguna parte. Comprender las tres formas fundamentales en que puede escribir código en VB.NET es un buen lugar para comenzar.

Puedes escribir VB.NET código usando cualquiera de estas tres formas. En otras palabras, puede crear un Aplicación de consola en VB.NET Express y escribe:

Módulo Módulo1
Sub principal()
MsgBox ("¡Esto es un módulo!")
End Sub
Módulo final
Clase Clase1
Sub principal()
MsgBox ("Esto es una clase")
End Sub
Clase final
Estructura Struct1
Dim myString As String
Sub principal()
MsgBox ("Esto es una estructura")
End Sub
Estructura final

Esto no hace ninguna sentido como un programa, por supuesto. El punto es que no obtienes un error de sintaxis, por lo que es "legal" Código VB.NET.

Estas tres formas son la única forma de codificar la raíz de abeja reina de todo .NET: el objeto. El único elemento que interrumpe la simetría de las tres formas es la declaración: Dim myString As String. Eso tiene que ver con que una Estructura sea un "tipo de datos compuesto" como Microsoft afirma en su definición.

Otra cosa a notar es que los tres bloques tienen un Sub principal() en ellos. Uno de los principios más fundamentales de la POO generalmente se llama encapsulamiento. Este es el efecto de "caja negra". En otras palabras, debería poder tratar cada objeto de forma independiente y eso incluye el uso de subrutinas con nombres idénticos si lo desea.

Clases

Las clases son el lugar "correcto" para comenzar porque, como Microsoft señala: "Una clase es un componente fundamental de la programación orientada a objetos (OOP)". De hecho, algunos autores tratan los módulos y estructuras como clases especiales de clases. Una clase está más orientada a objetos que un módulo porque es posible instanciar (haga una copia de) una clase pero no un módulo.

En otras palabras, puedes codificar ...

Formulario de clase pública1
Private Sub Form1_Load (_
Remitente ByVal como sistema. Objeto, _
ByVal e como sistema. EventArgs) _
Maneja MyBase. Carga
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
End Sub
Clase final

(Se enfatiza la instanciación de clase).

No importa si la clase en sí misma, en este caso, ...

Public Class Class1
Sub ClassSub ()
MsgBox ("Esta es una clase")
End Sub
Clase final

... está en un archivo por sí mismo o es parte del mismo archivo con el Formulario 1 código. El programa se ejecuta exactamente de la misma manera. (Darse cuenta de Formulario 1 es una clase también.)

También puede escribir código de clase que se comporte como un módulo, es decir, sin crear una instancia. Esto se llama un Compartido clase. El artículo "Estático" (es decir, "Compartido") versus Tipos dinámicos en VB.NET explica esto con mucho más detalle.

Otro hecho sobre las clases también debe tenerse en cuenta. Miembros (propiedades y métodos) de la clase solo existen mientras exista la instancia de la clase. El nombre para esto es alcance. Eso es el alcance de una instancia de una clase es limitada. El código anterior se puede cambiar para ilustrar este punto de esta manera:

Formulario de clase pública1
Private Sub Form1_Load (_
Remitente ByVal como sistema. Objeto, _
ByVal e como sistema. EventArgs) _
Maneja MyBase. Carga
Dim myNewClass As Class1 = New Class1
myNewClass. ClassSub ()
myNewClass = Nada
myNewClass. ClassSub ()
End Sub
Clase final

Cuando el segundo myNewClass. ClassSub () se ejecuta una declaración, un Excepcion de referencia nula se produce un error porque el ClassSub El miembro no existe.

Módulos

En VB 6, era común ver programas donde la mayor parte del código estaba en un módulo (A .BAS, archivo en lugar de, por ejemplo, en un Formar archivo como Form1.frm.) En VB.NET, tanto los módulos como las clases están en .VB archivos. La razón principal por la que se incluyen los módulos en VB.NET es para brindar a los programadores una forma de organizar sus sistemas colocando el código en diferentes lugares para ajustar el alcance y el acceso para su código. (Es decir, cuánto tiempo existen los miembros del módulo y qué otro código puede hacer referencia y usar los miembros). A veces, es posible que desee colocar el código en módulos separados solo para facilitar su trabajo.

Todos los módulos VB.NET son Compartido porque no se pueden crear instancias (ver arriba) y se pueden marcar Amigo o Público para que se pueda acceder a ellos dentro del mismo ensamblaje o siempre que se haga referencia a ellos.

Estructuras

Las estructuras son las menos entendidas de las tres formas de objetos. Si estuviéramos hablando de "animales" en lugar de "objetos", la estructura sería un Cerdo hormiguero.

La gran diferencia entre una estructura y una clase es que una estructura es un tipo de valor y una clase es un tipo de referencia.

Qué significa eso? Me alegra que lo hayas preguntado.

Un tipo de valor es un objeto que se almacena directamente en la memoria. Un Entero Es un buen ejemplo de un tipo de valor. Si declaraste un Entero en tu programa así ...

Dim myInt como Integer = 10

... y verificaste la ubicación de la memoria almacenada en myInt, encontrarás el valor 10. También ve esto descrito como "asignado en la pila".

La pila y el montón son simplemente diferentes formas de administrar el uso de la memoria de la computadora.

Un tipo de referencia es un objeto donde la ubicación del objeto se almacena en la memoria. Por lo tanto, encontrar un valor para un tipo de referencia es siempre una búsqueda de dos pasos. UN Cuerda Es un buen ejemplo de un tipo de referencia. Si declaraste un Cuerda Me gusta esto ...

Dim myString como String = "Esto es myString"

... y verificaste la ubicación de la memoria almacenada en myString, encontraría otra ubicación de memoria (llamada puntero - Esta forma de hacer las cosas es el corazón de los lenguajes de estilo C). Tendría que ir a esa ubicación para encontrar el valor "Esto es myString". Esto a menudo se llama "ser asignado en el montón". La pila y el montón

Algunos autores dicen que los tipos de valor ni siquiera son objetos y que solo los tipos de referencia pueden ser objetos. Es cierto que las características sofisticadas de los objetos, como la herencia y encapsulamiento solo son posibles con tipos de referencia. Pero comenzamos todo este artículo diciendo que había tres formas para los objetos, así que tengo que aceptar que las estructuras son algún tipo de objeto, incluso si son objetos no estándar.

Los orígenes de programación de las estructuras se remontan a lenguajes orientados a archivos como Cobol. En esos idiomas, los datos se procesaban normalmente como archivos planos secuenciales. Los "campos" en un registro del archivo fueron descritos por una sección de "definición de datos" (a veces llamada "diseño de registro" o "cuaderno"). Entonces, si un registro del archivo contiene:

1234567890ABCDEF9876

La única manera de saber que "1234567890" era un número de teléfono, "ABCDEF" era una identificación y 9876 era $ 98.76 a través de la definición de datos. Las estructuras lo ayudan a lograr esto en VB.NET.

Estructura Estructura1
Dim myPhone como cadena
Dim myID como cadena
Dim myAmount As String
Estructura final

Porque un Cuerda es un tipo de referencia, es necesario mantener la longitud igual con el VBFixedString atributo para registros de longitud fija. Puede encontrar una explicación ampliada de este atributo y los atributos en general en el artículo Atributos en VB .NET.

Aunque las estructuras son objetos no estándar, tienen mucha capacidad en VB.NET. Puede codificar métodos, propiedades e incluso eventos y controladores de eventos en estructuras, pero también puede usar código más simplificado y, dado que son tipos de valor, el procesamiento puede ser más rápido. Por ejemplo, podría recodificar la estructura anterior de esta manera:

Estructura Estructura1
Dim myPhone como cadena
Dim myID como cadena
Dim myAmount As String
Sub mySub ()
MsgBox ("Este es el valor de myPhone:" & myPhone)
End Sub
Estructura final

Y úsalo así:

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

Vale la pena jugar un poco con las estructuras y aprender qué pueden hacer. Son uno de los rincones extraños de VB.NET que pueden ser una bala mágica cuando lo necesitas.

instagram story viewer