Clases estáticas en C#: Uso y beneficios prácticos

Clase 26 de 32Fundamentos de C# con NET Core 2.1

Resumen

Optimiza tu código en C# creando una clase estática de utilidades que centraliza tareas repetitivas: dibujar líneas, formatear títulos y generar beeps en consola. Este enfoque refleja el principio de la POO de ahorrar trabajo al evitar duplicación y concentrar lógica común en un solo lugar.

¿Qué es una clase estática y cómo se organiza en el proyecto?

Una clase estática no permite instancias y se usa directamente como si fuera un objeto único. Igual que Console, nunca se instancia, pero se llama con sus métodos disponibles. La idea: crear una carpeta "útil" (utilitario) y dentro el archivo Printer.cs bajo un namespace coherente.

¿Por qué usar una clase estática en C#?

  • Porque se usa sin crear objetos.
  • Porque concentra utilidades transversales.
  • Porque imita el patrón de Console, familiar y directo.

¿Cómo declarar la clase y el namespace?

  • Carpeta: útil.
  • Archivo: Printer.cs.
  • Namespace: util (o similar, consistente con tu solución).
using static System.Console; // para usar WriteLine y Beep directo namespace util { public static class Printer { // métodos aquí } }

¿Cómo dibujar líneas y formatear títulos con Console?

Partimos de una acción frecuente: imprimir separadores y títulos con líneas. Se usan parámetros opcionales y métodos de cadenas como PadLeft junto con la propiedad Length para ajustar tamaños.

¿Cómo dibujar una línea con tamaño variable?

  • Se usa un parámetro opcional: tamaño con valor por defecto 10.
  • Se rellena una cadena vacía con PadLeft(tamaño, '=').
  • Opción: acortar llamadas con using static System.Console para invocar WriteLine sin prefijo.
public static void DibujarLinea(int tamaño = 10) { var linea = string.Empty.PadLeft(tamaño, '='); WriteLine(linea); }

Puntos clave:

  • Diferencia entre string y char: PadLeft recibe el carácter de relleno como char, no como string.
  • El orden correcto en PadLeft: primero el tamaño total, luego el carácter.

¿Cómo escribir un título con líneas arriba y abajo?

  • Primero se imprime el texto del título.
  • Luego se dibujan dos líneas del mismo largo del título.
  • Toque de formato: envolver el título con barra y espacios usando literales de cadena y el prefijo $.
public static void WriteTitle(string titulo) { // formateo con barra al inicio y final var tituloFormateado = $"| {titulo} |"; var tamaño = tituloFormateado.Length; // +4 por las barras y espacios DibujarLinea(tamaño); WriteLine(tituloFormateado); DibujarLinea(tamaño); }

Uso sugerido:

Printer.DibujarLinea(); // línea de 10 por defecto Printer.DibujarLinea(20); // línea de 20 Printer.WriteTitle("Cursos escuela");

¿Cómo generar pitidos configurables con frecuencia, duración y cantidad?

Se generaliza el beep de consola con parámetros y un bucle while controlando el número de repeticiones mediante operador de decremento.

¿Qué parámetros necesita un beep útil?

  • Frecuencia en hertz.
  • Duración en milisegundos.
  • Cantidad de repeticiones.
public static void Beep(int hertz = 2000, int tiempo = 500, int cantidad = 1) { while (cantidad > 0) { System.Console.Beep(hertz, tiempo); cantidad--; // decremento } }

¿Cómo probar diferentes combinaciones?

  • Llamada simple con valores por defecto.
  • Frecuencia alta, tiempo medio, varias repeticiones.
Printer.Beep(); // 2000 Hz, 500 ms, 1 vez Printer.Beep(10000, 500, 10); // 10 kHz, 500 ms, 10 veces

Ideas clave que aprendiste:

  • Clase estática y su uso directo como Console.
  • Parámetros opcionales para valores por defecto.
  • Diferencia entre string y char en métodos como PadLeft.
  • Propiedad Length para calcular tamaños dinámicos.
  • Bucle while y operador de decremento para controlar repeticiones.
  • using static System.Console para simplificar llamadas a WriteLine y Beep.

¿Te gustaría proponer otras utilidades para Printer o mejorar el formateo de títulos? Comparte tus ideas y ejemplos en los comentarios.

      Clases estáticas en C#: Uso y beneficios prácticos