Creación de Clases y Objetos en C# con Extensiones en Visual Studio Code

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

Resumen

Crear una base sólida en C# es más simple con buenas prácticas y herramientas. Aquí verás cómo definir la entidad curso, generar un unique ID con GUID, aplicar encapsulamiento, usar una enumeración para la jornada y optimizar tu flujo en Visual Studio Code con la extensión adecuada. Además, se muestra cómo imprimir resultados con concatenación e interpolación de cadenas y se anticipa el manejo de múltiples cursos.

¿Cómo acelerar la creación de clases en Visual Studio Code?

Aprovecha la extensión C# Extensions de J. Shannon para agilizar tareas repetitivas. Instálala desde Extensiones en Visual Studio Code, recarga el editor y crea nuevas clases con clic derecho: adiciona nueva clase. El esqueleto aparece con namespace y clase listos, evitando copiar/pegar.

  • Ahorra tiempo al generar el namespace correcto automáticamente.
  • Crea archivos como Curso.cs en segundos.
  • Organiza el trabajo en paneles: arrastra archivos para ver curso y escuela al mismo tiempo.
  • Usa atajos: escribe cw y tab para insertar Console.WriteLine.

¿Cómo mantener el namespace correcto?

Si trabajas con copias en carpetas como etapa dos, ajusta el namespace manualmente para mantener “core escuela” como espacio de nombres principal.

¿Qué atributos y constructor definen el curso en C#?

Un curso requiere propiedades claras y tipos adecuados. Se propuso Nombre como string y un UniqueId también como string para este ejercicio. Para la jornada, se sugiere una enumeración que evite errores de escritura.

  • Propiedades clave: Nombre, UniqueId, Jornada.
  • Jornada como enum: evita valores libres mal escritos.
  • Encapsulamiento: el identificador solo se asigna dentro de la clase.

Código de ejemplo de la enumeración:

enum TiposJornada
{
    Mañana,
    Tarde,
    Noche
}

Clase Curso con constructor que genera el ID automáticamente con GUID y asignación encapsulada:

using System;

class Curso
{
    public string Nombre { get; set; }
    public string UniqueId { get; private set; }
    public TiposJornada Jornada { get; set; }

    public Curso() => UniqueId = Guid.NewGuid().ToString();
}
  • Se usa Guid.NewGuid().ToString() para crear un identificador aleatorio e irrepetible.
  • La propiedad UniqueId no se puede asignar desde fuera: refuerza el encapsulamiento y evita errores.
  • Se mostró también la sintaxis de método de expresión en el constructor con la flecha => para una sola instrucción.

¿Cómo crear e imprimir varios cursos con buenas prácticas?

Se crearon tres cursos y se imprimieron en consola para verificar resultados. La creación usó inicializadores de objeto y el constructor por defecto.

var curso1 = new Curso { Nombre = "Ciento uno" };
var curso2 = new Curso { Nombre = "Doscientos uno" };
var curso3 = new Curso { Nombre = "Trescientos uno" };

Intentar asignar el UniqueId desde fuera produce error por el modificador de acceso. Ese es el objetivo: proteger la integridad del ID.

Impresión con concatenación:

Console.WriteLine(curso1.Nombre + ", " + curso1.UniqueId);

Impresión con interpolación (versiones recientes de C#):

Console.WriteLine($"{curso2.Nombre}, {curso2.UniqueId}");
  • Al imprimir un objeto sin ToString sobrescrito, se muestra la ruta completa del tipo.
  • Se observó que los GUID podrían parecer repetidos en la ejecución; se propone revisar más adelante.
  • Ejecución en terminal con .NET: usa .net run.

¿Cómo preparar el diseño para muchos cursos?

La escuela tiene cursos, pero su cantidad es variable. Crear uno a uno no escala. Se anticipa la necesidad de una colección para gestionar 1, 3, 5 o cientos de cursos de forma flexible. Esa mejora se abordará después.

¿Qué conceptos y habilidades practicas aquí?

  • Clases y propiedades: diseño de entidades con tipos adecuados.
  • Enumeraciones: control de valores permitidos para jornada.
  • Constructores y GUID: generación automática de identificadores.
  • Encapsulamiento: restringir la asignación del ID fuera de la clase.
  • Interpolación de cadenas: escritura más limpia en consola.
  • Productividad en VS Code: C# Extensions, paneles, atajos como cw.

¿Te surgieron dudas o ideas para mejorar la impresión, el uso de enums o la generación del ID? Cuéntalas y comparte cómo organizarías los cursos en una colección.