Propriétés auto-implémentées
Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 10 sur 70.
Les propriétés auto-implémentées vous permettent de déclarer des propriétés sans écrire de champs de stockage explicites. Le compilateur crée automatiquement un champ privé masqué en arrière-plan.
Au lieu d'écrire ce code verbeux :
public class Product
{
private string name;
public string Name
{
get { return name; }
set { name = value; }
}
}Vous pouvez simplement écrire :
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Vous pouvez également définir des valeurs par défaut directement dans la déclaration :
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Les propriétés auto-implémentées sont idéales lorsque vous n'avez pas besoin de validation ou de logique personnalisée dans le getter ou le setter. Elles gardent vos classes propres et réduisent considérablement le code répétitif.
Défi
FacileConstruisons un système d'inventaire simple en utilisant des propriétés auto-implémentées pour suivre les articles dans un magasin.
Vous allez créer deux fichiers pour organiser votre code :
Item.cs: Définissez une classeItemdans l'espace de nomsInventoryavec des propriétés auto-implémentées pourName(string),Price(decimal), etInStock(bool). Définissez des valeurs par défaut :Namedoit avoir pour valeur par défaut"Unknown",Pricela valeur0.0m, etInStockla valeurtrue.Program.cs: Dans votre fichier principal, créez deux objetsItemen utilisant des initialiseurs d'objets. Lisez le nom et le prix de chaque article à partir de l'entrée, puis affichez les détails de chaque article.
Vous recevrez quatre entrées :
- Le nom du premier article
- Le prix du premier article
- Le nom du deuxième article
- Le prix du deuxième article
Affichez chaque article dans ce format :
Item: {Name}, Price: {Price}, In Stock: {InStock}Par exemple, si les entrées sont Laptop, 999.99, Mouse, et 25.50, la sortie devrait être :
Item: Laptop, Price: 999.99, In Stock: True
Item: Mouse, Price: 25.50, In Stock: TrueAide-mémoire
Les propriétés auto-implémentées vous permettent de déclarer des propriétés sans écrire de champs d'appui explicites. Le compilateur crée automatiquement un champ privé caché.
Syntaxe de base :
public class Product
{
public string Name { get; set; }
public decimal Price { get; set; }
public int Quantity { get; set; }
}Définition de valeurs par défaut :
public class Product
{
public string Name { get; set; } = "Unnamed";
public decimal Price { get; set; } = 0.0m;
public bool IsAvailable { get; set; } = true;
}Les propriétés auto-implémentées sont idéales lorsque vous n'avez pas besoin de validation ou de logique personnalisée dans l'accesseur (getter) ou le mutateur (setter).
Essayez vous-même
using System;
using Inventory;
class Program
{
public static void Main(string[] args)
{
// Lire les entrées pour le premier article
string name1 = Console.ReadLine();
decimal price1 = Convert.ToDecimal(Console.ReadLine());
// Lire les entrées pour le deuxième article
string name2 = Console.ReadLine();
decimal price2 = Convert.ToDecimal(Console.ReadLine());
// TODO: Créer deux objets Item en utilisant des initialiseurs d'objet
// Définir les propriétés Name et Price à partir des valeurs d'entrée
// TODO: Afficher les détails de chaque article au format :
// Item: {Name}, Price: {Price}, In Stock: {InStock}
}
}
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation Orientée Objet
1Fondamentaux de la POO
Fichiers externesEspaces de noms et directivesIntro aux classes et objetsLe mot-clé 'this'Méthodes et paramètresChamps vs PropriétésConstructeursInitialiseurs d'objetsRécapitulatif - Calculatrice simple4Héritage
Syntaxe de base de l'héritage (:)Le mot-clé 'base'Mots-clés Virtual & OverrideClasses scelléesLa classe de base 'object'Récapitulatif - Hiérarchie des employés7Fonctionnalités avancées
Surcharge d'opérateursIndexeurs (this[])Redéfinition de ToString()Méthodes d'extensionRécapitulatif - Liste personnalisée10Patrons de conception - Partie 1
Introduction aux patrons de conceptionSingleton Thread-SafePatron FabriquePatron Observateur (Événements)Patron Stratégie2Propriétés et membres statiques
Propriétés auto-implémentéesPropriétés en lecture/écriture seuleChamps et méthodes statiquesClasses statiquesMembres à corps d'expression5Polymorphisme & Interfaces
Polymorphisme : Compilation vs ExécutionInterface vs Classe AbstraiteInterfaces MultiplesInterfaces ExplicitesUpcasting & DowncastingRécapitulatif - Calculateur de Formes8Concepts avancés de la POO
Composition plutôt qu'héritageGénériques (Classes et Méthodes)Délégués et ÉvénementsAttributs et RéflexionIDisposable et l'instruction usingBases de l'Injection de Dépendances11Patrons de conception, Partie 2
Patron CommandePatron AdaptateurPatron DécorateurPatron Méthode TemplatePatron ÉtatPatron Composite3Architecture des classes
Données d'instance vs statiquesMots-clés 'readonly' & 'const'Champs de supportRécapitulatif - Gestionnaire de compte bancaire6Encapsulation
Modificateurs d'accèsPropriétés pour l'encapsulationImplémentation du masquage de donnéesPatterns d'immuabilitéRécapitulatif - Dossiers d'étudiants12Projet : Système de gestion de bibliothèque
Structure du projetModèles Livre et Utilisateur