Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Constructeurs de Classe | Introduction à la Programmation Orientée Objet (POO)
C# Au-Delà des Bases

bookConstructeurs de Classe

Un constructeur de classe est identique à un constructeur de structure. Il s'agit d'une méthode exécutée lors de la création d'un objet.

La syntaxe pour créer un constructeur est la suivante :

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Par exemple :

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Vous pouvez constater à la sortie que l'instruction Console.WriteLine à l'intérieur du constructeur Player est exécutée chaque fois qu'un nouvel objet est créé.

Note
Note

Dans C# 9 et les versions antérieures de C#, il existe certaines différences entre les constructeurs des structs et des classes. Par exemple, dans les anciennes versions, il n'est pas possible de créer des constructeurs sans paramètre pour les structs ; cependant, dans C# 10 et les versions ultérieures, cela est pris en charge. Il est recommandé d'utiliser la dernière version des compilateurs C# ; sinon, vous pourriez rencontrer des erreurs lors de la compilation de certains codes.

Voici un exemple de code issu du chapitre Constructeurs de structures. Le terme static est expliqué dans les commentaires car il est plus pertinent ici, cependant il n'est pas nécessaire de le comprendre entièrement pour l'instant, ce concept sera détaillé dans les sections suivantes.

Note
Remarque

Contrairement aux champs normaux, un champ static peut conserver des données même s'il n'existe aucun objet de cette classe. Les champs statiques ont la même valeur pour tous les objets, ainsi, modifier la valeur d'un champ statique depuis un objet la modifie pour tous les objets. La classe Program représente le programme lui-même, donc si le champ statique est un membre de la classe 'Program', il agit comme une variable globale.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Pour convertir la structure Player en une classe, il suffit de remplacer le terme struct par class :

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

De la même manière, il est possible de définir des constructeurs avec des arguments. Cette méthode est généralement utilisée pour faciliter l'initialisation des champs d'une classe :

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

À ce stade, vous avez couvert la plupart des concepts de base des Classes, et d'après la syntaxe et le comportement, les Classes semblent être exactement les mêmes que les Structs. Cependant, ce n'est pas réellement le cas. Comme indiqué dans le premier chapitre de cette section, les Structs sont une version limitée des Classes qui ne fournissent qu'une fonctionnalité basique, tandis que les fonctionnalités des Classes sont beaucoup plus complexes et étendues. Dans cette section, vous avez étudié toutes les fonctionnalités similaires entre les Classes et les Structs. Dans les deux prochaines sections, vous découvrirez toutes les subtilités des classes et de la programmation orientée objet.

1. Quand une méthode constructeur est-elle appelée ?

2. Quel sera le nom d'une méthode constructeur dans une classe appelée "Animal" ?

3. Quel mot-clé est utilisé avant le nom d'un constructeur ?

question mark

Quand une méthode constructeur est-elle appelée ?

Select the correct answer

question mark

Quel sera le nom d'une méthode constructeur dans une classe appelée "Animal" ?

Select the correct answer

question mark

Quel mot-clé est utilisé avant le nom d'un constructeur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 9

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Suggested prompts:

Can you explain the main differences between classes and structs?

What are some advanced features of classes that structs don't have?

Can you give examples of when to use a class instead of a struct?

Awesome!

Completion rate improved to 2.04

bookConstructeurs de Classe

Glissez pour afficher le menu

Un constructeur de classe est identique à un constructeur de structure. Il s'agit d'une méthode exécutée lors de la création d'un objet.

La syntaxe pour créer un constructeur est la suivante :

index.cs

index.cs

copy
1234567
class className { // ... other class code public className() { // code } }

Par exemple :

index.cs

index.cs

copy
1234567891011121314151617
using System; class Player { public Player() { Console.WriteLine("A new player is created"); } } public class HelloWorld { public static void Main(string[] args) { Player p1 = new Player(); Player p2 = new Player(); Player p3 = new Player(); } }

Vous pouvez constater à la sortie que l'instruction Console.WriteLine à l'intérieur du constructeur Player est exécutée chaque fois qu'un nouvel objet est créé.

Note
Note

Dans C# 9 et les versions antérieures de C#, il existe certaines différences entre les constructeurs des structs et des classes. Par exemple, dans les anciennes versions, il n'est pas possible de créer des constructeurs sans paramètre pour les structs ; cependant, dans C# 10 et les versions ultérieures, cela est pris en charge. Il est recommandé d'utiliser la dernière version des compilateurs C# ; sinon, vous pourriez rencontrer des erreurs lors de la compilation de certains codes.

Voici un exemple de code issu du chapitre Constructeurs de structures. Le terme static est expliqué dans les commentaires car il est plus pertinent ici, cependant il n'est pas nécessaire de le comprendre entièrement pour l'instant, ce concept sera détaillé dans les sections suivantes.

Note
Remarque

Contrairement aux champs normaux, un champ static peut conserver des données même s'il n'existe aucun objet de cette classe. Les champs statiques ont la même valeur pour tous les objets, ainsi, modifier la valeur d'un champ statique depuis un objet la modifie pour tous les objets. La classe Program représente le programme lui-même, donc si le champ statique est un membre de la classe 'Program', il agit comme une variable globale.

index.cs

index.cs

copy
1234567891011121314151617181920212223
using System; struct Program { public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

Pour convertir la structure Player en une classe, il suffit de remplacer le terme struct par class :

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Program { // Unlike normal fields, a 'static' field can hold data even if there's no object. // Static fields have the same value for all objects. // Changing the value of a static field from one object changes it for all objects. // In this case the static field is part of the 'Program' class which represents the program itself // Therefore this field is essentially a global variable public static int totalPlayers = 0; struct Player { public int id; public Player() { id = totalPlayers++; Console.WriteLine($"New Player Object Created With ID {id}"); } } static void Main(string[] args) { Player player1 = new Player(); Player player2 = new Player(); Player player3 = new Player(); } }

De la même manière, il est possible de définir des constructeurs avec des arguments. Cette méthode est généralement utilisée pour faciliter l'initialisation des champs d'une classe :

index.cs

index.cs

copy
12345678910111213141516171819202122232425262728
using System; class Point { public double x; public double y; public Point(double x, double y) { // 'this' keyword is also used in classes just like how its used in structs this.x = x; this.y = y; } public void showCoordinates() { Console.WriteLine($"({x}, {y})"); } } class Program { static void Main(string[] args) { Point p1 = new Point(50, 70); Point p2 = new Point(70, 90); p1.showCoordinates(); p2.showCoordinates(); } }

À ce stade, vous avez couvert la plupart des concepts de base des Classes, et d'après la syntaxe et le comportement, les Classes semblent être exactement les mêmes que les Structs. Cependant, ce n'est pas réellement le cas. Comme indiqué dans le premier chapitre de cette section, les Structs sont une version limitée des Classes qui ne fournissent qu'une fonctionnalité basique, tandis que les fonctionnalités des Classes sont beaucoup plus complexes et étendues. Dans cette section, vous avez étudié toutes les fonctionnalités similaires entre les Classes et les Structs. Dans les deux prochaines sections, vous découvrirez toutes les subtilités des classes et de la programmation orientée objet.

1. Quand une méthode constructeur est-elle appelée ?

2. Quel sera le nom d'une méthode constructeur dans une classe appelée "Animal" ?

3. Quel mot-clé est utilisé avant le nom d'un constructeur ?

question mark

Quand une méthode constructeur est-elle appelée ?

Select the correct answer

question mark

Quel sera le nom d'une méthode constructeur dans une classe appelée "Animal" ?

Select the correct answer

question mark

Quel mot-clé est utilisé avant le nom d'un constructeur ?

Select the correct answer

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 9
some-alt