A煤n no tienes acceso a esta clase

Crea una cuenta y contin煤a viendo este curso

Clases est谩ticas

26/32
Recursos

Una clase est谩tica no permite crear nuevas instancias, la clase por si misma funciona como un objeto.

Aportes 60

Preguntas 9

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesi贸n.

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.

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.

Me encanta esta manera de ense帽ar como se organiza de manera correcta un proyecto 馃槃

El Beep para mac no funciona. Poner cualquier otra cosa para seguir avanzando. (Y)

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.

Les comparto un manera m谩s elegante de hacer lo mismo que el m茅todo DibujarL铆nea:

public static void DibujarL铆nea(int tam = 50)
        {
            WriteLine( new string( '=', tam ) );
        }

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.

Este seria el concepto de singleton??

Este curso me ha gustado mucho!

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

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

Funcionaria igual a un aporte anterior.

<code>        
 public static void DibujarLinea(int tam = 10) {
	 WriteLine(new string('=', tam));
}

El Beep no funciona en linux

Muy buena clase!

Genial 馃槑

Muy buena clase鈥 Saber como organizar un proyecto es importante

La funci贸n Beep es soportada en cualquier SO?
estoy tomando el curso desde mi Ubuntu Desktop sin embargo me da el siguiente error

Unhandled Exception: System.PlatformNotSupportedException: Operation is not supported on this platform.
   at System.ConsolePal.Beep(Int32 frequency, Int32 duration)
   at System.Console.Beep(Int32 frequency, Int32 duration)

驴Es necesario usar otra funci贸n en Linux?
Mi funci贸n es la siguiente


        public static void Beep_(int hertz = 2000, int time= 500, int cantidad = 1){
            while(cantidad-- > 0)
            {
                System.Console.Beep(hertz,time);
            }
        }

La raz贸n por la cual no se puede escribir

Console.Beep()

Es porque desde el inicio de la clase definimos que usarios

using static System.Console

Por lo que se podr铆a escribir solamente

public static void Timbrar(int hz = 2000, int duracion = 500, int repetir = 1) { while (repetir-- > 0) { Beep(hz, duracion); } }

Muy buena la clase

Falto un m茅todo para cambiar el color de fondo y el color de la letra,adem谩s alinear el texto

En este caso las clases estaticas es cuando no es necesario crear obketos ya que estas clases se cargan en memoria como son sus metodos
Ejemplo de codigo

<       public static void restar()
            
            { }
>

Duda con Mac no aparece el sonido hay que instalarle algo o utilizar un using en particular?

Saludos,

Excelente!

No permite crear nuevas instancias

Buenas clases

Gente, no escuche el ultimo beep, espero que sea el audio de mi laptop 鈥

Excelente curso 馃槃

Hola 鈥 Alguien sabe como reemplazar todo el c贸digo que esta igual escrito鈥 ej鈥 cuando tenemos una variable que se llama escuela en min煤scula vos la pintas y visual studio code te resalta en todos los lugares donde se encuentra 鈥
Al escribir por ejemplo la E mayuscual reemplazar en todos esos puntos

No esta mal

Super 煤til ese .PadLeft :3

jajajajjajajaj, yo para hacer el dibujar linea lo habia hecho con un for jajajajjajajajajajaj y luego el me lo resume a dos lineas !!!

Vamos, a seguir trabajando seriamente.

public static void Titulo(string titulo)
{
titulo = $"| - {titulo} - |";
DibujarLinea(titulo.Length);
WriteLine(titulo);
DibujarLinea(titulo.Length);
}

Console.Beep

No funcionaba por que arriba declaro:

using static System.Console;

por lo tanto no tenia que poner System al principio solo hab铆a que quitar el Console, asi:

Beep(hz, tiempo);
///este metodo imprime la escuela usando s.Length para el tama帽o de las lineas
        public static void PrintSchool(SchoolPrototype school)
        {
            var s = school.ToString();
            var sLength= s.Length +4;
            PrintLine(sLength);
            WriteLine($"| {school} |");
            PrintLine(sLength);
        }

Buena tarde, me qued茅 con la duda. Ser谩 que el beep no funcion贸 porque incluy贸 console para no tener que escribir console.writeline?

la clase printer se ve que es muy util sobre todo porque encapsula codigo repetitivo.

Una clase est谩tica no permite crear nuevas instancias, la clase por si misma funciona como un objeto.

Vamos por mas!

Clases Estaticas

Una clase est谩tica es b谩sicamente lo mismo que una clase no est谩tica, pero hay una diferencia: una clase est谩tica no puede ser instanciada. En otras palabras, no puede usar el operador new para crear una variable del tipo de clase. Como no hay una variable de instancia, puede acceder a los miembros de una clase est谩tica utilizando el nombre de la clase en s铆.

Me encanto la clase

No encuentro una alternativa al Beep en linux (銉幝扮泭掳)銉

Apenas vi que iba a usar beep le baje el volumen a la compu

PadLeft

Buen truco鈥 ese nunca lo hab铆a escuchado 鈥

Clase entendida, excelente

Excelente profe, que buenas explicaciones.

Algunas formas de hacerlo

public static void Dibujarlinea(int cant = 10)
        {
            var linea = "".PadLeft(cant, '=');
            System.Console.WriteLine("PadLeft" + linea);

            var linea1 = "".PadRight(cant, '=');
            System.Console.WriteLine("PadLeft" + linea1);

            string v = new string('*', cant);
            System.Console.WriteLine("string" + v);

            string B = string.Concat(Enumerable.Repeat("-", cant));
            System.Console.WriteLine("Concat(Enumerable)" + B);
        }

tambi茅n puede ser

public static void DibujarLinea(int tama帽o = 100)
{
	WriteLine(string.Empty.PadLeft(tama帽o,'='));
}
Console.Beep no funciona en el m茅todo Beep porque ambos se llaman igual, simplemente hay que cambiar el nombre al m茅todo

WriteLine(new String(鈥=鈥, tama帽o));
el objeto de string en si ya lo tiene hecho y te evitas hacer eso

Esta clase nos permitir谩 crear clases est谩ticas, estas clases no permiten ser instanciadas act煤an com oobjetos

Crearemos una carpeta llamada Util, y tambi茅n ah铆 en esa carpeta un archivo que se llamar谩 Printer.cs. Aqu铆 se crear谩 la clase est谩tica.

La principal funcionalidad que haremos es imprimir las l铆neas para los t铆tulos

Se crear谩 un m茅todo para esto, yo en este caso lo llamar茅 DrawLine recibir谩 como par谩metro la cantidad de veces que se repetir谩 la l铆nea.

var line="".PadLeft(size,'=');

Esta l铆nea hace que en line una cadena vac铆a la llene hacia la izquierda con =

Para llamarla en el programa principal

Printer.DrawLine(20)

Un timbre de escuela.

public static void Timbrar()
        {           
            // Las Campanas de westminster
            Beep(395*2,500);
            Beep(352*2,500);
            Beep(313*2,500);
            Beep(234*2,1000);
            Beep(234*2,500);
            Beep(352*2,500);
            Beep(395*2,500);
            Beep(313*2,1000);
        }```

Comparto mi clase Printer 馃槈

using System;
using System.Collections.Generic;
using System.Text;
using static System.Console;

namespace CoreSchool.Utils
{
    // Clase est谩tica: no permite crear nuevas instancias, por s铆 misma se comporta como objeto
    public static class Printer
    {
        public static void drawDivider(int size = 70, char character = '*')
        {
            WriteLine(new string(character, size));
        }

        public static void drawTitle(string title, int size = 70, char character = '*')
        {
            drawDivider(size, character);
            WriteLine(title);
            drawDivider(size, character);
        }
    }
}

Hasta ahora entend铆 bien las clases static y tengo algunos a帽os de saber Java 馃き que verguenza!

鈥淢煤sica para mis o铆dos鈥 xD
Por eso me cae bien este profe

NO es una buena pr谩ctica, definir nombres de variables con abreviaciones o que no se entienda bien qu茅 es lo que hace. Tengan en cuenta que si abren su c贸digo un par de a帽o despu茅s, debe ser entendible f谩cilmente para que sea mantenible r谩pidamente.

Para el ejemplo de DibujarLinea, es mejor pasar como argumento (int tama帽oLinea = 10).

/*Aqu铆 les dejo mi timbre, espero que a m谩s de uno le traiga viejos y gratos recuerdos... */

Console.Beep(659, 125); Console.Beep(659, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(167); Console.Beep(523, 125); 
Console.Beep(659, 125); Thread.Sleep(125); 
Console.Beep(784, 125); Thread.Sleep(375); 
Console.Beep(392, 125); Thread.Sleep(375); 
Console.Beep(523, 125); Thread.Sleep(250); 
Console.Beep(392, 125); Thread.Sleep(250); 
Console.Beep(330, 125); Thread.Sleep(250); 
Console.Beep(440, 125); Thread.Sleep(125); 
Console.Beep(494, 125); Thread.Sleep(125); 
Console.Beep(466, 125); Thread.Sleep(42); 
Console.Beep(440, 125); Thread.Sleep(125); 
Console.Beep(392, 125); Thread.Sleep(125); 
Console.Beep(659, 125); Thread.Sleep(125); 
Console.Beep(784, 125); Thread.Sleep(125); 
Console.Beep(880, 125); Thread.Sleep(125); 
Console.Beep(698, 125); Console.Beep(784, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(125); Console.Beep(523, 125); 
Thread.Sleep(125); Console.Beep(587, 125); 
Console.Beep(494, 125); Thread.Sleep(125); 
Console.Beep(523, 125); Thread.Sleep(250); 
Console.Beep(392, 125); Thread.Sleep(250); 
Console.Beep(330, 125); Thread.Sleep(250); 
Console.Beep(440, 125); Thread.Sleep(125); 
Console.Beep(494, 125); Thread.Sleep(125); 
Console.Beep(466, 125); Thread.Sleep(42); 
Console.Beep(440, 125); Thread.Sleep(125); 
Console.Beep(392, 125); Thread.Sleep(125); 
Console.Beep(659, 125); Thread.Sleep(125); 
Console.Beep(784, 125); Thread.Sleep(125); 
Console.Beep(880, 125); Thread.Sleep(125); 
Console.Beep(698, 125); Console.Beep(784, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(125); Console.Beep(523, 125); 
Thread.Sleep(125); Console.Beep(587, 125); 
Console.Beep(494, 125); Thread.Sleep(375); 
Console.Beep(784, 125); Console.Beep(740, 125); 
Console.Beep(698, 125); Thread.Sleep(42); 
Console.Beep(622, 125); Thread.Sleep(125); 
Console.Beep(659, 125); Thread.Sleep(167); 
Console.Beep(415, 125); Console.Beep(440, 125); 
Console.Beep(523, 125); Thread.Sleep(125); 
Console.Beep(440, 125); Console.Beep(523, 125); 
Console.Beep(587, 125); Thread.Sleep(250); 
Console.Beep(784, 125); Console.Beep(740, 125); 
Console.Beep(698, 125); Thread.Sleep(42); 
Console.Beep(622, 125); Thread.Sleep(125); 
Console.Beep(659, 125); Thread.Sleep(167); 
Console.Beep(698, 125); Thread.Sleep(125); 
Console.Beep(698, 125); Console.Beep(698, 125); 
Thread.Sleep(625); Console.Beep(784, 125); 
Console.Beep(740, 125); Console.Beep(698, 125); 
Thread.Sleep(42); Console.Beep(622, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(167); Console.Beep(415, 125); 
Console.Beep(440, 125); Console.Beep(523, 125); 
Thread.Sleep(125); Console.Beep(440, 125); 
Console.Beep(523, 125); Console.Beep(587, 125); 
Thread.Sleep(250); Console.Beep(622, 125); 
Thread.Sleep(250); Console.Beep(587, 125); 
Thread.Sleep(250); Console.Beep(523, 125); 
Thread.Sleep(1125); Console.Beep(784, 125); 
Console.Beep(740, 125); Console.Beep(698, 125); 
Thread.Sleep(42); Console.Beep(622, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(167); Console.Beep(415, 125); 
Console.Beep(440, 125); Console.Beep(523, 125); 
Thread.Sleep(125); Console.Beep(440, 125); 
Console.Beep(523, 125); Console.Beep(587, 125); 
Thread.Sleep(250); Console.Beep(784, 125); 
Console.Beep(740, 125); Console.Beep(698, 125); 
Thread.Sleep(42); Console.Beep(622, 125); 
Thread.Sleep(125); Console.Beep(659, 125); 
Thread.Sleep(167); Console.Beep(698, 125); 
Thread.Sleep(125); Console.Beep(698, 125); 
Console.Beep(698, 125); Thread.Sleep(625); 
Console.Beep(784, 125); Console.Beep(740, 125); 
Console.Beep(698, 125); Thread.Sleep(42); 
Console.Beep(622, 125); Thread.Sleep(125); 
Console.Beep(659, 125); Thread.Sleep(167); 
Console.Beep(415, 125); Console.Beep(440, 125); 
Console.Beep(523, 125); Thread.Sleep(125); 
Console.Beep(440, 125); Console.Beep(523, 125); 
Console.Beep(587, 125); Thread.Sleep(250); 
Console.Beep(622, 125); Thread.Sleep(250); 
Console.Beep(587, 125); Thread.Sleep(250); 
Console.Beep(523, 125);