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).
usingstaticSystem.Console;// para usar WriteLine y Beep directonamespaceutil{publicstaticclassPrinter{// 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.
publicstaticvoidDibujarLinea(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 $.
publicstaticvoidWriteTitle(string titulo){// formateo con barra al inicio y finalvar tituloFormateado =$"| {titulo} |";var tamaño = tituloFormateado.Length;// +4 por las barras y espaciosDibujarLinea(tamaño);WriteLine(tituloFormateado);DibujarLinea(tamaño);}
Uso sugerido:
Printer.DibujarLinea();// línea de 10 por defectoPrinter.DibujarLinea(20);// línea de 20Printer.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.
Nota: Gracias por hacerme investigar el Thread.Sleep()
El método Beep si en lugar de Beep se llamara Pitar o otro nombre diferente se puede poner Beep(hz, tiempo), en lugar de System.Console.Beep(hz,tiempo). Debido a que Beep es una palabra reservada.
Si claro compañero ese fue el error que lo obligo a usar el System.Console.Beep, ademas de que ya había definido el using static System.Console por lo cual solo era necesario usar Beep(hz, tiempo) para que funcionara.
Gracias amigo, por usar el nombre "Beep" la consola me lanzaba "Stack overflow".
Una clase estática nos permite tener la funcionabilidad de una clase sin tener que instanciar un objeto, esto nos permite aislar funcionamientos específicos y de la misma manera nos permite ser más claros en nuestras líenas de código por ejemplo la clase Printer y su método DibujarLínea.
Gracias !!
Funcionaria igual a un aporte anterior.
<code>publicstaticvoidDibujarLinea(int tam =10){WriteLine(newstring('=', tam));}
Me encanta esta manera de enseñar como se organiza de manera correcta un proyecto :D
El Beep para mac no funciona. Poner cualquier otra cosa para seguir avanzando. (Y)
OOoooO
Algunas caracteristicas de las Clases Estaticas:
Las clases NO estaticas pueden tener metodos estaticos
Las clases NO estaticas pueden tener propiedades estaticas, esto para asignacion de valores que son comunes entre todas las instancias de la clase.
Una clase estatica no se instacia, actua como objeto.
Para acceder a los metodos de una clase estatica se puede hacer haciendo el uso del nombre de la clase
Printer.PrintLine();//Nombre de la clase estatica Printer llamando al metodo, vemos que la instancia de Printer no se realiza por ser clase estatica.
Las clases estaticas SOLO pueden tener miembros staticos
Las clases estaticas no pueden heredar de otras clases.
Este profe es bien pro :V, alquien sabe que mas cursos da ?
Una duda, cuando tendría que public o private para las clases? Osea que diferencia hay, por que yo nunca le puse ninguna. Aparte si trato de poner private me dice error no se puede declarar como private implícitamente
Si es publica o privada solo afectará al namespace donde estés. Si es pública estará disponible en el mismo namespace y podras referenciarla para crear instancias.
Son modificadores de acceso y se utilizan para acceder a todas las propiedades desde otras clases en el caso de public o para restringir el uso con private y solo se pueda acceder dentro de la clase, esto implica poder modificar valores.
Este curso me ha gustado mucho!
Difiero un poco de la definición dada por el profesor para una clase estática. Las Clases abstractas tampoco permiten crear instancias. La diferencia radica en que una clase estática también es sealed, es decir que no se puede heredar y que todos sus métodos y atributos deben ser estáticos.
Les comparto mi timbre: An Instant Vision de Samuel Maykapar :)
No, el concepto de singleton es que solo puedas crear una instancia de esa clase, en este caso verificas si no existe una instancia y la creas, pero si ya existe entonces usas la instancia existente.
Q buenos trucos … los del beep no lo sabía !! Y muy práctico el tema de los Utilitarios !!