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.