CodeGym /Cours /C# SELF /Champs et méthodes statiques

Champs et méthodes statiques

C# SELF
Niveau 12 , Leçon 1
Disponible

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
}
Exemple de déclaration de champs d'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.");
    }
}
Exemple de méthodes d'objet

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
Exemple d'utilisation d'un champ statique

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;
    }
}
Exemple de méthode statique

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
public string Name;
Dans chaque objet Données perso de l'objet cat1.Name, cat2.Name
Méthode d'objet
public void Meow(){}
Dans chaque objet Actions qui utilisent les champs de l'objet cat1.Meow()
Champ statique
public static int C;
Un seul pour toute la classe Données communes à tous les objets Cat.C
Méthode statique
public static ...
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.

Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION