USTL Licence Informatique 2005-2006
UE Programmation Orient´
ee Objet
TD
On fournit la d´efinition de l’interface suivante issue du paquetage interro1.sujet.
// fichier PeutParler.java
package interro1.sujet;
public interface PeutParler {
public void parle();
}
Ainsi que les diagrammes UML des classes Horlogeet Time issues du paquetage interro1.sujet.clock:
Horloge
-t:Time
+getTime():Time
Time
...
toString():String
La m´ethode toString de la class Time renvoie une chaˆıne de caract`eres repr´esentant l’heure sous la forme
"hh:mm:ss".
Toutes les classes que vous ´ecrirez par la suite devront appartenir `a un paquetage interro1.reponse.
Q 1 . On souhaite mod´eliser des grenouilles et donc pour cela d´efinir une classe Grenouille. Les instances
de cette classe ont pour seul attribut un nom (une chaˆıne de caract`eres).
Elles devront pouvoir ˆetre consid´er´ees comme ´etant ´egalement du “type” PeutParler et lorsqu’une
grenouille parle, elle se contente d’afficher le message "coa, coa" (System.out.println(...)).
Une grenouille est capable de sauter, vous d´
efinirez donc une m´ethode jump, qui prend pour param`etre la
longueur ldu saut en centim`etres (un entier). Cette m´ethode affiche le message "nom saute lcm" (ou
nom est le nom de la grenouille et lla valeur du param`etre).
Donnez le code JAVA permettant de d´efinir la classe Grenouille.
Q 2 . On souhaite mod´eliser des horloges `a coucou par une classe HorlogeACoucou. Une horloge `a coucou
est en fait une horloge qui “peut parler”. Cette classe satisfait donc l’interface PeutParler (une horloge
`a coucou qui parle affiche le message "coucou ! coucou !") et ses instances poss`edent un attribut
qui est une instance de la classe Horloge et dont la fonction est la gestion de l’heure.
Donnez le code JAVA permettant de d´efinir la classe HorlogeACoucou. Les instances de cette classe
doiventposs´eder une m´ethode afficheHeure qui affiche l’heure de l’horloge (sous la forme “hh:mm:ss”).
Q 3 . Donnez la suite d’instructions JAVA permettant (dans cet ordre) :
⊲de cr´eer une grenouille de nom kermit et de lui faire sauter 20cm.
⊲de d´efinir une horloge `a coucou et de lui faire afficher son heure.
Q 4 . Sur le mˆeme principe que l’horloge `a coucou (on retrouve donc les mˆemes attributs), on d´efinit la classe
HorlogeParlante. Lorsqu’elle parle une horloge parlante affiche le message “il est hh heures,
mm minutes, ss secondes” (o`u hh,mm et ss prennent bien entendu les valeurs d´efinies par l’attribut
de type Horloge).
Q 4.1. Donnez le diagramme UML de la classe HorlogeParlante et pr´ecisez ses d´ependances avec
les autres types.
Q 4.2. Donnez le code JAVA de la m´ethode parle() de la classe HorlogeParlante (pensez `a
utiliser l’annexe).
Q 5 . Un interrogateur est un objet capable de faire parler des objets du “type” PeutParler (des “parleurs”).
⊲Un interrogateur commande un nombre nde parleurs stock´es dans un tableau appel´e parleurs.
⊲Un interrogateur fait parler ses parleurs en invoquant une m´ethode faitParler.
Compl´
etez dans le code suivant les ‘‘...’’ :
public class Interrogateur {
private ... parleurs;
/** @param n nombre de parleurs */
public Interrogateur(int n) {
... ; // initialisation de l’attribut parleurs
}
/** fait parler chacun des parleurs,
*on suppose ’parleurs’ correctement initialis´
e et rempli */
public void faitParler() {
... compl´
eter ici
}
}
Annexe
Voici quelques extraits de la javadoc de m´ethodes de la classe java.lang.String (rappel : les caract`eres de
la chaˆıne sont indic´es `a partir de 0).
int indexOf(char c) Returns the index within this string of the first occurrence of the specified character,
returns -1 if none.
int indexOf(String str) Returns the index within this string of the first occurrence of the specified
substring, returns -1 if none.
int indexOf(char c, int fromIndex) Returns the index within this string of the first occurrence of
the specified character, starting at the specified index, returns -1 if none.
int indexOf(String str, int fromIndex) Returns the index within this string of the first occur-
rence of the specified substring, starting at the specified index, returns -1 if none.
char charAt(int index) Returns the character at the specified index.
String substring(int beginIndex) Returns a new string that is a substring of this string. The sub-
string begins with the character at the specified index and extends to the end of this string.
String substring(int beginIndex, int endIndex) Returns a new string that is a substring of
this string. The substring begins at the specified beginIndex and extends to the character at index
endIndex - 1. Thus the length of the substring is endIndex-beginIndex.