TD 3 : Classes, instances et static

Conception objet

Voici une liste de termes. Dans cette liste identifiez des classes, des relations entre ces classes et les instances (objets) de ces classes, et éventuellement des attributs de ces classes. Ce travail est bien sur un peu subjectif, plusieurs solutions sont possibles.

  • Rolls-Royce
  • humain,
  • Rantanplan
  • moi,
  • Bill Gates
  • chien
  • voiture
  • Médor
  • Deux-chevaux
  • animal
  • Fred
  • ma 2CV
  • patron
  • employé
  • le labrador de Fred
  • la Rolls-Royce de Bill Gates

Attributs et méthodes statiques

Les attributs et les méthodes statiques d'une classe sont communs à toutes les instances de cette classe. Voici un exemple de fonctionnement :

class Test
{
    static int s=0;
    int a=0;
           void methode()        { System.out.println("methode: a vaut " + a + " s vaut " + s);}
    static void methodeStatique(){ System.out.println("methodeStatique: s vaut " + s);}
}
 
class StaticExemple
{
    public static void main(String args[])
    {
        Test o1=new Test();
        Test o2=new Test();
        Test o3=new Test();
        o1.s=5;
        o1.a=10;
        System.out.println("o2.s:"+o2.s); // ceci affiche o2.s:5
        System.out.println("o2.a:"+o2.a); // ceci affiche o2.a:0
        // en general on  ecrira directement:
        Test.s=5;
        // par contre on on ne peut pas ecrire Test.a=10
 
        o3.methodeStatique(); // ceci affiche methodeStatique: s vaut 5
    }
}

Dans les questions suivantes nous tiendrons compte des conventions de nommage (en particulier les minuscules/majuscules) utilisées dans l'API Java.

  • La méthode méthode random vue en TP est-elle statique?
  • La méthode méthode drawLine vue en TP est-elle statique?
  • Pourrait-on ajouter la méthode suivante à la classe Test :
static void methodeStatique2()
{
    System.out.println("methodeStatique2: a:"+a+" s:" +s);
}
  • Si on écrit une classe Point représentant des points à deux dimensions, est-ce que les champs x et y pourraient être statiques?

Compteur de lapins

Étendez la classe Lapin du TD précédent de manière à ce qu'elle prenne en compte le nombre total de lapins qui ont été créés. La classe s'utilisera de la façon suivante :

class CompteurDeLapins
{
    public static void main(String args[])
    {
        Lapin roger  = new Lapin("Roger");
        Lapin bugs   = new Lapin("Bugs");
        Lapin eusebe = new Lapin("Eusebe");
 
        System.out.println(Lapin.nombreDeLapinsCrees);
    }
}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>