Initialiseurs d'objets
Fait partie de la section Programmation Orientée Objet du Journey C# de Coddy — leçon 8 sur 70.
Les initialiseurs d'objet fournissent un moyen pratique de définir les valeurs des propriétés lors de la création d'un objet, sans appeler de constructeur avec de nombreux paramètres.
Manière traditionnelle utilisant un constructeur
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
}
Person person = new Person();
person.Name = "Alice";
person.Age = 25;
person.City = "New York";Utilisation de la syntaxe d'initialisation d'objet
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Initialiseurs d'objets avec constructeurs
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public string City { get; set; }
public Person(string name)
{
Name = name;
}
}
// Le constructeur définit Name, l'initialiseur définit les autres propriétés
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};Initialiseurs d'objets imbriqués
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class Person
{
public string Name { get; set; }
public Address Address { get; set; }
}
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Création de plusieurs objets avec des initialiseurs
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };
Person person3 = new Person { Name = "Charlie", Age = 35 };Les initialiseurs d'objets rendent le code plus propre et plus lisible. Les propriétés sont définies après l'exécution du constructeur. Vous pouvez utiliser des initialiseurs avec ou sans paramètres de constructeur, ce qui rend la création d'objets flexible et concise.
Défi
MoyenCréez trois objets Student en utilisant différentes approches d'initialiseur d'objet :
- student1 : Utilisez le constructeur par défaut avec un initialiseur d'objet pour définir toutes les propriétés (Name, StudentId, Major, GPA) à partir de l'entrée
- student2 : Utilisez un initialiseur d'objet pour définir uniquement Name = "Bob" et Major = "Engineering"
- student3 : Utilisez le constructeur avec "Charlie" comme paramètre, puis utilisez un initialiseur d'objet pour définir StudentId = 54321, Major = "Mathematics", GPA = 3.5
Aide-mémoire
Les initialiseurs d'objets offrent un moyen pratique de définir les valeurs des propriétés lors de la création d'un objet :
Person person = new Person
{
Name = "Alice",
Age = 25,
City = "New York"
};Les initialiseurs d'objets peuvent être combinés avec des constructeurs :
Person person = new Person("Bob")
{
Age = 30,
City = "London"
};Les initialiseurs d'objets imbriqués permettent de définir les propriétés d'objets imbriqués :
Person person = new Person
{
Name = "Charlie",
Address = new Address
{
Street = "123 Main St",
City = "Boston"
}
};Plusieurs objets peuvent être créés de manière concise :
Person person1 = new Person { Name = "Alice", Age = 25 };
Person person2 = new Person { Name = "Bob", Age = 30 };Essayez vous-même
using System;
class Program
{
static void Main()
{
string name = Console.ReadLine();
int studentId = int.Parse(Console.ReadLine());
string major = Console.ReadLine();
double gpa = double.Parse(Console.ReadLine());
// TODO: Créer student1 en utilisant l'initialiseur d'objet avec toutes les propriétés
// Utiliser le constructeur par défaut et définir Name, StudentId, Major, et GPA
// TODO: Créer student2 en utilisant l'initialiseur d'objet avec seulement Name et Major
// Name doit être "Bob", Major doit être "Engineering"
// TODO: Créer student3 en utilisant le constructeur avec le paramètre de nom "Charlie"
// Ensuite, utiliser l'initialiseur d'objet pour définir StudentId = 54321, Major = "Mathematics", GPA = 3.5
Console.WriteLine($"Student 1: {student1.Name} (ID: {student1.StudentId}) - {student1.Major}, GPA: {student1.GPA}");
Console.WriteLine($"Student 2: {student2.Name} (ID: {student2.StudentId}) - {student2.Major}, GPA: {student2.GPA}");
Console.WriteLine($"Student 3: {student3.Name} (ID: {student3.StudentId}) - {student3.Major}, GPA: {student3.GPA}");
}
}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