Développement logiciel sur mesure  ARTOFLOG
Les Class en C#
Services Contact

Créer une Class en C# sous Visual Studio

 

Dans le langage C#, pour créer une classe, on utilise simplemet le mot clef class, de la meme maniere su'une structure Struct


 

Notre class chat aura donc la forme suivante


class CCHATS
{
    public string nom;
}

 

Au niveau de visualStudio, si la class peut être placée à tout endroit d'un projet et avoir la visibilité sur le même modèle que n'importe quelle structure du langage, on respecte un principe de découpage avec les namespace... pour permettre d'isoler la class et son comportement et donc de la réutiliser, l'injecter... sans embarquer tout un projet...

 

Pour ajouter uen class à un projet, on peut donc ce placer dans le netre du projet, selectionner le menu nouvel element, et dans la liste des choix électionner Class

 

 

 

VisualStudio a automatiquement créé un nouveau fichier de code C# conteant le "modele" de la class CChats

 

 

 

Nous avons donc mainteant la class CCHats, et il reste à créer les deux objet Felix et Garfield.
Felix et Garfield sont des instances de CChats.
!! Il ne faut pas seulement déclarer Felix et Garfield comme étant du type CChats, il faut les "créer" pour pouvoir les utiliser. Pour les créer on utilser la fonction new
   
namespace class_formation
{
    public partial class Form1 : Form
    {
        int i;
CCHATS  Felix;
        CCHATS  Garfield;

        public Form1()
        {
            InitializeComponent();

            Felix = new CCHATS();
            Garfield = new CCHATS();
        
        }

        private void button1_Click(object sender, EventArgs e)
        {
           //
        }
    }
}

 

 

Felix et Garfield existe en tant qu'objet, on peut donc à ce stade modifier leur variable nom, ou la lire.

Pour modifier un valeur d'un objet, comme pour une stucture (STRUCT) on utilise le mot .
Par exemple

   Felix.nom = "Félix";

Concrêtement, on a écrit : L'instance de la class CChat, Felix (l'objet Felix) a dans sa variable nom la faleur "Félix". A parir de maintenat, partout dans le code, si on veut lire la valeur du nom de l'objet Felix on ecrira :
   Felix.nom

 

 

Sans rentrer dans les détails, plus tard cela permettra de par exemple reagrder Felix avec des "lunette"s de type CCHATS qui seront communes pour tous les instances de CCHATS (ex Felix et Garfield)

 

 

Les méthodes ou l'encapsulation

 

 

Par rapport un structure, avec les classes, on va pouvoir facilement placer à l'intérieur des functions qui vont travailler sur les variables de la classe.

Par exemple, pour la classe CHATS, on ajoute une variable de type booléen : bEstFatigue
Tandis qu'une méthode (procedure à l'interieur d'une class) dort() modifiera la variable bEstFatigue


 

 

class CCHATS
    {
        public string nom;
        public Boolean bEstFatigue = false;
public void dort()
        {
            bEstFatigue = true;
        }
    }

 

 

Nous avons donc dans une meme "boite", des variables et des procédures qui travaillent sur des variables. Le comportement modifie l'état 'et ultérieurement on veraa que la modification de l'état génère un comportement.

 

Ce regroupement des variables et des méthodes qui travaillent sur ces variables est un des pilliers de la proragramamtion orientée objet, et se nomme : "l'encapsulation."

 

 

Créer un objet = l'instancier ou la méthode new et le constructor

 

 

Nous avons vu ci-dessus que le mot clé CLASS permet de définir, une classe, notre clacces CCHATS.
Pour créer un objet(= une instance d'une class) en C# et dans la plupart des langages de programmation orienté objet, on utilise le mot clef : new

On le voit dans l'exemple ci-dessus, Felix et Garfield sont "instanciés" avant de pour voir les utiliser.

En pratique, lorsqu'on utilise le mot new sur une class, on exécute une méthode particulière de la classe : le constructeur (constructor).
Inversement, le constructeur est une méthode (procédure d'une classe) qui sera appelée lorsqu'on crée une instance d'une classe (un objet).
Exactement comme pour n'importe quelle autre méthode d'une classe, son rôle principal sera de placer l'objet dans un état donné. Souvent par exemple, c'est dans le constructeur qu'on va trouver tout ce qui concerne l'initilisation de l'état de l'objet...

 

 

La syntaxe du constructeur

 

 

Dans le langage C#, le constructeur dans une class, est simplement une méthode public qui porte le même nom que la class.
A noter, qu'on peut très créer plusierus constructeurs pour chaque class, du moment que la signature des méthodes d'intanciation de l'objet (les constructeurs) soient différentes.
Ce qui signifie en clair, qu'elles aient des paramètres différents.

Reprenons note class CCHATS, et ajoutons 2 constructeurs :
Un premier constructeur qui ne prend pas de paramètres, et qui initialise l'état du bEstFatigue du chat, par défaut à : false
(entouré en bleu ci-dessous)

Un deuxieme constructeur qui prend en paramètre une varibale bouleene sur l'état du chat. Lors de sa création on place l'état du chat avec la variable reçue dans le constructeur
(entouré en rouge ci-dessous)





Dans notre programme d'exemple, Felix est créé avec le constructeur qui ne prend pas de paramètres (exemple bleu)
C"est donc le constructeur "bleu" qui sera appelé automatiquement, et la valleur bEstFatigue sera initalisée à false





Pour Garfield, c'est le constructeur qui prend pas en paramètres (exemple rouge) l'état du chat
C"est donc le constructeur "rouge" qui sera appelé automatiquement, et la valleur bEstFatigue sera affectée à la valeur reçue dans le pramètre de la méthode.

 

 

On résume : pour pouvoir utiliser un objet, il faut l'instancier au moyen de la méthode : new
Dans le langage C#, le constructeur d'un objet, est défini par une méthode dans la class qui porte le même nom que la class.
Par défaut les class en C# dérivent (la notion sera abordée ultétieurement) d'un première class et on n'est pas obligé de définit un constructeur si ce n'est pas utile.
On peut créer plusieurs constructeurs pour une même class, mais chaque constructeur doit avoir uen signature différente.

 

 

Et le destructeur

 

 

En programamtion orientée objet, tout comme il existe le "constructor" d'une classe, il existe le "destructor".
Le destructor étant la méthode appelée lorsqu'on détruit l'objet pour par emple libérer de la mémoire.
Si le langage C# possède effectivement la possibilité d'écrire des méthode de type destructor : dans le langage C# on parle de finaliseurs (finalisers), sur le même principe que les méthode constructor mais en plasant le signe ~ exemple : ~chcats()

Le framework .net s'occupe automatiquemetn de la destruction des classes qui ne sont plus utilisées et dans la pratique on n'utilise plus que les finaliseurs pour les cas de code non managés, tel que l'ouverture de fichier (filstream) qui necessite la fermeture du fichier qui sera par exemple traitée dans le finaliseur.

ArtOfLog ©2018 - Développement logiciel Microsoft- France et en Suisse -