Si alguno viene de JavaScript,
Fijense que en C# las propiedades siempre inician con mayúscula.
El console.log() de JavaScript, es Console.WriteLine() en C#
Aprender a crear una clase y un objeto en C# es el primer paso para dominar la programación orientada a objetos en este lenguaje. Aquí vas a ver cómo modelar un objeto real en código usando Visual Studio 2022 y .NET 7, partiendo de un ejemplo cotidiano que cualquier estudiante puede replicar.
La idea es sencilla: tomar algo que tengas a tu alrededor, analizar sus características y traducirlas a una class con propiedades. Si entiendes este flujo, ya tienes la base para construir cualquier proyecto orientado a objetos.
¿Cómo se configura el proyecto en Visual Studio 2022?
Antes de escribir código, necesitas un proyecto base donde experimentar sin distracciones. La opción más práctica es una Console App.
Al crearlo, vas a ver únicamente un Console.WriteLine("Hello, world!"). Ejecútalo una vez para confirmar que todo funciona y la consola imprime el mensaje. Ese archivo limpio es tu lienzo para construir la primera clase.
¿Cómo identificas las características de un objeto real?
La programación orientada a objetos parte de observar el mundo. Antes de escribir una sola línea, mira a tu alrededor y elige algo concreto: un monitor, una cámara, un televisor o, como en el ejemplo, un apuntador.
El ejercicio consiste en listar características físicas y funcionales del objeto. Para el apuntador del ejemplo, las características fueron:
¿Qué es una clase en programación orientada a objetos? Es un molde que define las características generales de un tipo de objeto. No describe un objeto específico, sino el patrón que comparten todos los objetos similares.
El truco está en pensar en variantes. Tu apuntador es negro, pero existen apuntadores blancos, azules o amarillos. Lo que importa no es el valor concreto, sino la categoría: el color. Esa abstracción es lo que se convierte en propiedad.
¿Cómo se declara una clase y sus propiedades en C#?
En C#, una clase se crea con la palabra reservada class seguida del nombre. Dentro de las llaves vas declarando las propiedades, que son las características generales que cualquier objeto de ese tipo va a tener.
Para el apuntador, la clase quedaría así:
csharp public class Apuntador { public string Color; public double Largo; public short NumeroDeBotones; public bool TieneSticker; }
Cada propiedad tiene un tipo de dato que define qué información acepta:
string para el color, porque es una cadena de texto.double para el largo, que permite manejar decimales y dar precisión a los centímetros.short para el número de botones, un entero corto suficiente para valores pequeños.bool para tiene sticker, que solo acepta true o false [08:30].¿Por qué necesitas la keyword public?
C# maneja niveles de acceso que controlan quién puede ver cada elemento de una clase. Si declaras las propiedades sin modificador, no podrás acceder a ellas desde fuera. Al anteponer public, le dices al compilador que cualquier objeto creado a partir de esa clase puede leer y modificar esas propiedades.
¿Qué hace la palabra public en C#? Es un modificador de acceso que expone una propiedad o método para que pueda usarse fuera de la clase. Sin él, las propiedades quedan ocultas al objeto que instancies.
¿Cómo creas un objeto a partir de una clase?
Una vez tienes la clase definida, instanciar un objeto es directo. Tienes dos formas de hacerlo en C#:
var, que infiere el tipo automáticamente.La palabra new es la que crea el objeto en memoria a partir del molde. El nombre que asignes debe ser descriptivo y representar lo que guardas:
csharp Apuntador apuntadorPlatzi = new Apuntador(); Apuntador apuntadorPlatzi2 = new Apuntador();
Con esto ya tienes dos objetos distintos que comparten la misma estructura pero pueden tener valores diferentes. Esa es la esencia de la reutilización en POO: una sola plantilla genera infinitas variantes.
¿Cómo asignas valores a las propiedades de un objeto?
La asignación funciona igual que con cualquier variable, usando el operador = y accediendo a la propiedad con un punto:
csharp apuntadorPlatzi.Color = "Negro"; apuntadorPlatzi2.Color = "Blanco";
Ambos objetos vienen de la misma clase Apuntador, así que representan lo mismo conceptualmente, pero el primero es negro y el segundo blanco. Puedes seguir asignando largo, número de botones y si tiene sticker con la misma lógica [13:00].
¿Qué aprendiste sobre clases y objetos en este ejercicio?
La práctica con un objeto real te muestra cómo funciona la abstracción: pasas de algo físico que puedes tocar a una representación lógica que el código entiende. Las propiedades capturan las características variables, la clase actúa como molde, y cada objeto es una instancia única con sus propios valores.
Ahora replica el ejercicio con el objeto que tengas más cerca. Comparte tu demo con el resto de estudiantes y comenta qué propiedades elegiste para modelarlo.
Aprender a crear una clase y un objeto en C# es el primer paso para dominar la programación orientada a objetos en este lenguaje. Aquí vas a ver cómo modelar un objeto real en código usando Visual Studio 2022 y .NET 7, partiendo de un ejemplo cotidiano que cualquier estudiante puede replicar.
La idea es sencilla: tomar algo que tengas a tu alrededor, analizar sus características y traducirlas a una class con propiedades. Si entiendes este flujo, ya tienes la base para construir cualquier proyecto orientado a objetos.
Antes de escribir código, necesitas un proyecto base donde experimentar sin distracciones. La opción más práctica es una Console App.
Al crearlo, vas a ver únicamente un Console.WriteLine("Hello, world!"). Ejecútalo una vez para confirmar que todo funciona y la consola imprime el mensaje. Ese archivo limpio es tu lienzo para construir la primera clase.
La programación orientada a objetos parte de observar el mundo. Antes de escribir una sola línea, mira a tu alrededor y elige algo concreto: un monitor, una cámara, un televisor o, como en el ejemplo, un apuntador.
El ejercicio consiste en listar características físicas y funcionales del objeto. Para el apuntador del ejemplo, las características fueron:
¿Qué es una clase en programación orientada a objetos? Es un molde que define las características generales de un tipo de objeto. No describe un objeto específico, sino el patrón que comparten todos los objetos similares.
El truco está en pensar en variantes. Tu apuntador es negro, pero existen apuntadores blancos, azules o amarillos. Lo que importa no es el valor concreto, sino la categoría: el color. Esa abstracción es lo que se convierte en propiedad.
En C#, una clase se crea con la palabra reservada class seguida del nombre. Dentro de las llaves vas declarando las propiedades, que son las características generales que cualquier objeto de ese tipo va a tener.
Para el apuntador, la clase quedaría así:
csharp public class Apuntador { public string Color; public double Largo; public short NumeroDeBotones; public bool TieneSticker; }
Cada propiedad tiene un tipo de dato que define qué información acepta:
string para el color, porque es una cadena de texto.double para el largo, que permite manejar decimales y dar precisión a los centímetros.short para el número de botones, un entero corto suficiente para valores pequeños.bool para tiene sticker, que solo acepta true o false [08:30].C# maneja niveles de acceso que controlan quién puede ver cada elemento de una clase. Si declaras las propiedades sin modificador, no podrás acceder a ellas desde fuera. Al anteponer public, le dices al compilador que cualquier objeto creado a partir de esa clase puede leer y modificar esas propiedades.
¿Qué hace la palabra public en C#? Es un modificador de acceso que expone una propiedad o método para que pueda usarse fuera de la clase. Sin él, las propiedades quedan ocultas al objeto que instancies.
Una vez tienes la clase definida, instanciar un objeto es directo. Tienes dos formas de hacerlo en C#:
var, que infiere el tipo automáticamente.La palabra new es la que crea el objeto en memoria a partir del molde. El nombre que asignes debe ser descriptivo y representar lo que guardas:
csharp Apuntador apuntadorPlatzi = new Apuntador(); Apuntador apuntadorPlatzi2 = new Apuntador();
Con esto ya tienes dos objetos distintos que comparten la misma estructura pero pueden tener valores diferentes. Esa es la esencia de la reutilización en POO: una sola plantilla genera infinitas variantes.
La asignación funciona igual que con cualquier variable, usando el operador = y accediendo a la propiedad con un punto:
csharp apuntadorPlatzi.Color = "Negro"; apuntadorPlatzi2.Color = "Blanco";
Ambos objetos vienen de la misma clase Apuntador, así que representan lo mismo conceptualmente, pero el primero es negro y el segundo blanco. Puedes seguir asignando largo, número de botones y si tiene sticker con la misma lógica [13:00].
La práctica con un objeto real te muestra cómo funciona la abstracción: pasas de algo físico que puedes tocar a una representación lógica que el código entiende. Las propiedades capturan las características variables, la clase actúa como molde, y cada objeto es una instancia única con sus propios valores.
Ahora replica el ejercicio con el objeto que tengas más cerca. Comparte tu demo con el resto de estudiantes y comenta qué propiedades elegiste para modelarlo.
Si alguno viene de JavaScript,
Fijense que en C# las propiedades siempre inician con mayúscula.
El console.log() de JavaScript, es Console.WriteLine() en C#
**Les comparto mis apuntes, espero que sea de mucha ayuda.**



Access Modifiers o Modificadores de acceso:
**public: **Puede obtener acceso al tipo o miembro cualquier otro código del mismo ensamblado o de otro ensamblado que haga referencia a éste. El nivel de accesibilidad de los miembros públicos de un tipo se controla mediante el nivel de accesibilidad del propio tipo.
private: solamente el código de la misma class o struct puede acceder al tipo o miembro.
protected: solamente el código de la misma class, o bien de una class derivada de esa class, puede acceder al tipo o miembro.
internal: Puede obtener acceso al tipo o miembro cualquier código del mismo ensamblado, pero no de un ensamblado distinto. En otras palabras, se puede acceder a tipos o miembros internal desde el código que forma parte de la misma compilación.
**protected internal: **cualquier código del ensamblado en el que se ha declarado, o desde una class derivada de otro ensamblado, puede acceder al tipo o miembro.
private protected: se puede tener acceso al tipo o miembro mediante tipos derivados del objeto class que se declaran dentro de su ensamblado contenedor.
Mi objeto: Mouse/Ratón
// See https://aka.ms/new-console-template for more information
Console.WriteLine("Hello, World!");
Mouse mouseOficina = new Mouse();
Mouse mouseCasa = new Mouse();
mouseOficina.Color = "Morado";
mouseOficina.Marca = "Lenovo";
mouseCasa.Color = "Rojo";
mouseCasa.Marca = "Go";
class Mouse
{
public string Color;
public double Largo;
public double Ancho;
public short NumeroDeBotones;
public string Marca;
public bool TieneStickers;
}
Me dijo haz un ejemplo y terminé haciendo un proyecto en pocas XD
En fin, feli. Volví a repetir el curso y practiqué de paso algunos conocimientos como clases selladas y demás.
VideoGameConsole [] videogamesConsoles = new VideoGameConsole[2];
videogamesConsoles[0] = new VideoGameConsole("Videogame Console", 32, 1, "Sony", "PlayStation5", 5, true);
videogamesConsoles[1] = new VideoGameConsole("Videogame Console", 32, 1, "Sony", "Nintendo Switch", 4, false);
foreach (VideoGameConsole console in videogamesConsoles)
{
Console.WriteLine(console.ConsoleName);
Console.WriteLine($"{console.Generation}\n{console.Memory}\n{console.HardDisk}");
Console.WriteLine(console.frequencyDutyLatinamerica());
}
abstract class ElectronicDevice
{
public abstract string powerSupplyType(int voltageValue);
public string frequencyDutyLatinamerica()
{
return "This device works with 60Hz on LATAM";
}
}
interface ITurnOn
{
string TurnOnMethod(string method);
}
class AnalogicElectronicDevice : ElectronicDevice
{
public override string powerSupplyType(int voltageValue)
{
return $"This analogic electronic device works with AC Voltage with a voltage of {voltageValue} V";
}
}
class DigitalElectronicDevice : ElectronicDevice
{
public DigitalElectronicDevice(string name, int memory, int hardDisk, string so)
{
_id = _counter;
_counter++;
_name = name;
_memory = memory;
_hardDisk = hardDisk;
_so = so;
}
public override string powerSupplyType(int voltageValue)
{
return $"The electronic device works with AC Voltage with a voltage of {voltageValue} V";
}
public int Id { get { return _id; } set { _id = value; } }
public string Name { get { return _name; } set { _name = value; } }
public int Memory { get { return _memory; } set { _memory = value; } }
public int HardDisk { get { return _hardDisk; } set { _hardDisk = value; } }
public string So { get { return _so; } set { _so = value; } }
private static int _counter = 0;
private int _id;
private string _name;
private int _memory;
private int _hardDisk;
private string _so;
}
sealed class ComputerDevice : DigitalElectronicDevice, ITurnOn
{
ComputerDevice (string name, int memory, int hardDisk, string so, bool type) : base(name, memory, hardDisk, so)
{
_type = type;
}
public string TurnOnMethod(string method)
{
return $"The method is {method}";
}
public bool Type { get { return _type; } set { _type = value; } }
private bool _type; //1 -> Desktop; 0 -> Laptop
}
sealed class VideoGameConsole : DigitalElectronicDevice, ITurnOn
{
public VideoGameConsole(string name, int memory, int hardDisk, string so, string consoleName, int generation, bool type) : base(name, memory, hardDisk, so)
{
_consoleName = consoleName;
_generation = generation;
_type = type;
}
public string TurnOnMethod(string method)
{
return $"The turn on method is {method}";
}
public string ConsoleName { get{ return _consoleName; } set { _consoleName = value; } }
public int Generation { get{ return _generation;} set { _generation = value; } }
public bool Type { get{ return _type;} set { _type = value; } }
private string _consoleName;
private int _generation;
private bool _type; // 1 -> House 0 -> Mobile
}
xq los video no se reproducen bn, que fastidio plazti, que tumbada monumental que me dí al pagar un año por una vaina q funciona a ratos....
Justo tenía un cuaderno al lado mío mientras miraba la clase así que...
Cuaderno cuadernoBC = new Cuaderno();
Cuaderno cuadernoTorre = new Cuaderno();
cuadernoBC.color = "azul";
cuadernoTorre.color = "celeste";
class Cuaderno
{
public string color;
public double altura;
public double ancho;
public double largo;
public int numPaginas;
public string marca;
public bool tieneSeparador;
}
Ojalá me hubiesen enseñado así en la universidad. Pinta excelente el curso!
Cuando voy a crear el proyecto solo me aparece. NET O I . NET(Framework). Cual de los dos puedo usar?
