1. Champs d'objet : là où l'objet garde ses données
En C# (et en fait dans la plupart des langages de prog), on dit souvent : « tout est objet ». Un objet, c’est un “truc virtuel” dans la mémoire de l’ordi, qui peut stocker des trucs (données) et faire des trucs (méthodes). En gros, un objet a un état (champs, données) et un comportement (méthodes).
Exemples d’objets :
- Un chat dans un jeu (Cat)
- Un utilisateur du site (User)
- Un livre dans une bibliothèque (Book)
- Une voiture sur un parking (Car)
Quand tu crées un objet, c’est comme si tu faisais une copie d’un modèle (classe), et cette copie peut bosser avec ses propres données.
Les champs — ce sont des variables “à l’intérieur” de l’objet qui gardent ses données perso.
Exemple dans la vraie vie
Chaque chat a un nom, un âge, une couleur. Ces infos sont perso — chaque chat a les siennes.
public class Cat
{
public string Name; // Nom du chat — champ de l'objet
public int Age; // Âge du chat — champ de l'objet
public string Color; // Couleur du chat — champ de l'objet
}
Quand on crée des objets :
Cat cat1 = new Cat();
cat1.Name = "Barsik";
cat1.Age = 2;
cat1.Color = "gris";
Cat cat2 = new Cat();
cat2.Name = "Mourka";
cat2.Age = 5;
cat2.Color = "noir";
Chaque objet a ses propres valeurs de champs !
| Objet | Name | Age | Color |
|---|---|---|---|
| cat1 | Barsik | 2 | gris |
| cat2 | Mourka | 5 | noir |
Un champ — c’est une “poche” interne dans l’objet où il peut mettre des trucs.
2. Méthodes d'objet : ce que l'objet sait faire
Une méthode — c’est une “action”, une “compétence” ou une “fonction” de l’objet. Une méthode, c’est un bout de code qu’on peut “appeler” sur l’objet.
Exemple dans la vraie vie
Un chat peut faire des trucs : il peut miauler, courir, manger.
public class Cat
{
public string Name;
public void Meow()
{
Console.WriteLine($"{Name} dit : Miaou !");
}
public void Sleep()
{
Console.WriteLine($"{Name} dort.");
}
}
Utilisation :
Cat cat1 = new Cat();
cat1.Name = "Barsik";
cat1.Meow(); // Barsik dit : Miaou !
cat1.Sleep(); // Barsik dort.
Chaque objet a ses propres méthodes, et elles utilisent ses champs perso !
3. Champs statiques (static fields) : données partagées
Parfois, on veut stocker dans un champ non pas des données perso de l’objet, mais une info commune à toute la classe. Par exemple, compter combien de chats ont été créés, ou définir un “volume max” commun à tous les chats.
Pour ça, en C#, on utilise les champs statiques — ils se déclarent avec le mot static.
public class Cat
{
public string Name;
public static int Count = 0; // Champ statique
public Cat(string name)
{
Name = name;
Count++; // On incrémente le compteur global de chats
}
}
//travailler avec la classe Cat
Cat c1 = new Cat("Barsik");
Cat c2 = new Cat("Mourka");
Console.WriteLine(Cat.Count); // 2 — commun à tous les objets
Un champ statique est unique pour toute la classe, il est “partagé” par tous les objets.
On y accède en général via le nom de la classe : Cat.Count.
4. Méthodes statiques (static methods)
Une méthode statique — c’est une méthode qui n’est pas liée à un objet précis, mais à toute la classe.
- On peut appeler cette méthode sans créer d’objet.
- Dans une méthode statique, on ne peut pas accéder aux champs et méthodes classiques (non statiques) — parce qu’il n’y a pas d’objet précis !
public class MathUtils
{
public static int Add(int a, int b)
{
return a + b;
}
}
Utilisation :
int sum = MathUtils.Add(2, 3); // 5
Les méthodes statiques servent souvent pour des utils — des fonctions qui ne dépendent pas de l’état d’un objet.
Tu connais déjà plein de méthodes statiques :
Console.WriteLine();
Console.ReadLine();
Math.Round();
Math.Truncate();
5. Comparons méthodes et champs
| C'est quoi ? | Comment déclarer ? | Où c'est stocké ? | À quoi ça sert ? | Comment y accéder ? |
|---|---|---|---|---|
| Champ d'objet | |
Dans chaque objet | Données perso de l'objet | cat1.Name, cat2.Name |
| Méthode d'objet | |
Dans chaque objet | Actions qui utilisent les champs de l'objet | cat1.Meow() |
| Champ statique | |
Un seul pour toute la classe | Données communes à tous les objets | Cat.C |
| Méthode statique | |
Un seul pour toute la classe | “Compétences” communes, qui ne dépendent pas de l'objet | Cat.Method() |
7. Illustration
Champs et méthodes classiques :
. +-----------------+
cat1: | Name = "Barsik" |
| Age = 2 |
+-----------------+
+------------------+
cat2: | Name = "Mourka" |
| Age = 5 |
+------------------+
Champ statique Count :
Cat.Count = 2 // un seul pour tous les chats
Appel de méthodes :
cat1.Meow(); // Barsik dit : Miaou !
cat2.Meow(); // Mourka dit : Miaou !
Appel d'une méthode statique :
MathUtils.Add(2, 3); // 5
Résumé
- Les champs — servent à stocker les caractéristiques perso de chaque objet (propriétés).
- Les méthodes — décrivent ce que l’objet sait faire.
- Les champs statiques — sont faits pour garder des données “communes” (genre un compteur, des réglages globaux).
- Les méthodes statiques — sont utilisées pour des opérations qui ne dépendent pas d’un objet précis (genre des fonctions mathématiques).
8. Questions fréquentes
Est-ce qu’on peut accéder à un champ statique via un objet ?
Techniquement — oui (cat1.Count), mais on préfère passer par la classe (Cat.Count), pour éviter de se mélanger les pinceaux.
Est-ce qu’on peut appeler une méthode non statique sans créer d’objet ?
Non, parce qu’une telle méthode bosse toujours avec un objet précis et ses données.
Est-ce qu’on peut utiliser des champs et méthodes classiques dans une méthode statique ?
Non — parce qu’une méthode statique ne sait pas à quel objet s’adresser.
Est-ce qu’on peut faire une classe “totalement statique” ?
Oui, pour ça on écrit static class — on ne peut pas la créer avec new, et tous ses membres doivent être statiques.
GO TO FULL VERSION