Mémo Programmation C# : objet

La programmation orientée objet est omniprésente aujourd’hui, mais je voulais revenir rapidement sur la base…

Un objet ne désigne rien d’autre qu’une variable d’une classe donnée. Ou si vous préférez, d’instance et d’instanciation d’une classe donnée.

Lors de l’exécution du programme, au moment de l’instanciation (new MaClasseObjet) une partie de la mémoire est réservée afin d’y stocker l’objet, enfin, plus précisément ses champs (les méthodes étant gérées dans un emplacement mémoire différent).

La classe qui n’est donc en réalité pas vraiment l’objet puisqu’elle n’occupe aucune place en mémoire et ses méthodes ne font pas partie de l’objet en mémoire mais se trouve dans l’espace mémoire du code du programme.

Note : La classe est juste une information pour le compilateur en réalité et n’est pas le reflet de comment fonctionne l’objet dans le programme compilé.

vehicule-uml-object

Vehicule maVoiture; //référence d'un objet de type Vehicule 
maVoiture = new Vehicule(); //instanciation, l'objet existe en mémoire

La libération de la mémoire de l’objet se fait automatiquement en C#, dès qu’il devient inaccessible (selon sa portée).
L’objet a libérer sera marqué et ne sera réellement libéré qu’au passage du garbage collector (ramasse-miettes) plus tard, lors qu’un besoin en espace mémoire se fera sentir.

L’accès aux champs (propriétés) d’un objet se fait très simplement du type : ReferenceObjet.ChampOuPropriete ou ReferenceObjet.MethodeAppelee()

maVoiture.Poids; //Accède à la propriété "Poids" de l'objet "maVoiture"
maVoiture.TempsDistance(12, 80); //Exécute la méthode "TempsDistance(int dist, int vite)"

Pour appeler une propriété au sein de l’objet lui même, il existe un mot clé important : this.

class Vehicule{
     int Poids { get; set; } //propriété (avec ses accesseurs get & set

     public Vehicule() //constructeur, pour l'instanciation new Vehicule();
     { 
         this.Poids = 100; //this représente l'instance de l'objet lui-même
     }

     public double TempsDistance(int distance, int vitesse) //méthode d'objet
     {
         double temps = Convert.ToDouble(distance) / Convert.ToDouble(vitesse);
         return temps;
     }
}

Voici pour la première approche de l’objet avec C# !