El Concepto de Clase en los Lenguajes .NET

Hola ¿qué tal?…


En esta ocasión vamos a hablar del concepto de clase, esto es, hablar de lo que es una clase dentro de la programación orientada a objetos desde el punto de vista de los lenguajes .NET y el .NET Framework, es importante para los que empiezan y para los que están cambiando a algún lenguaje .NET, ya sea C# o VB.NET, desde lenguajes como Visual Fox Pro o de Visual Basic 6 y anteriores.


Empezaremos por identificar a la clase dentro de la familia de tipos de los lenguajes .NET, primeramente para ubicar la clase dentro de la familia enumeraremos los tipos (entiéndase por tipo lo que da origen a un tipo de dato en la programación orientada a objetos en .NET) que se encuentran en dichos lenguajes.

Tipos (c#, VB.NET)

Clase (class, Class)
Enumerador (enum, Enum)
Delegado (delegate, Delegate)
Estructura (struct, Structure)
Interfaz (interface, Interface)


Como verán tenemos cinco tipos en .NET que nos permiten definir tipos de datos para utilizarlos generalmente para definir variables nominales o anónimas dentro de nuestros programas. De estos cinco la clase es la más importante, dado que podemos ver a la clase como la parte viviente de .NET y al resto como simbiontes de la clase, curioso pero cierto, la clase es lo que da vida a nuestros programas a manera de célula, que en conjunto podríamos decir que crean un organismo que es lo que al final llamamos programa o aplicación.


La clase es el principal lugar donde se puede ejecutar código y donde se utilizan los otros tipos, ya que los otros tipos no pueden tener funcionalidad propia por no tener la capacidad para iniciar una aplicación, es por eso que la clase es fundamental para el uso de los demás tipos, un caso cercano a la clase es la estructura que también tiene capacidades para definir funcionalidad en forma de código ejecutable, dado que es similar a una clase, sin embargo, tiene muchas limitantes respecto a las capacidades de una clase, la estructura es utilizada para definir tipos de datos de valor, no acepta herencia y no puede ser heredada, y la clase es la que se utiliza para definir tipos de datos de referencia.


Una clase es la que tiene el poder de ejecución en los lenguajes de .NET, la mayoría del código que escribiremos en nuestros programas será escrito en una clase y la mayoría de la funcionalidad del .NET Framework será utilizada a partir de una clase. De ahí que el concepto de clase es un concepto fundamental para el desarrollo de aplicaciones con .NET.


Antes de continuar entendamos algo, que la clase es lo más importante sin que esto quiera decir que es la única pieza de programación, pues como decía, los otros tipos dependen de la clase para vivir, así como, la clase depende de ellos para extender sus capacidades, aunque al final todo se convierte en un programa, bien, no olviden que los otros tipos son también importantes para que nuestras clases alcancen su mayor potencial, pero nade se haría si no está una clase de por medio.


Entonces, empecemos con la base de lo que es una clase.


Clase, Objeto y Miembros de una Clase


Una clase es la parte de programación que nos ayuda a definir la funcionalidad que tendrá un objeto, una clase no es un objeto, que quede claro, un objeto se crea a partir de la instancia de una clase, importantísimo para que no confundan las clases con objetos. Bien, la clase define entonces la funcionalidad de un objeto, dentro de ella se escribirán las capacidades del objeto y entre estas capacidades estarán principalmente las propiedades, los métodos, los eventos. Estas capacidades están dadas por lo que llamaremos miembros de la clase, en sí, cada uno de estos es un miembro de la clase, donde también están los campos. Definimos un miembro de la clase a todo aquél método, propiedad o variable que esté declarado en seguida de la definición de la clase, a lo que se llama nivel de clase, que es toda declaración hecha dentro de las llaves del bloque de código de la clase. Las variables declaradas a nivel de clase son llamadas campos, que por lo general son de alcance privado (prívate).


La clase puede ser entendida como el plano de una casa, así como en los planos de las casas podemos identificar las dimensiones de los cuartos, la cantidad de ventanas, la forma de las fachadas, etc. En una clase podremos ver qué tareas puede realizar un objeto, qué propiedades va a tener un objeto y a qué eventos va a reaccionar un objeto, así es, todo es pensando en un objeto, mismo que será construido a través de una instancia, algo similar al hecho de que una casa se construye a partir de sus planos. Así entonces, empecemos a pensar en nuestra clase como la definición de funcionalidad de un objeto.


Ejemplos de la definición de una clase con sus miembros:

‘Ejemplo de clase en VB.NET
Public Class EjemploVB
    ‘Estos son campos (Miembros)
    Private mNombre As String
    Private mApellido As String

     ‘Estas son propiedades (Miembros)
    Public Property Nombre() As String
        Get
            Return mNombre
        End Get
        Set(ByVal value As String)
            mNombre = value
        End Set
    End Property
    Public Property Apellido() As String
        Get
            Return mApellido
        End Get
        Set(ByVal value As String)
            mApellido = value
        End Set
    End Property

   ‘Este es un método (Miembro)
    Public Function GetNombreCompleto() As String
        Return mNombre & ” “ & mApellido
    End Function
End Class

//Ejemplo de clase en C#
public class EjemploCSharp
{
    //Estos son campos (Miembros)
    private string nombre;
    private string apellido;

    //Estas son propiedades (Miembros)
    public string Nombre
    {
        get
        {
            return nombre;
        }
        set
        {
            nombre = value;
        }
    }
 
    public string Apellido
    {
        get
        {
            return apellido;
        }
        set
        {
            apellido = value;
        }
    }
 
    //Este es un método (Miembro)
    public string GetNombreCompleto()
    {
        return nombre + ” “ + apellido;
    }

}


Instancia


La instancia de una clase se realiza con la utilización de la instrucción new (New en VB.Net), esta instancia podrá realizarse de varias maneras dependiendo del lenguaje y de las necesidades del programa. Pero en todos los casos será para construir un objeto el cual estará en la mayoría de los casos alojado en una variable declarada con anterioridad y algunos otros podrá ser de manera anónima. Al referirme a la manera anónima quiero decir que se utiliza la clase sin necesidad de declarar una variable para acceder a la funcionalidad.


Ejemplos de instancias:


En VB.NET

Dim EjemploInstancia1 As EjemploVB
EjemploInstancia1 = New EjemploVB()
 
Dim EjemploInstancia2 As EjemploVB = New EjemploVB()
 
Dim EjemploInstancia3 As New EjemploVB()

‘Uso de la clase de manera anónima
Dim Nombre As String = New EjemploVB().GetNombreCompleto()


Ejemplo en C#

EjemploCSharp EjemploInstancia1;
EjemploInstancia1 = new EjemploCSharp();
 
EjemploCSharp EjemploInstancia2 = new EjemploCSharp();

 //Uso de la clase de manera anónima

string nombre = new EjemploCSharp().GetNombreCompleto();


Herencia


Bien, estás clases pueden ceder ciertas partes de su funcionalidad a otras clases, estas partes estarán limitadas por lo que conocemos como alcance, esto es, los miembros de la clase podrán ser privados, públicos o protegidos. Los miembros que podrá ceder la clase a otras clases serán únicamente los miembros públicos y protegidos, y los que podrán utilizarse al exterior de la clase beneficiada, serán los públicos. Está cesión de funcionalidad es conocida como herencia, donde una clase hereda su capacidad a otra tomando en consideración el alcance de sus miembros. La clase que hereda a otra es llamada clase base, y la clase que recibe la herencia es llamada clase derivada, así pues, podemos ver cómo una clase puede ser extendida en otra por medio de la herencia.


Ejemplo de herencia:


En VB.NET

‘Esta es una clase base
Public Class ClaseBase

    Public Sub MetodoA()
      ‘Tareas a realizar
    End Sub

    Protected Sub MetodoB()
      ‘Tareas a realizar
    End Sub
End Class

‘Esta clase se deriva de ClaseBase
Public Class ClaseDerivada
    Inherits ClaseBase

    Public Sub Metodo1()
      ‘Tareas a realizar
    End Sub
End Class


Uso de los miembros heredados:

Dim Var1 As ClaseDerivada
Var1 = New ClaseDerivada()
 
Var1.MetodoA()

Var1.Metodo1()


Aquí el método MetodoB no podrá ser utilizado por la variable Var1 dada la definición del alcance, sin embargo será perfectamente útil dentro de la clase derivada.


En C#.NET

//Esta es una clase base
public class ClaseBase
{
    public void MetodoA()
    {
        //Tareas a realizar
    }
    protected void MetodoB()
    {
        //Tareas a realizar
    }
}
 //Esta clase se deriva de ClaseBase
public class ClaseDerivada : ClaseBase
{
    public void Metodo1()
    {
        //Tareas a realizar
    }
}

Uso de los miembros heredados:

ClaseDerivada Var1;
Var1 = new ClaseDerivada();

Var1.MetodoA();

Var1.Metodo1();


Aquí el método MetodoB no podrá ser utilizado por la variable Var1 dada la definición del alcance, sin embargo será perfectamente útil dentro de la clase derivada.

Conclusión


Pues hemos visto los conceptos básicos del uso de una clase. Los formulario son clases dentro de nuestra aplicación, estos formularios son heredados de la clase System.Windows.Forms.Form en el caso de aplicaciones que utilizan WindowsForms, para el caso de WebForms, los formularios web se heredan de Sysetm.Web.UI.Page. Y bueno, teniendo en consideración esto, las clases de formulario pueden ser extendidas con miembros personalizados, esto es, que podemos agregarles nuevas propiedades, nuevos métodos y nuevos eventos, de hecho, cuando agregamos un control a un formulario, lo que estamos haciendo es extender la clase base de este, al decir que extendemos la clase base me refiero a que se agrega funcionalidad adicional a la que ya tenemos disponible por la herencia.


Hay mucho más detrás de las clases y el uso de los elementos de cada lenguaje, sin embargo, con esto quiero mostrar que al utilizar los lenguajes .NET estaremos utilizando clases, lo que implica cambiar la visión de los elementos de la aplicación al venir de lenguajes como Visual Basic 6. En publicaciones anteriores hablo con detalle de los constructores de una clase, de las propiedades y de los eventos, solo faltaba definir el concepto de clase.


La clase será en adelante nuestra amiga cada vez que desarrollemos una aplicación y si vienes de un lenguaje como Visual Basic 6 o anteriores, tendrás que hacer un esfuerzo por ubicar la clase como la pieza fundamental de tus aplicaciones sin que esto implique complejidad al codificar, solo implica un cambio de la visión del código.


Pues esto es todo y espero que les sea de utilidad.


Saludos…


Octavio Telis

17 thoughts on “El Concepto de Clase en los Lenguajes .NET”

  1. la verdad es q siemprees bueno explorar en internet porq hya cosas buenas ahi una de ellas es la explicacion de clases en visual net es muy bueno y practico sin rodeos

  2. A MI TAMBIEN ME SALVASTE… MEJOR Q LA UNIVERSIDAD, PERO FALTA “SOBRECARGA DE OPERADORES” SI PUEDES PON ESO… Y LOS FORMULARIOS EJECUTADOS TAMBIEN FALTAN PERO ESA MUY BIEN TE FELICITO

  3. Me ha servido de mucho, estaba algo liado en el tema de las clases, ahora solo queda aplicar lo aprendido.

    Muchas gacias

Leave a Reply

Your email address will not be published. Required fields are marked *


*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>