Propiedades autoimplementadas
Parte de la sección Programación Orientada a Objetos del Journey de C# de Coddy — lección 10 de 70.
Las propiedades autoimplementadas le permiten declarar propiedades sin escribir campos de respaldo explícitos. El compilador crea un campo privado oculto automáticamente en segundo plano.
En lugar de escribir este código tan extenso:
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Simplemente puedes escribir:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}También puedes establecer valores predeterminados directamente en la declaración:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Las propiedades autoimplementadas son ideales cuando no se necesita validación ni lógica personalizada en el getter o setter. Mantienen las clases limpias y reducen significativamente el código repetitivo (boilerplate).
Desafío
FácilVamos a construir un sistema de inventario sencillo utilizando propiedades autoimplementadas para realizar un seguimiento de los artículos en una tienda.
Crearás dos archivos para organizar tu código:
Item.cs: Define una claseItemen el espacio de nombresInventorycon propiedades autoimplementadas paraName(string),Price(decimal) eInStock(bool). Establece valores predeterminados:Namedebe ser por defecto"Unknown",Pricea0.0meInStockatrue.Program.cs: En tu archivo principal, crea dos objetosItemutilizando inicializadores de objetos. Lee el nombre y el precio de cada artículo desde la entrada, luego imprime los detalles de cada artículo.
Recibirás cuatro entradas:
- Nombre del primer artículo
- Precio del primer artículo
- Nombre del segundo artículo
- Precio del segundo artículo
Imprime cada artículo en este formato:
Item: {Name}, Price: {Price}, In Stock: {InStock}Por ejemplo, si las entradas son Laptop, 999.99, Mouse y 25.50, la salida debería ser:
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueHoja de referencia
Las propiedades autoimplementadas le permiten declarar propiedades sin escribir campos de respaldo explícitos. El compilador crea automáticamente un campo privado oculto.
Sintaxis básica:
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Establecer valores predeterminados:
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Las propiedades autoimplementadas son ideales cuando no se necesita validación o lógica personalizada en el getter o setter.
Pruébalo tú mismo
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Leer entradas para el primer artículo
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Leer entradas para el segundo artículo
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Crear dos objetos Item usando inicializadores de objetos
// Establecer las propiedades Name y Price a partir de los valores de entrada
// TODO: Imprimir los detalles de cada artículo en el formato:
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Programación Orientada a Objetos
1Fundamentos de OOP
Archivos externosNamespaces y directivasIntro a clases y objetosLa palabra clave 'this'Métodos y parámetrosCampos vs PropiedadesConstructoresInicializadores de objetosResumen - Calculadora simple4Herencia
Sintaxis básica de herencia (:)La palabra clave 'base'Palabras clave Virtual y OverrideClases selladas (Sealed)La clase base 'object'Resumen: Jerarquía de empleados7Características avanzadas
Sobrecarga de operadoresIndexadores (this[])Sobrescritura de ToString()Métodos de extensiónResumen - Lista personalizada10Patrones de diseño - Parte 1
Introducción a los patrones de diseñoSingleton Thread-SafePatrón FactoryPatrón Observer (Eventos)Patrón Strategy2Propiedades y miembros estáticos
Propiedades autoimplementadasPropiedades de solo lectura y escrituraCampos y métodos estáticosClases estáticasMiembros con cuerpo de expresión5Polimorfismo e Interfaces
Polimorfismo: Compilación vs. EjecuciónInterfaz vs. Clase AbstractaInterfaces MúltiplesInterfaces ExplícitasUpcasting y DowncastingRepaso: Calculadora de Figuras8Conceptos avanzados de POO
Composición sobre herenciaGenéricos (clases y métodos)Delegados y eventosAtributos y ReflexiónIDisposable y la sentencia usingFundamentos de Inyección de dependencias11Patrones de diseño, parte 2
Patrón CommandPatrón AdapterPatrón DecoratorPatrón Template MethodPatrón StatePatrón Composite3Arquitectura de clases
Datos de instancia vs. estáticosPalabras clave 'readonly' y 'const'Campos de respaldoResumen - Gestor de cuentas bancarias6Encapsulamiento
Modificadores de accesoPropiedades para el encapsulamientoImplementación de ocultamiento de datosPatrones de inmutabilidadRepaso - Registros de estudiantes