Comenzar a programar con un paradigma orientado a objetos puede parecer complejo, pero con una guía paso a paso, verás que es más sencillo de lo que parece. En este tutorial, aprenderás a crear tu propia clase y objeto en C#, usando Visual Studio y un proyecto de consola.
¿Qué es la programación orientada a objetos?
La programación orientada a objetos (OOP, por sus siglas en inglés) es un paradigma de programación que utiliza "objetos" para representar datos y métodos. Los objetos son instancias de clases, que actúan como plantillas que describen sus características y comportamientos. Esta metodología facilita la reutilización del código, mejora la organización y ayuda a simplificar el mantenimiento del mismo.
¿Cómo crear un proyecto en Visual Studio?
Para empezar a experimentar con la OOP, necesitas crear un proyecto básico en Visual Studio. Sigue estos pasos:
Abre Visual Studio 2022 y selecciona Crear un nuevo proyecto.
Elige Proyecto de consola (.NET), ya que es la forma más sencilla de empezar a programar en C#.
Asigna un nombre y una ubicación al proyecto. Por ejemplo, "Programación Orientada a Objetos Demo".
Selecciona la versión de .NET, preferiblemente la última disponible.
Haz clic en Crear.
¿Qué objetos podemos representar en código?
Selecciona un objeto físico que tengas a tu alrededor. Puede ser cualquier cosa, como un monitor, una cámara o incluso un apuntador. Analiza las características del objeto. Por ejemplo, si usas un apuntador, podrías identificar las siguientes características:
Color (negro, blanco, azul, etc.)
Tamaño (en centímetros)
Número de botones
Si tiene o no sticker
Marca y tipo de batería
¿Cómo definir una clase en C#?
Para definir una clase, utiliza la palabra clave class seguida del nombre que deseas para la misma. Por ejemplo, si estás creando la clase para un objeto apuntador, haz lo siguiente:
publicclassApuntador{publicstring Color {get;set;}publicdouble Largo {get;set;}publicint NumeroDeBotones {get;set;}publicbool TieneSticker {get;set;}}
¿Cómo crear un objeto en C#?
Una vez definida la clase, puedes crear instancias u objetos de esta clase. Usa la palabra clave new para instanciar el objeto y asignar valores a sus propiedades:
Apuntador apuntadorPlexi =newApuntador{ Color ="Negro", Largo =24.5, NumeroDeBotones =3, TieneSticker =true};Apuntador apuntadorPlexi2 =newApuntador{ Color ="Blanco", Largo =24.5, NumeroDeBotones =3, TieneSticker =false};
¿Qué son los niveles de acceso?
En C#, controlamos la accesibilidad de las propiedades de las clases a través de modificadores de acceso. public permite el acceso desde cualquier parte del programa, asegurando que las propiedades se puedan modificar externamente según necesidades específicas de los objetos.
¿Por qué es útil la programación orientada a objetos?
La programación orientada a objetos facilita la creación de código modular y reutilizable. Los desarrolladores pueden crear plantillas (clases) y reutilizar sus definiciones para crear nuevos objetos con las mismas características y métodos, pero con valores diferentes. Esto no solo ahorra tiempo, sino que también fomenta un código organizado y fácil de mantener.
Para explorar este paradigma con profundidad, intenta aplicar estos conceptos a otros objetos que encuentres a tu alrededor y comparte tus experimentos con los demás estudiantes. ¡No te detengas aquí! Sigue adelante y mejora tus habilidades en OOP con el curso.
Fijense que en C# las propiedades siempre inician con mayúscula.
El console.log() de JavaScript, es Console.WriteLine() en C#
usa hot keys
ctl + espacio o se te pone letras adelante como transparentosas cuando vas escribiendo, lo unico que tienes que hacer para aceptar este autocompletado es darle tab
Lo que mencionas no son propiedades, son métodos
**Les comparto mis apuntes, espero que sea de mucha ayuda.**
Buen aporte
Thanks!
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 informationConsole.WriteLine("Hello, World!");Mouse mouseOficina =newMouse();Mouse mouseCasa =newMouse();mouseOficina.Color="Morado";mouseOficina.Marca="Lenovo";mouseCasa.Color="Rojo";mouseCasa.Marca="Go";classMouse{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 =newVideoGameConsole[2];videogamesConsoles[0]=newVideoGameConsole("Videogame Console",32,1,"Sony","PlayStation5",5,true);videogamesConsoles[1]=newVideoGameConsole("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 classElectronicDevice{public abstract string powerSupplyType(int voltageValue);public string frequencyDutyLatinamerica(){return"This device works with 60Hz on LATAM";}}interfaceITurnOn{ string TurnOnMethod(string method);}classAnalogicElectronicDevice:ElectronicDevice{public override string powerSupplyType(int voltageValue){return $"This analogic electronic device works with AC Voltage with a voltage of {voltageValue} V";}}classDigitalElectronicDevice:ElectronicDevice{publicDigitalElectronicDevice(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;}}privatestatic int _counter =0;private int _id;private string _name;private int _memory;private int _hardDisk;private string _so;}sealed classComputerDevice: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 classVideoGameConsole:DigitalElectronicDevice,ITurnOn{publicVideoGameConsole(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}
Se ve interesante, bien ahí.
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....
Lo vengo diciendo y reportando hace meses, esta situación me ha hecho perder mucho tiempo, pero no ponen caso!!
Depende mucho del ancho de vanda, esto depende mucho del proveedor de ISP con el cual se tiene contratado el servicio de Internet.
Justo tenía un cuaderno al lado mío mientras miraba la clase así que...
La mejor versión de .NET para utilizar en el curso sería la 8, ya que es la más reciente y mantiene la compatibilidad con las características y mejoras orientadas a objetos que se están enseñando. Asegúrate de verificar que tu entorno de desarrollo, como Visual Studio, esté actualizado para evitar problemas de compatibilidad.
Tengo en mi escritorio unos autos de juguete de cars :D
Carrito_Cars McQueen = new Carrito_Cars();
Carrito_Cars To_Mate = new Carrito_Cars();
//Definiendo Objeto MCqueen
McQueen.Nombre = "Rayo Mc Queen";
McQueen.Velocidad = 300;
McQueen.Tipo_Carrito = "Auto de Carreras";
McQueen.Tiene_Stickers = true;
//Definiendo Objeto Mate
To_Mate.Nombre = "Mate, To Mate";
To_Mate.Velocidad = 180;
To_Mate.Tipo_Carrito = "Auto de Carga";
To_Mate.Tiene_Stickers = true;
class Carrito_Cars
{
public string Nombre;
public double Velocidad;
public string Tipo_Carrito;
public bool Tiene_Stickers;
}// fin de la clase Carrito Cars
Una clase super clara, espero muchas cosas cheveres del curso!
Clases y objetos
Clases y objetos son los conceptos básicos de la Programación Orientada a Objetos.
Una clase es una plantilla o un molde que define las propiedades y comportamientos (atributos y métodos) de un objeto.
Un objeto es una instancia de una clase. Cuando se crea un objeto, se reserva espacio en la memoria y se puede interactuar con sus atributos y métodos.
¿Cómo se utiliza?
En C#, usamos clases para definir las estructuras que representan entidades del mundo real, como un "Coche", "Persona", o "Producto". Luego, podemos crear objetos a partir de estas clases para trabajar con datos específicos
// Se inicializa el primer objetoAutomovil auto1 =newAutomovil();// Se asignan atributos al coche 1auto1.Color="rojo";auto1.Marca="Toyota";auto1.Modelo="Asp mini";Console.WriteLine($"Mi automovil marca {auto1.Marca} y modelo {auto1.Modelo} es de color {auto1.Color}");// Creacion de mi objeto automovilpublicclassAutomovil{public string Color;public string Marca;public string Modelo;}
Explicación del ejemplo
Clase Automovil: Se define una clase llamada Automovil con tres atributos: Color, Marca, y Moedelo.
Objeto auto1: Se crea un objeto llamado auto1 a partir de la clase Automovil.
Salida: El programa imprime las características del coche en la consola.
Game myGame = new Game();myGame.Title ="The Legend of Zelda: Breath of the Wild";myGame.Genre ="Aventura";myGame.ReleaseYear =2017;
class Game
{ public string Title { get; set;} public string Genre { get; set;} public int ReleaseYear { get; set;}}```class Game
{  public string Title { get; set;}  public string Genre { get; set;}  public int ReleaseYear { get; set;}  public voidDisplayInfo() {  Console.WriteLine("Información del juego:");  Console.WriteLine($"Título: {Title}");  Console.WriteLine($"Género: {Genre}");  Console.WriteLine($"Año de lanzamiento: {ReleaseYear}"); }}
Soy el único que escucha el audio del lado izquierdo de los audífonos? los dos videos anteriores se escuchaba igual