POO_S2_TD2.pdf

Exercice 1

Soit la classe suivante décrivant une montre :

public class Montre {
    private int heure;
    private int minute;

    public Montre() {
        this.heure = 0;
        this.minute = 0;
    }

    public Montre(int h, int m) {
        this.heure = h;
        this.minute = m;
    }

    public int getHeure() {
        return this.heure;
    }

    public int getMinute() {
        return this.minute;
    }

    public void setHeure(int h) {
        this.heure = h;
    }

    public void setMinute(int m) {
        this.minute = m;
    }

    public static void main(String[] args) {
        Montre m1; // 1
        m1 = new Montre(); // 2
        Montre m2; // 3
        m2 = new Montre(13, 42); // 4
        Montre m3 = m2; // 5
        System.out.println(m2.getHeure()); // 6
        System.out.println(m2.heure); // 7
        System.out.println(m3.getHeure()); // 8
        m1.setMinute(21); // 9
        m1.minute = 22; // 10
        System.out.println(m1.getMinute()); // 11
        m1 = m2; // 12
    }
} // fin classe Montre
  1. Préciser quelles sont les variables d'instances, les constructeurs, les méthodes d'accès en lecture, et les méthodes d'accès en écriture.
  2. Préciser les services que rend cette classe (donner la vue publique).
  3. Dessiner les références, les instances et leurs liens créés par les instructions (1) (2) (3) (4) et (5).

Untitled

  1. Qu'affiche les instructions (6), (7) et (8) ? Expliquer pourquoi…
  2. Qu'affiche l'instruction (11) ?
  3. Redessiner les liens entre instances et références après l'instruction (12). Que devient l'instance qui était référencée par m1 avant cette instruction ?

Untitled


Soit la classe suivante :

public class TestMontre {
    public static void main(String[] args) {
        Montre m1 = new Montre(); // 1
        Montre m2 = new Montre(13, 42); // 2
        System.out.println(m2.getHeure()); // 3
        System.out.println(m2.heure); // 4
        m1.setMinute(21); // 5
        m1.minute = 22; // 6
        System.out.println(m1.getMinute()); // 7
    } // fin main
} // fin classe TestMontre
  1. Quelles instructions sont refusées par le compilateur et pourquoi ?
    1. La 4 est refusée car les variables de la classe montre extérieur à cette classe sont private.
    2. La 6 est refusée pour les mêmes raisons que la 4.
  2. Qu'en déduisez-vous concernant le test d'une classe ?