Está en la página 1de 11

¿Clase de Objetos?

Objetos y clases
Instructor
Diego Boada
ADSI
2026580
Declarar una variable de objeto como una clase específica proporciona varias ventajas:
Comprobación automática de tipos
Acceso garantizado a todos los miembros de la clase específica
Compatibilidad de Microsoft IntelliSense en el editor de código
Mejora de la legibilidad del código
Menos errores en el código
Errores detectados en tiempo de compilación en lugar de en tiempo de ejecución
Ejecución de código más rápida

William Alejandro Guiza Jhon fredy Briñez 1


Determine en qué clase desea crear un objeto.
Escriba una instrucción Dim para crear una variable a la que pueda asignar una instancia de
clase.
La variable debe ser del tipo de la clase deseada.
Dim nextCustomer As customer

Objetos y clases
Cada objeto de Visual Basic se define mediante una clase. Una clase describe las
variables, las propiedades, los procedimientos y los eventos de un objeto. Los objetos
son instancias de clases; puede crear tantos objetos como sean necesarios una vez que
haya definido una clase.

Para comprender la relación entre un objeto y su clase, piense en las galletas y en su


molde. El molde de la galleta es la clase. Define las características de cada galleta, por
ejemplo, tamaño y forma. La clase se usa para crear objetos. Los objetos son las
galletas.

Debe crear un objeto para poder acceder a sus miembros.

William Alejandro Guiza 2


Acceso a los miembros de variables de objeto
Cuando se activa Option Strict On, una variable de objeto solo puede tener acceso a los
métodos y propiedades de la clase con la que se declara. En el ejemplo siguiente se ilustra
esto.
' Option statements must precede all other source file lines.
Option Strict On
' Imports statement must precede all declarations in the source file.
Imports System.Windows.Forms En este ejemplo, p puede usar solo los
Public Sub accessMembers() miembros de la propia clase Object , que no
Dim p As Object incluyen la propiedad Left . Por otro lado, q se
Dim q As System.Windows.Forms.Label ha declarado con el tipo Label, así que puede
p = New System.Windows.Forms.Label usar todos los métodos y propiedades de la
q = New System.Windows.Forms.Label clase Label en el espacio de nombres
Dim j, k As Integer System.Windows.Forms .
' The following statement generates a compiler ERROR.
j = p.Left
' The following statement retrieves the left edge of the label in pixels.
k = q.Left
End Sub

En este ejemplo, p puede usar solo los miembros de la propia clase Object , que no incluyen la propiedad Left . Por otro lado, q se ha declarado con el tipo
Label, así que puede usar todos los métodos y propiedades de la clase Label en el espacio de nombres System.Windows.Forms .

William Alejandro Guiza 3


Agregue la palabra clave Nuevo operador para inicializar la variable en una
nueva instancia de la clase.
Dim nextCustomer As New customer

Enlace en tiempo de ejecución y enlace temprano


A veces, se desconoce la clase específica hasta que se ejecuta el código. En este caso, debe
declarar la variable de objeto con el tipo de datos Object. Esto crea una referencia general a
cualquier tipo de objeto y la clase específica se asigna en tiempo de ejecución. Esto se
denomina enlace en tiempo de ejecución. El enlace en tiempo de ejecución requiere tiempo
de ejecución adicional. También limita el código a los métodos y propiedades de la clase que
se le ha asignado más recientemente. Esto puede producir errores en tiempo de ejecución si
el código intenta obtener acceso a miembros de una clase diferente.
Cuando conozca la clase específica en tiempo de compilación, debe declarar la variable de
objeto para que sea de esa clase. Esto se denomina enlace anticipado. El enlace temprano
mejora el rendimiento y garantiza el acceso del código a todos los métodos y propiedades de
la clase específica. En las declaraciones de ejemplo anteriores, si la variable objA solo utiliza
objetos de la clase System.Windows.Forms.Label, debe especificar
As System.Windows.Forms.Label en su declaración.

William Alejandro Guiza 4


Flexibilidad de las variables de objeto
Cuando se trabaja con objetos en una jerarquía de herencia, se puede elegir qué clase
se debe usar para declarar las variables de objeto. Al elegir esta opción, debe equilibrar
la flexibilidad de la asignación de objetos con respecto al acceso a los miembros de una
clase. Por ejemplo, considere la jerarquía de herencia que conduce a la clase
System.Windows.Forms.Form:
Object
  MarshalByRefObject
    Component
      Control
        ScrollableControl
          ContainerControl
            Form
Supongamos que la aplicación define una clase de formulario denominada specialForm,
que hereda de la clase Form. Puede declarar una variable de objeto que haga referencia
específicamente a specialForm, como se muestra en el ejemplo siguiente.
Public Class specialForm
Public Class specialForm
Inherits System.Windows.Forms.Form
Inherits System.Windows.Forms.Form
' Insert
' Insert code code
defining defining
methods andmethods
properties and properties of specialForm.
of specialForm.
End Class End Class
Dim nextForm As New specialForm
Dim nextForm As New specialForm
William Alejandro Guiza 5
Vea también
Variables de objeto
Asignación de variables de objeto
Valores de las variables de objeto
Cómo: declarar una variable de objeto y asignarle un objeto en Visual Basic
Obtener acceso a los miembros de un objeto
New (operador)
Option Strict (instrucción)
Inferencia de tipo de variable local

William Alejandro Guiza 6


Tipos de estructura (Referencia de C#)

Un
Un tipo
tipo de
de estructura
estructura (o
(o tipo
tipo struct)
struct) es
es un
un tipo
tipo de
de valor
valor que
que puede
puede encapsular
encapsular
datos
datos y
y funcionalidad
funcionalidad relacionada.
relacionada. Para
Para definir
definir un
un tipo
tipo de
de estructura
estructura se
se usa
usa la
la
palabra
palabra clave
clave struct:
struct:
public
public struct
struct Coords
Coords
{{
public
public Coords(double
Coords(double x,
x, double
double y)
y)
{{
X
X == x;
x;
YY == y;
y;
}}

public
public double
double XX {{ get;
get; }}
public
public double
double YY {{ get;
get; }}

public
public override
override string
string ToString()
ToString() =>
=> $"({X},
$"({X}, {Y})";
{Y})"; 7
William
William Alejandro
Alejandro Guiza
Guiza
}}
using System;

public struct MutablePoint


{
public int X;
public int Y;

public MutablePoint(int x, int y) => (X, Y) = (x, y);

public override string ToString() => $"({X}, {Y})";


}

public class Program


{
public static void Main()
{
var p1 = new MutablePoint(1, 2);
var p2 = p1;
p2.Y = 200;
Console.WriteLine($"{nameof(p1)} after {nameof(p2)} is modified: {p1}");
Console.WriteLine($"{nameof(p2)}: {p2}");

MutateAndDisplay(p2);
Console.WriteLine($"{nameof(p2)} after passing to a method: {p2}");
}

private static void MutateAndDisplay(MutablePoint p)


{
p.X = 100;
Console.WriteLine($"Point mutated in a method: {p}");
}
}
// Expected output:
// p1 after p2 is modified: (1, 2)
// p2: (1, 200)
William Alejandro Guiza // Point mutated in a method: (100, 200) 8
// p2 after passing to a method: (1, 200)
William Alejandro Guiza 9
William Alejandro Guiza 10
William Alejandro Guiza 11

También podría gustarte