DY

DelahayeYourself

modules / S2102 /

TP06: Le mot clé static

Attributs statiques

Schéma UML

Reprenons notre diagramme UML pour la classe Dinosaur, l'attribut specie est désormais déclaré en statique.

Dinosaur UML class diagram
Diagramme UML de classe pour nos dinosaures
Modification de notre classe

Il faut donc modifier notre classe C# pour utiliser l'attribut specie en tant qu'attribut de classe et non plus en tant qu'attribut d'instance.

public class Dinosaur
{
    protected string name;
    protected static string specie;
    protected int age;

    public Dinosaur(string name, int age, string specie)
    {
        this.name = name;
        this.age = age;
        Dinosaur.specie = specie;
    }
    // Attention encore une fois la classe est ici tronquée, il faut donc bien modifier notre fichier source en remplaçant les occurences de this.specie par Dinosaur.specie
}
Utilisation de notre nouvelle classe

Une fois cela fait, dans le main de votre programme lancez les instructions suivantes:

Dinosaur henry = new Dinosaur("Henry", 11,"Diplodocus");
Console.WriteLine(henry.SayHello());
Dinosaur louis = new Dinosaur("Louis", 12, "Stegausaurus");
Console.WriteLine(louis.SayHello());
Console.WriteLine(henry.SayHello());
  1. Constatez vous un problème ?
  2. Quel est son origine ?

Nous verrons dans le prochain TP comment corriger ce problème.

Méthodes statiques

Vous devriez maintenant vous en être aperçu, nous avons utiliser des méthodes statiques depuis le début de ce module sans même le savoir.

Dans cette partie, il vous est demandé de créer une classe Laboratoire qui permet de créer des dinosaures à la demande.

Schéma UML

Voici le diagramme UML pour la classe Laboratoire

Laboratory UML class diagram
Diagramme UML de classe pour notre laboratoire
Implémentation, Test unitaires et utilisation
  1. Créez le(s) test(s) unitaire(s) pour valider le fonctionnement de notre classe laboratoire;
  2. Implémentez celle-ci (pensez au namespace, etc.);
  3. Utilisez la classe laboratoire au sein de notre programme pour créer quelques dinosaures.