LICENCE MASS 2002-2003

P.O.O : langage JAVA

 

Travaux dirigés

 


 

Série n°5 : Héritage-Interface

 


This document is the API specification for the Java 2 Platform, Standard Edition, version 1.3.1.


EXERCICE 1 : des Rectangles aux Parallélépipédes …

EXERCICE 2 : une Interface pour objets Zoomables

EXERCICE 3 : des applets

EXERCICE 4 : prendre en compte les évènements mousePressed dans une applet                   

EXERCICE 5 : prendre en compte les évènements keyPressed dans une applet

 


EXERCICE 1 : des Rectangles aux Parallélépipèdes …  Parallelepipede.java


Définir la classe Parallelepipede. Un parallélépipède est caractérisé par sa largeur, sa hauteur et sa profondeur. Ses trois dimensions sont des nombres réels strictement positifs. On suppose l’existence d’une classe Rectangle.java

Redéfinir la méthode String toString()

Définir la méthode double surface() qui retourne la surface du parallélépipède

Définir la méthode double volume() qui retourne le volume du parallélépipède

Définir la méthode void zoom(double c) qui augmente (c>1) ou diminue (0<c<1) la taille du parallélépipède

Utiliser la classe TestParallelepipede.java pour tester votre classe Parallelepipede. Vous devez obtenir le résultat suivant :

LARGEUR=3.0 : HAUTEUR=2.0 : PROFONDEUR=5.0

SURFACE=62.0

VOLUME =30.0

LARGEUR=6.0 : HAUTEUR=4.0 : PROFONDEUR=10.0

SURFACE=248.0

VOLUME =240.0

 


EXERCICE 2 : Une Interface pour objet Zoomable            EllipseZ.java            RectangleZ.java      Zoomable.java


a)      Définir une interface Zoomable.java qui spécifie le comportement de tous les objets que l’on peut agrandir ou bien réduire. C’est-à-dire les objets capables de répondre au message zoom(double) où le paramètre représente le coefficient d’agrandissement (c>1) ou de réduction (0<c<1)

b)     Modifier les classes Ellipse.java et Rectangle.java pour quelles implémentent l’interface Zoomable. Utiliser la classe TestZoomableA.java pour tester l’interface Zoomable ainsi que vos classes Ellipse et Rectangle. Vous devez obtenir le résultat suivant :

TABLEAU D'ELEMENTS Zoomables

[0] RectangleZ [LARGEUR=1.0 : HAUTEUR=2.0]

[1] RectangleZ [LARGEUR=3.0 : HAUTEUR=5.0]

[2] EllipseZ [petit rayon:2.0,grand rayon:3.0]

[3] EllipseZ [petit rayon:2.0,grand rayon:4.0]

TABLEAU D'ELEMENTS Zoomables

[0] RectangleZ [LARGEUR=2.0 : HAUTEUR=4.0]

[1] RectangleZ [LARGEUR=6.0 : HAUTEUR=10.0]

[2] EllipseZ [petit rayon:4.0,grand rayon:6.0]

[3] EllipseZ [petit rayon:4.0,grand rayon:8.0]

 

c)      Doit-on modifier les classes Cercle.java et Parallelepipede.java pour quelles implémentent également l’interface Zoomable ? Utiliser la classe TestZoomablebB.java pour tester l’interface Zoomable ainsi que vos classes Ellipse, cercle, Rectangle et Parallelepipede. Vous devez obtenir le résultat suivant :

TABLEAU D'ELEMENTS Zoomables

[0] RectangleZ [LARGEUR=1.0 : HAUTEUR=2.0]

[1] ParallelepipedeZ [LARGEUR=3.0 : HAUTEUR=5.0] [PROFONDEUR=7.0]

[2] EllipseZ [petit rayon:2.0,grand rayon:3.0]

[3] CercleZ [rayon:4.0]

TABLEAU D'ELEMENTS Zoomables

[0] RectangleZ [LARGEUR=2.0 : HAUTEUR=4.0]

[1] ParallelepipedeZ [LARGEUR=6.0 : HAUTEUR=10.0] [PROFONDEUR=14.0]

[2] EllipseZ [petit rayon:4.0,grand rayon:6.0]

[3] CercleZ [rayon:8.0]

 


EXERCICE 3 : des applets         htmlCosinus.html          TestOvalB.java             htmlOvalB.html


a)      On considère l’applet TestCosinus.java qui affiche le graphe de la fonction cosinus. Ecrire un fichier htmlCosinus.html qui permet de lancer l’exécution de cette applet.

 

b)     Dans cette question, il s’agit de « passer » des paramètres à une applet via un fichier html. Par exemple, l‘applet TestOvalA.java qui dessine une ellipse peut être exécuter grâce au  fichier htmlOvalA.html pour trois valeurs différentes de l’excentricité. Modifier cette application (fichiers TestOvalB.java et htmlOvalB.html) pour afficher trois ellipses en faisant varier la position du centre.

 


EXERCICE 4 : prendre en compte les évènements mousePressed dans une applet          TestMousePressed.java


a)      Ecrire une applet qui affiche, pour chaque pression sur le bouton de la souris, les coordonnées de la souris. Consulter la classe java.awt.event.MouseEvent. On pourra compléter le fichier source xTestMousePressed.java

b)     Compléter cette applet pour dessiner, à chaque pression, un ovale de dimension 2,2 aux coordonnées de la souris

c)      Compléter cette applet pour afficher, en plus des coordonnées, le temps correspondant à l’instant de la pression sur le bouton de la souris. Consulter la classe java.util.Date . On utilisera la méthode long getWhen(), héritée par la classe MouseEvent, qui retourne le temps en millisecondes (instant) de l’occurrence de l’événement

d)      Compléter cette applet pour afficher la durée (en secondes) entre deux pressions successives sur le bouton de la souris

 


EXERCICE 5 : prendre en compte les évènements keyPressed dans une applet                    TestKeyPressed.java


a)      Ecrire une applet qui dessine un rectangle plein ; pour chaque pression sur une des touches F1, F2 ou F3, la couleur du rectangle est modifiée. F1 augmente l’intensité du rouge, F2 celle du vert et F3 celle du bleu. Compléter le fichier source xTestKeyPressed.java

Consulter la classe http://java.sun.com/j2se/1.3/docs/api/java/awt/event/KeyEvent.html.

Utiliser, dans la classe http://java.sun.com/j2se/1.3/docs/api/java/awt/Color.html , le constructeur Color(int r, int g, int b)

Utiliser le fichier htmlKeyPressesA.html pour lancer votre applet

 

b)     Expérimenter le fichier htmlKeyPressedB.html qui permet d’exécuter deux instances de l’applet TestKeyPressed. Modifier le fichier source TestKeyPressed.java pour que les trois variables d’instance red, green et blue deviennent des variables de classe (static). Expérimenter cette nouvelle version de l’application avec appletviewer. Que remarquez-vous ?

 


Haut du document