Una clase es una plantilla que describe las características y acciones de un tipo de dato que tú defines.
En C#, las clases son la base de la programación orientada a objetos (POO). Con ellas puedes modelar cosas del mundo real: un producto, un cliente, un empleado.
¿Qué es una clase?
Una clase agrupa datos y comportamientos relacionados en una sola unidad. Los datos se llaman propiedades. Los comportamientos se llaman métodos.
Piensa en una clase como el molde de una galleta. El molde no es la galleta; es la forma para crearla.
¿Qué es un objeto?
Un objeto es una instancia concreta de una clase. Si la clase es el molde, el objeto es la galleta ya hecha.
Puedes crear muchos objetos distintos a partir de la misma clase. Cada objeto tiene sus propios valores en sus propiedades.
Estructura de una clase en C#
La sintaxis básica de una clase sigue este patrón:
class NombreDeLaClase
{
// Propiedades
public tipo NombrePropiedad { get; set; }
// Métodos
public tipoRetorno NombreMetodo()
{
// lógica
}
}
La palabra clave class declara la clase. La palabra clave public indica que la propiedad o método es accesible desde fuera de la clase. { get; set; } es la forma corta de definir una propiedad que se puede leer y escribir.
Ejemplo 1 — Clase Producto para inventario
Imagina que trabajas en una empresa como Liverpool y necesitas manejar un inventario de productos.
class Producto
{
public string Nombre { get; set; }
public double Precio { get; set; }
public int Cantidad { get; set; }
}
Esta clase tiene tres propiedades: el nombre del producto, su precio y cuántas unidades hay en existencia.
Ahora crea un objeto a partir de esa clase:
Producto p1 = new Producto();
p1.Nombre = "Cafetera";
p1.Precio = 1200;
p1.Cantidad = 5;
Console.WriteLine(p1.Nombre); // Cafetera
Console.WriteLine(p1.Precio); // 1200
Console.WriteLine(p1.Cantidad); // 5
La palabra clave new crea el objeto en memoria. Después puedes asignar valores a sus propiedades usando el punto (.).
Ejemplo 2 — Agregar un método a la clase
Ahora agrega un método que calcule el valor total del producto en inventario (precio × cantidad).
class Producto
{
public string Nombre { get; set; }
public double Precio { get; set; }
public int Cantidad { get; set; }
public double CalcularValorTotal()
{
return Precio * Cantidad;
}
}
Usa el método desde el objeto:
Producto p1 = new Producto();
p1.Nombre = "Cafetera";
p1.Precio = 1200;
p1.Cantidad = 5;
double total = p1.CalcularValorTotal();
Console.WriteLine("Valor total en inventario: $" + total);
// Resultado: Valor total en inventario: $6,000
El método accede directamente a Precio y Cantidad del mismo objeto. No necesitas pasarlos como parámetros.
Ejemplo 3 — Múltiples objetos de la misma clase
Aquí está el poder real de las clases: crear varios objetos distintos con el mismo molde.
Supón que el sistema de inventario de Bimbo maneja tres productos:
Producto pan = new Producto();
pan.Nombre = "Pan Blanco";
pan.Precio = 35;
pan.Cantidad = 200;
Producto dona = new Producto();
dona.Nombre = "Donas";
dona.Precio = 28;
dona.Cantidad = 150;
Producto pastel = new Producto();
pastel.Nombre = "Pastel Choco";
pastel.Precio = 120;
pastel.Cantidad = 80;
Console.WriteLine(pan.Nombre + " — $" + pan.CalcularValorTotal());
Console.WriteLine(dona.Nombre + " — $" + dona.CalcularValorTotal());
Console.WriteLine(pastel.Nombre + " — $" + pastel.CalcularValorTotal());
Salida del programa:
Pan Blanco — $7,000
Donas — $4,200
Pastel Choco — $9,600
Cada objeto tiene sus propios datos, pero todos comparten la misma estructura y el mismo método.
Inicializar objetos con valores desde la declaración
C# permite asignar valores al crear el objeto usando llaves {}. Esto se llama inicializador de objeto.
Producto p2 = new Producto()
{
Nombre = "Refresco",
Precio = 18,
Cantidad = 300
};
Console.WriteLine(p2.Nombre + ": $" + p2.CalcularValorTotal());
// Refresco: $5,400
Esta forma es más limpia y fácil de leer cuando tienes varias propiedades.
Método para imprimir la información del producto
Es buena práctica agregar un método que muestre los datos del objeto. Esto evita repetir el código de Console.WriteLine en cada parte del programa.
class Producto
{
public string Nombre { get; set; }
public double Precio { get; set; }
public int Cantidad { get; set; }
public double CalcularValorTotal()
{
return Precio * Cantidad;
}
public void MostrarInfo()
{
Console.WriteLine("Producto: " + Nombre);
Console.WriteLine("Precio unitario: $" + Precio);
Console.WriteLine("Cantidad: " + Cantidad);
Console.WriteLine("Valor total: $" + CalcularValorTotal());
Console.WriteLine("---");
}
}
Ahora llama al método desde cualquier objeto:
Producto leche = new Producto()
{
Nombre = "Leche Lala",
Precio = 22,
Cantidad = 500
};
leche.MostrarInfo();
Salida:
Producto: Leche Lala
Precio unitario: $22
Cantidad: $500
Valor total: $11,000
---
Errores comunes
1. Olvidar la palabra new al crear el objeto.
// Incorrecto:
Producto p;
p.Nombre = "Zapato"; // Error: el objeto no existe en memoria
// Correcto:
Producto p = new Producto();
p.Nombre = "Zapato";
Sin new, el objeto no se crea en memoria y el programa falla al compilar.
2. Confundir la clase con el objeto.
La clase Producto es solo el molde. No tiene datos. El objeto p1, leche o dona sí tiene datos. Nunca escribas Producto.Nombre = "algo" directamente sobre la clase.
3. Acceder a propiedades sin inicializar.
Producto p = new Producto();
Console.WriteLine(p.Nombre.Length); // Error: Nombre es null por defecto
Siempre asigna valores a las propiedades antes de usarlas. Un string no inicializado en C# es null, y operar sobre null lanza una excepción.
4. Nombrar la clase en minúsculas o con verbo.
Las clases en C# usan PascalCase y nombres de sustantivos: Producto, Cliente, Empleado. Evita nombres como calcular, producto1 o miclase.
Tabla de referencia rápida
| Concepto | Descripción | Ejemplo |
|---|---|---|
class |
Declara la plantilla | class Producto { } |
| Propiedad | Dato que describe el objeto | public string Nombre { get; set; } |
| Método | Acción que realiza el objeto | public void MostrarInfo() |
new |
Crea un objeto en memoria | new Producto() |
. (punto) |
Accede a propiedad o método | p1.Nombre, p1.CalcularValorTotal() |
| Inicializador | Asigna valores al crear | new Producto() { Nombre = "X" } |
Lo que aprendiste en este curso
Llegaste al final de C# Básico: Aprende a Programar desde Cero. Aquí tienes un resumen de todo el camino que recorriste:
- Variables y tipos de datos — aprendiste a guardar información en memoria.
- Operadores y expresiones — realizaste cálculos y comparaciones.
- Condicionales — tu programa tomó decisiones con
ifyelse. - Ciclos — repetiste instrucciones con
forywhile. - Arreglos — guardaste múltiples valores en una sola estructura.
- Métodos — organizaste tu código en bloques reutilizables.
- Clases y objetos — modelaste datos del mundo real con POO.
Próximos pasos concretos
Para seguir avanzando como desarrollador en México, estos son los pasos más importantes:
- Practica con proyectos pequeños. Construye un programa de inventario con varios productos, o una calculadora de nómina para empleados con salarios entre $10,000 y $30,000 al mes.
- Aprende sobre listas y colecciones. La clase
List<T>de C# es más flexible que los arreglos y es fundamental en proyectos reales. - Explora herencia y polimorfismo. Son los conceptos siguientes de POO: te permiten crear clases especializadas a partir de una clase base, como
ProductoDigitala partir deProducto. - Instala Visual Studio Community (versión gratuita) para escribir código con herramientas profesionales y autocompletado.
- Busca convocatorias junior en México. Empresas como Mercado Libre, FEMSA y startups de CDMX contratan desarrolladores junior con conocimientos básicos de C# o Java.