Représentation UML d’une classe

  1. Donnez une représentation UML de la classe PointPlan suivante :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
public class PointPlan {
    
    private float abscisse;
    private float ordonnee;
    
    public PointPlan() {
        this.abscisse = 0 ;
        this.ordonnee = 0 ;
    }
    public PointPlan(float x, float y) {
        this.abscisse = x ;
        this.ordonnee = y ;
    }
    public PointPlan(PointPlan p) {
        this.abscisse = p.getAbscisse() ;
        this.ordonnee = p.getOrdonnee() ;
    }
    private float getOrdonnee() {
        return this.ordonnee ;
    }
    private float getAbscisse() {
        return this.abscisse ;
    }
    public boolean egaleA (PointPlan p) {
        return (this.getAbscisse() == p.getAbscisse() 
                && this.getOrdonnee() ==  p.getOrdonnee()) ;
    }
    public void init() {
        Scanner input = new Scanner(System.in);
        System.out.print("Abscisse ? ") ;
        this.abscisse = input.nextInt();
        System.out.print("Ordonnée ? ") ;
        this.ordonnee = input.nextInt();
    }
    public void translate(float dx, float dy) {
        this.abscisse = this.abscisse + dx ;
        this.ordonnee = this.ordonnee + dy ;
    }
    public double distance() {
        return Math.sqrt(this.abscisse * this.abscisse +
                         this.ordonnee * this.ordonnee) ;
    }
    public String toString() {
        return "(" + this.getAbscisse() + "," + this.getOrdonnee() + ")";
    }
    public void affiche() {
        System.out.println(this.toString())  ;
    }
}
  1. Donnez une réprésentation UML de la classe Ampoule suivante :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Ampoule {

    private int couleur;
    private int puissance;

    public Ampoule() {
        this(0,0);
    }
    public Ampoule(int couleur, int puissance) {
        super();
        this.couleur = couleur;
        this.puissance = puissance;
    }
    public void allumer() {
        System.out.println("Allumer : + " + this.puissance + "lm à " + this.couleur + "K");
    }
    public void eteindre() {
        System.out.println("Eteindre : - " + this.puissance + "lm à " + this.couleur + "K");        
    }
    public int getCouleur() {
        return couleur;
    }
    public void setCouleur(int couleur) {
        this.couleur = couleur;
    }
    public int getPuissance() {
        return puissance;
    }
    public void setPuissance(int puissance) {
        this.puissance = puissance;
    }
    public String toString() {
        return "Led [couleur=" + couleur + ", puissance=" + puissance + "]";
    }
}

Javadoc et représentation UML

On dispose d’une classe Timerdont la Javadoc est donnée en annexe.

Relations entre classes

Pour chacun des énoncés suivants, donnez un diagramme des classes. Sauf indication contraire, ne représentez pas les attributs ni les opérations.

  1. Tout écrivain a écrit au moins une oeuvre.

  2. Un rectangle peut être défini par deux sommets qui sont des points (dans le cas où les côtés sont parfaitement verticaux et horizontaux). On construit un rectangle à partir des coordonnées de deux points. Il est possible de calculer sa surface et son périmètre, ou encore de le translater. Modélisez les attributs et les opérations.

  3. Les personnes peuvent être associées à des universités en tant qu’étudiants aussi bien qu’en tant que professeurs.

  4. Les cinémas sont composés de plusieurs salles. Les films sont projetés dans des salles. Les projections correspondantes ont lieu à chacune à une heure déterminée (on pourra utiliser une classe-association).

Attributs et associations

En plus de la classe Timer et de la classe Ampoule, on définit la classe Spot dont le code est défini ci-dessous :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class Spot {
    Ampoule amp;
    Timer t;

    public Spot(Ampoule amp, Timer t) {
        this.amp = amp;
        this.t = t;
    }
    public Spot(int couleur, int puissance, double frequence) {
        this(new Ampoule(couleur, puissance), new Timer(1 / frequence));
    }
    public void setFrequence(double frequence) {
        this.t.setPeriode(1 / frequence);
    }
    public double getFrequence() {
        return (1 / this.t.getPeriode());
    }
    public int getCouleur() {
        return this.amp.getCouleur();
    }   
    public int getPuissance() {
        return this.amp.getPuissance();
    }
    public void allumer() {
        this.t.desactiver();
        this.amp.allumer();
    }
    public void eteindre() {
        this.amp.eteindre();
    }
    public void clignoter() {
        this.t.activer();
        this.amp.allumer();
        this.t.utiliser();
        this.amp.eteindre();
        this.t.utiliser();
    }
    public void clignoter(long duree) {
        int nbClignotements = (int) (this.getFrequence() * duree);
        System.out.println("CLIGNOTEMENT pendant " + duree
                + "s avec une fréquence de " + this.getFrequence() + "Hz");
        for (int i = 0; i < nbClignotements; i++) {
            this.clignoter();
        }
    }
    public String toString() {
        return "Spot [frequence=" + getFrequence() + ", couleur="
                + getCouleur() + ", puissance=" + getPuissance() + "]";
    }
}

Élaboration d’un diagramme de classes complet

L’étude préliminaire de la gestion de la facturation dans une entreprise a permis de dégager les règles de gestion suivantes :


Module d’UML