Académique Documents
Professionnel Documents
Culture Documents
TP N°4
Héritage et Polymorphisme
Gestion des Exceptions
1- Supprimez dans le code qui suit les lignes qui provoquent une erreur et indiquez si l’erreur se
produit à la compilation ou à l’exécution. Quel est le résultat de l’exécution qui s’affiche à l’écran après
suppression des instructions à problèmes ?
1
Exercice 2 : Qu'affiche le programme suivant ?
class A {
public String f() { return ("A");}
public String f(B obj) { return ("A et B");}
public String f(A obj) { return ("A et A");}
}
class B extends A {
public String f() { return ("B");}
public String f(B obj) { return ("B et B");}
public String f(A obj) { return ("B et A");}
}
1- On modélise une application devant servir à l’inventaire d’une bibliothèque. Elle devra traiter des
documents de nature diverse : des livres, des dictionnaires, des périodiques et des CDs. Tous les
documents possèdent un identifiant unique (le numéro d’enregistrement par ordre de création), un titre et
une date d’emprunt (potentiellement nulle).
A chaque livre est associé, en plus, un auteur, un éditeur et un nombre de pages. Les dictionnaires sont des
livres et ont pour attributs supplémentaires une langue, et un nombre de tomes. Les périodiques auront
comme propriétés le numéro de volume et la périodicité. Les CDs le nom de l’artiste.
On veut manipuler tous les articles de la bibliothèque au travers d’une même représentation : celle d’un
document.
Définissez les classes Document, Livre, Periodique, Dictionnaire, et CD. Définissez un constructeur pour
chacune des classes permettant d’initialiser toutes ses variables d’instance.
Redéfinissez la méthode toString() dans la classe Document, ainsi que dans les classes Livre, Dictionnaire,
Periodique et CD, et qui renvoie une chaîne de caractère décrivant un document, un livre, un dictionnaire,
un périodique ou un CD.
2
Définissez une classe ListeDeDocuments permettant de créer une liste vide de documents (qui sera
représenté comme un tableau), puis y adjoindre des fonctions permettant d’ajouter ou supprimer un
document (la suppression prenant en argument l’identifiant du document).
Dans la classe ListeDeDocuments définissez une méthode tousLesAuteurs() qui affiche le nombre
d’ouvrages(livre et dictionnaires), puis la liste des identifiants des documents de la liste, avec pour chacun
l’éventuel auteur.
Ajoutez alors dans la classe ListeDeDocuments une méthode tousLesDocuments() qui affiche
consécutivement la description de tous les documents.
Définissez une classe Bibliotheque réduite à une méthode main permettant de tester les classes
précedentes.
Définir des classes pour chacune de ces espèces, et des interfaces pour chacun de ces comportements.
Ensuite implémenter les différentes méthodes des interfaces dans chacune des classes de sorte
qu’a l’écran s’affiche le son produit par le comportement correspondant (par exemple un Cheval
qui court fait “tagada tagada”, un Perroquet qui parle fait “Coco est content” etc.).
Enfin, programmer une classe contenant la méthode main qui déclare des objets pour Monsieur Dupont,
son cheval, son perroquet et ses deux perruches, et fait entendre un échantillon du boucan produit par
tout ce petit monde.
3
Partie IV-Exceptions
Exercice 1 : [Utilisation des Exceptions]
La méthode parseInt de la classe Integer est spécifiée ainsi :
public static int parseInt(String s)
throws NumberFormatException
Parses the string argument as a signed decimal integer. The characters in the string must all be
decimal digits, except that the first character may be an ASCII minus sign '-' ('\u002D') to indicate a
negative value. The resulting integer value is returned, exactly as if the argument and the radix 10
were given as arguments to the parseInt(java.lang.String, int) method.
Parameters:
s - a String containing the int representation to be parsed
Returns:
the integer value represented by the argument in decimal.
Throws:
NumberFormatException - if the string does not contain a parsable integer.
Utilisez cette méthode pour faire la somme de tous les entiers donnés en argument de la ligne de
commande, les autres arguments étant ignorés.
Ecrire une classe Entreprise. Une entreprise a un nombre d’employés, un capital, un nom, une mission, et
une méthode public String mission() qui renvoie la mission de l’entreprise et qui déclare le lancement de
l’exception SecretMissionException. On aura également une méthode public int capital() qui renvoie le
capital et qui déclare le lancement de l’exception
NonProfitException.
Ecrire une classe EntrepriseSecrete qui hérite d’Entreprise et dont la méthode mission lance l’exception
SecretMissionException.
Ecrire une classe EntrepriseSansProfit qui hérite d’Entreprise et dont la méthode capital lance l’exception
NonProfitException.