sujet - LIFL

Transcription

sujet - LIFL
USTL Licence Informatique
2006–2007
UE Programmation Orientée Objet
TD
On fournit la définition de l’interface suivante issue du paquetage exercice.sujet.
// fichier PeutParler.java
package exercice.sujet;
public interface PeutParler {
public void parle();
}
Ainsi que les diagrammes UML des classes Horloge et Time issues du paquetage exercice.sujet.clock :
Horloge
-t:Time
+getTime():Time
Time
...
toString():String
La méthode toString de la class Time renvoie une chaı̂ne de caractères représentant l’heure sous la forme
"hh:mm:ss".
Toutes les classes que vous écrirez par la suite devront appartenir à un paquetage exercice.reponse.
Q 1 . On souhaite modéliser des grenouilles et donc pour cela définir une classe Grenouille. Les instances
de cette classe ont pour seul attribut un nom (une chaı̂ne de caractères).
Elles devront pouvoir être considérées comme étant également 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éfinirez donc une méthode jump, qui prend pour paramètre la
longueur l du saut en centimètres (un entier). Cette méthode affiche le message "nom saute l cm" (ou
nom est le nom de la grenouille et l la valeur du paramètre).
Donnez le code JAVA permettant de définir la classe Grenouille.
Q 2 . On souhaite modéliser des horloges à coucou par une classe HorlogeACoucou. Une horloge à coucou
est en fait une horloge qui “peut parler”. Cette classe satisfait donc l’interface PeutParler (une horloge
à coucou qui parle affiche le message "coucou ! coucou !") et ses instances possèdent 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éfinir la classe HorlogeACoucou. Les instances de cette classe
doivent posséder une méthode 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éer une grenouille de nom kermit et de lui faire sauter 20cm.
⊲ de définir une horloge à coucou et de lui faire afficher son heure.
Q 4 . Sur le même principe que l’horloge à coucou (on retrouve donc les mêmes attributs), on définit la classe
HorlogeParlante. Lorsqu’elle parle une horloge parlante affiche le message “il est hh heures,
mm minutes, ss secondes” (où hh, mm et ss prennent bien entendu les valeurs définies par l’attribut
de type Horloge).
Q 4.1. Donnez le diagramme UML de la classe HorlogeParlante et précisez ses dépendances avec
les autres types.
Q 4.2. Donnez le code JAVA de la méthode parle() de la classe HorlogeParlante (pensez à
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 n de parleurs stockés dans un tableau appelé parleurs.
⊲ Un interrogateur fait parler ses parleurs en invoquant une méthode faitParler.
Complétez 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é et rempli */
public void faitParler() {
... compléter ici
}
}
Annexe
Voici quelques extraits de la javadoc de méthodes de la classe java.lang.String (rappel : les caractères de
la chaı̂ne sont indicés à 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 occurrence 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 substring 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.