No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Creando otros objetos para nuestra escuela

14/32
Recursos

Nuestra escuela va a tener cursos y estos cursos van a tener una jornada, en esta clase vamos a crear las entidades de Curso y TiposJornada.

Cada curso va a tener un UniqueId que se va a generar automáticamente dentro del método constructor.

Aportes 75

Preguntas 20

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Un aporte que quiero hacer es para hacer la separación de código.

Esto es lo que se muestra en el vídeo:

System.Console.WriteLine("===============")

Y este es mi aporte para simplificar el codigo:

Console.WriteLine(new string("=", 50));

Lo que hace es que crea una nueva cadena y la multiplica por el numero que en este caso es 50.

Atajos en C#

  • prop : permite crear rápidamente una propiedad en una clase.
  • ctor: permite crear rápidamente un constructor
  • cw: crea el código para imprimir valores en consola System.Console.WriteLine();

Console.WriteLine(curso1.Nombre+","+curso1.UniqueId);
Console.WriteLine($"{curso2.Nombre}+{curso1.UniqueId}");
El error del UniqueId del curso 2 es porque se dejó concatenada en la segunda linea el Id del curso1.

Se puede usar el atajo
alt + ↑
alt + ↓
para mover la línea seleccionada

Sale el mismo Numero de ID del curso porque al Imprimir en Pantalla para Curso2, puso a Imprimir el ID del Curso 1 😃

Les dejo una función que implementé en la clase Curso para no tener que repetir el código de imprimir curso:

Curso.cs
 public void imprimirCurso()
        {
            Console.WriteLine($"Nombre: {Nombre} \t ID: {id} Jornada: {jornada}");
        }

De ahi en mi programa solo escribo las siguientes lineas:

Program.cs
	curso1.imprimirCurso();
        curso2.imprimirCurso();
       curso3.imprimirCurso();

El resultado:

$ dotnet run
Nombre: "PLATZI SCHOOL", Tipo Primaria
Pais Colombia, Ciudad
***********
Nombre: 101      ID: 58392050-1620-44dc-8238-0367c6d53790 Jornada: Matutino
Nombre: 201      ID: 62be8925-a076-4858-9d95-dbb52c2cd5f2 Jornada: Matutino
Nombre: 301      ID: 1be2995b-2b38-46f8-9fbd-1610003287eb Jornada: Matutino```

Shift + Alt + (flecha abajo) para duplicar la misma linea.

Otra forma de generar un id aleatorio es con Randow :

public Curso()
        {
            Random id = new Random();
            UniqueId = id.Next(1,100).ToString();//Guid.NewGuid().ToString();
        }

La extensión de jchannon ya no tiene soporte, pero se puede utilizar la de JosKreativ (https://marketplace.visualstudio.com/items?itemName=kreativ-software.csharpextensions)

Se esta generando de forma correcta, pero se equivoco en lugar de mostrar la variable curso 2 esta llamando la variable curso1.UniqueID

La razón por la que los id aparecen duplicados, es porque a la hora de imprimirlos, no accede a los id de los respectivos cursos.

<code>
``` System.Console.Write($"Curso : {curso1.Nombre},\n ID: {curso1.UniqueId},\nJornada: {curso1.Jornada}");
           System.Console.Write($"Curso : {curso2.Nombre},\n ID: {curso2.UniqueId},\nJornada: {curso2.Jornada}"); 
           System.Console.Write($"Curso : {curso3.Nombre},\n ID: {curso3.UniqueId},\nJornada: {curso3.Jornada}"); 
)

Observación:

  • Como buena práctica, usar solo un idioma, español o ingles al momento de escribir variables y métodos, no combinarlos.

Si los agregamos a alguna colección llamada Cursos (arreglo, lista, …) podemos iterar cada curso con la sentencia foreach

foreach(Curso c in Cursos) Console.WriteLine($"{c.Nombre} {c.UniqueId}");

Igual, cuando el bloque de código es de una sola línea, puede no llevar llaves

El error estaba aquí:

Console.WriteLine(curso1.Nombre +", "+curso1.UniqueId);
            Console.WriteLine($"{curso2.Nombre}, {curso2.UniqueId}");

Le falto al profe cambiar los parametros de curso1 a curso2 al momento de imprimir por eso le sale el id igual

Le salio el mismo ID porque al querer imprimir el segundo curso le puso el mimo nombre del primero curso1.
Debio poner curso2.

Puede que la extensión del desarrollador mencionado en el video ya no esté disponible, pero hay otras con el mismo nombre y la misma funcionalidad. En la descripción podemos fácilmente darnos cuenta si es lo que necesitamos aunque el desarrollador sea otro. Ánimo y suerte con eso.

Dice “arracamos donde estábamos en la clase anterior”, pero este capitulo empieza con el proyecto Etapa2 ya creado… cuando paso eso?

Diciembre del 2020, sigue siendo funcional lo visto en este video, excelente maestro Juan Carlos.

Asi Funciona

        public Curso() => (UniqueId) = (Guid.NewGuid().ToString());

A nadie le paso que tenían que colocar los using?, en cada uno de los archivos como:
en curso .cs ------> using CoreEscuela.Entidades;
en Program.cs ------> Etapa1.Entidades;

using System.Xml;
using System;
using CorEscuela.Entidades;

namespace Etapa1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Creacion de un Constructor
        
            var escuela = new Escuela("Platzi Academy", 2012);
            escuela.NombreEscuela="Platzi Academy"; 
            escuela.Pais="Colombia";
            escuela.Ciudad="Bogota";  
            escuela.TipoEscuela = TiposEscuela.Primaria;         
            
            var curso1=new Cursos(){
                
                Nombre="101"                
            };

             var curso2=new Cursos(){
                
                Nombre="201"                
            };

             var curso3=new Cursos(){
                
                Nombre="301"                
            };

            Console.WriteLine(escuela);

            System.Console.WriteLine("***************************************");
            System.Console.WriteLine(curso1.Nombre +", "+ curso1.UniqueId );
            System.Console.WriteLine($"{curso2.Nombre}, {curso2.UniqueId}");
            System.Console.WriteLine($"{curso3.Nombre}, {curso3.UniqueId}");
            
        }
    }
}```
using System;
namespace CorEscuela.Entidades
{
    public class Cursos
    {
        public string UniqueId { get; private set; }
        public string Nombre { get; set; }

        public string Jornada { get; set; }

        public Cursos()=> UniqueId = Guid.NewGuid().ToString();

        
    }
}```

la forma mas fácil de crear un id cada que se cree un curso es declarando una variable estatica .

No entiendo por que tener métodos get y set en las propiedades si la propiedad es pública. Si la propiedad fuera privada tiene sentido tenerlos, pero al ser pública, qué sentido tiene?

se generó el mismo GUID porque estas asignandole al curso 2 el mismo uniqueID del curso 1

min 7:45 lo puso correcto pero mientras lo explicaba lo dijo al revés, sólo puntualizar eso, porque es fácil que alguien se confunda

El teacher imprimio el segundo curso con el GuId del primer curso.

 Console.WriteLine(escuela);
            System.Console.WriteLine("===============================================");
            Console.WriteLine("\n"+curso1.Nombre +","+curso1.UniqueId);
            Console.WriteLine($"\n{curso2.Nombre} ,{curso2.UniqueId}");
            Console.WriteLine($"\n{curso3.Nombre} ,{curso3.UniqueId}");
        

En este caso el ID del curso1 es el mismo que el del curso2 porque se está imprimiendo 2 veces el ID del curso1.

var escuela = new Escuela();
escuela.Nombre = "Mi Escuela";
escuela.TipoEscuela = TiposEscuela.Inicial;
escuela.Ciudad = "Santa Cruz";
escuela.Pais = "Bolivia";

var primeroAPM = new Curso()
{
  Nombre = "Primero",
  Paralelo = TiposParalelo.A,
  Turno = TiposTurno.mañana
};

var primeroBPM = new Curso()
{
  Nombre = "Primero",
  Paralelo = TiposParalelo.B,
  Turno = TiposTurno.mañana
};

var segundoAST = new Curso()
{
  Nombre = "Segundo",
  Paralelo = TiposParalelo.A,
  Turno = TiposTurno.tarde
};

Console.WriteLine(escuela);
Console.WriteLine("=====================================");
Console.WriteLine(primeroAPM);
Console.WriteLine(primeroBPM);
Console.WriteLine(segundoAST);

Atajo VSCODE: Si hacéis click en una línea y luego CTRL + ALT + ARRIBA/ABAJO podéis duplicar esa línea. Lo mismo ocurre si sleccionas varias y luego usas el atajo

La extension " C# Extensions jchannon" esta Deprecada

El código compartido en “Archivos de la clase” no coinciden con lo que muestra el profesor en éste video/ clase.

a mi si con el misco codigo

        public Curso ()=> UniqueId = Guid.NewGuid ().ToString ();

si me esta creando un id distindo

tengo una consulta, porque el metodo private se le asigna al get y no al set, si el private esta dentro del punto y coma del set

public string UniqueId { get; private set; }

------------------------------ **Respuesta **---------------------------------
respondiendo la pregunta que realice, realmente en esa propiedad se le esta realizando el acceso privado al set, no es al get como se dice, ya que el set es para darle valores y el get permite traer esos valores.

La extensión C# extensions ya esta deprecada.

Algo que me gustaría adicionar al momento de crear enums es que para X++ (lenguaje hermano de C#) existe algo muy parecido a los enums y funciona prácticamente igual. Ellos recomiendan que los base enums (de X++) tengan como primer elemento un valor None por lo que cuando utilizas un enum y no asignas valor, este toma el valor 0 que como ejemplo en el enum TiposJornada siempre pondria el valor Mañana y esto podria ocasionar problemas si olvidaramos asignarlo.
Fuente: https://docs.microsoft.com/en-us/dynamicsax-2012/developer/best-practices-for-base-enums

Estoy con la versión dotnet 6.0.202, y no es necesario declarar using System; para que Guid.NewGuide().ToString(); funcione apropiadamente.

Excelente

El profe dice en el minuto 7:47 que el get sea privado, pero creo que es el set el privado, digo cuando hay ; es el final de esa instrupción por lo cual si la linea dice { get; private set; } entonces set es el privado y tambien tiene logica

estoy aprendiendo el lenguaje de C# y pues esta super el curso

Interesante, estos newGuid son utilizados en los certificados de platzi.

Por fin retomando el curso; estuve en entrega de proyectos y trabajos parciales

Me Descargué la extensión de C# Extensions y no funciona. ¿Cual Puedo utilizar en cambio?

Excelente!

Nota:
1 - El profesor quiso decir que vamos a poner la set private del atributo UniqueId.
2 - A la hora de imprimir uniqueId del curso2 por equivocacion dejo el del curso1

El tono en el que dice jajajaja en el minuto 8:15 mas o menos es una ofensa muy fuerte en México

todo bien por el momento =)

Buenas clases

Buena clase!

esas extensiones son muy utiles; instalenlas y usenlas.

muy util todo ahora escribo mucho mas rapido el codigo

Donde salió mal el GUID fue a la hora de imprimir, imprimió el curso2.UniqueId en lugar de curso2.UniqueId

Pregunta: ¿Cuál es la diferencia entre imprimir con “Console.WriteLine” a imprimir con “System.Console.WriteLine”?

Tengo una duda cuando:

var curso2 = new Cursos();
Cursos curso1 = new Cursos()
{ };

escribo estos 2 cursos son iguales o estoy haciendo cosas distintas?

Muy útiles las extensiones

Qué extraño lo del Guid, a ti te salía repetido, pero a mi perfectamente me generaba ID únicos.

Excelente curso genial muy bien detallado

Bueno quien realmente preste atención no cae en el error del guid, haha. Que bien por el tema de los atajos.

Al inicio del vídeo se recomienda una extensión “C# Extensions”, dicha extensión me aparece que ya no se está desarrollando, supongo que al actualizarse el lenguaje ya quedará obsoleta, que otra se puede usar que sea similar y si está actualizada?

Que genial 😃 ahora ya seré mas veloz

Llevo ya varios cursos aprobados en Platzi y he encontrado aquí al mejor curso y al mejor profesor de todos. Muchas gracias.

Cada vez me gusta mucho mas

Este curso me gusta mucho

            Console.WriteLine(escuela);
            System.Console.WriteLine("==============");
            Console.WriteLine(curso1.Nombre + "," + curso1.UniqueId);
            Console.WriteLine(curso2.Nombre + "," + curso2.UniqueId);
            Console.WriteLine($"{curso3.Nombre} , {curso3.UniqueId}");
       

Yo no tuve problemas, los id fueron aleatorio

Min 11:00 lo que está usando es string interpolation, lo que me extraña es que ya lo usó antes en el constructor de escuela y aún no ha explicado lo que es, solo dice que es algo más avanzado, espero lo aclare más adelante, si no lejos de marcar una nueva funcionalidad puede generar confución, porque no explica las diferencias.

Interesante, solo por duda no hay que utilizar LCC “Lower Camel Case” como buenas practicas para asignar variables we :v

Porque cuando cierro y vuelvo abrir el visual code no me reconoce el proyecto de C#, ya tengo instaladas las extensiones?

Excelente clase

Acá mi Código. Muy buena Clase:

Hay un curso muy bueno si aun se encuentran perdidos con algunos conceptos o quieren reforzar ,https://www.codecademy.com/learn

Comparto mi resultado

Console.WriteLine("New school was created!");
Console.WriteLine(mySchool);
Console.WriteLine(new string('*', 50));
Console.WriteLine("Id\t\t\t\t\tCourse");
Console.WriteLine(firstCourse.Id + "\t" + firstCourse.Name);
Console.WriteLine(secondCourse.Id + "\t" + secondCourse.Name);
New school was created!
Name: "CODE ACADEMY"
Type: Secondary
Address: Virtual
Foundation year: 1974
**************************************************
Id                                      Course
6db037ec-e0fe-4c2f-a145-be845cecaa6f    .NET 101
a7b90e2d-2168-473a-afd5-41f573c1d080    C# 101

El problema de que le haya imprimido el mismo UniqueID se debe a que al momento de copiar y pegar nuevamente el código, dejo en “curso1.UniqueID” y debía de cambiar el 1 por el 2.

Por el momento está muy similar a Java. Me está gustando .