CodeGym /Cursos /C# SELF /Concepto de clase y objeto

Concepto de clase y objeto

C# SELF
Nivel 16 , Lección 0
Disponible

1. Introducción

Como ya habrás escuchado, clase es un molde, y objeto es su instancia.
¡Pero ya es hora de entender las clases y los objetos más a fondo!

Imagina que eres ingeniero de diseño en una fábrica de coches. En vez de montar cada coche a mano, creas un plano: una instrucción universal con la que se pueden montar muchos coches del mismo tipo. En ese plano se indica que el coche debe tener un motor, ruedas, carrocería, color y qué funciones realiza.

Ese plano, en el mundo de la programación, se llama clase.

Ahora imagina que, usando ese plano, la fábrica ha producido una tanda de coches. Cada uno de ellos es real, circula por la carretera, tiene su propio número, color e incluso algunos ajustes individuales. Pero todos están montados según el mismo plano.

Estos coches reales, en el mundo de la programación, se llaman objetos (o instancias de clase).

Así que, recordemos:

  • Clase — es como un plano, un molde, un esquema. Describe qué datos puede tener algo (por ejemplo, marca, color, número de puertas) y qué puede hacer ese algo (por ejemplo, conducir, frenar, pitar). La clase es solo una descripción, por sí sola no ocupa mucho espacio en memoria y no es algo "vivo".
  • Objeto — es un "coche" concreto, montado según el plano de la clase. Es una entidad real, "viva" en tu programa, que ocupa espacio en memoria, tiene sus propios valores únicos para los datos (su número, color) y puede realizar las acciones descritas en la clase.

¿Suena un poco abstracto? No te preocupes, ahora lo vamos a ver todo claro.

2. ¿Qué es una clase?

Clase — es un tipo de dato definido por el usuario que describe cómo deben ser los objetos de ese tipo: qué características (estado/propiedades/campos) tienen y qué acciones se pueden realizar con ellos (comportamiento/métodos/funciones).

La clase define:

  • Campos (variables) — datos que se almacenan en el objeto.
  • Métodos (funciones) — acciones que puede realizar el objeto.
  • Propiedades — métodos especiales para acceder a los datos.
  • Eventos — mecanismos para notificaciones (de eso hablaremos más adelante).
  • Constructores — métodos especiales para crear objetos.

public class Person
{
    // Campos (datos)
    public string Name;
    public int Age;

    // Método (acción)
    public void SayHello()
    {
        Console.WriteLine($"¡Hola! Me llamo {Name}, tengo {Age} años.");
    }
}

En este ejemplo hemos declarado la clase Person. Tiene dos campos (Name y Age) y el método SayHello(). Eso es todo lo que necesitas para una clase sencilla.

3. ¿Qué es un objeto?

Objeto — es una instancia de una clase, es decir, una entidad concreta creada en memoria a partir del "plano" (clase).

Cuando creas una variable de tipo Person, obtienes un objeto — con valores únicos para cada campo. No solo una persona, sino, por ejemplo, una persona llamada Johnny que tiene 12 años. Y cuando te saluda (es decir, se llama el método SayHello()), te "cuenta" información sobre sí mismo.


// Creamos un objeto de la clase Person
Person person1 = new Person();
person1.Name = "Alisa";
person1.Age = 28;
person1.SayHello(); // => ¡Hola! Me llamo Alisa, tengo 28 años.

// Creamos otra "persona"
Person person2 = new Person();
person2.Name = "Bob";
person2.Age = 32;
person2.SayHello(); // => ¡Hola! Me llamo Bob, tengo 32 años.

Cada objeto no es solo una copia: es una entidad independiente con sus propios datos (en nuestro ejemplo — nombres y edad).

4. La diferencia principal entre clase y objeto

Diferencia principal:

  • Clase — "plano", instrucción, tipo de dato.
  • Objeto — representante concreto de ese tipo; una "casa" real construida según el plano; "coche" fabricado según el plano.

Puedes crear tantos objetos de una clase como quieras. Por ejemplo, si tienes la clase Person, puedes crear un millón de "personas" en el programa.

¿Por qué esto es cómodo e importante?

Imagina un programa sin clases. Si tuvieras una lista de estudiantes, tendrías que guardar el nombre, la edad, las notas y otros datos en arrays separados para cada parámetro:

string[] studentNames = { "Sergey", "Grisha", "Masha" };
int[] studentAges = { 20, 19, 21 };

// Si necesitas añadir otra propiedad, aparecerá otro array.
// ¡Intentar intercambiar un par de estudiantes se convierte en una pesadilla!

Usando clases, los datos no se dispersan en diferentes arrays, sino que se agrupan de forma lógica:

public class Student
{
    public string Name;
    public int Age;
}

Student[] students = new Student[3];
students[0] = new Student { Name = "Sergey", Age = 20 };
students[1] = new Student { Name = "Grisha", Age = 19 };
students[2] = new Student { Name = "Masha", Age = 21 };

¡Mucho más claro y cómodo! Además, ahora puedes añadir métodos a cada estudiante (por ejemplo, "saludar" o "calcular la nota media").

Imagen: relación entre clase y objeto

+------------------+          +----------------+
|   class Person   |=========>|  person1:      | 
| (plano/tipo)     |          |  Name = "Alisa"|
|                  |         /|  Age = 28      |
+------------------+        / +----------------+
                          /
+------------------------/----------------------+
                        /
                  +----------------+
                  |  person2:      |
                  |  Name = "Bob"  |
                  |  Age = 32      |
                  +----------------+

5. ¿Dónde se usan clases y objetos en la vida real?

Las clases y los objetos son la base de cualquier aplicación en C#. Todo lo que ves en .NET: ventanas, botones, formularios, arrays, colecciones, conexiones a bases de datos, logs — son objetos creados a partir de ciertas clases.

Ejemplos:

  • La clase Button — es la instrucción de cómo debe verse un botón en pantalla. Cada vez que creas un botón nuevo — es un objeto de la clase.
  • La clase Stream (del sistema de entrada/salida): obtienes un objeto que trabaja con archivos.
  • Tu futura clase User para guardar información sobre usuarios — otra vez el mismo molde.

Breve sobre nombres, modificadores y convenciones

  • Para las clases se suele usar nombres con mayúscula, por ejemplo Person, Order, Product.
  • Para variables — con minúscula, por ejemplo person, user1, orderList.
  • Normalmente la clase se hace public — para que esté disponible en todo el proyecto.
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION