• Aucun résultat trouvé

Java DUT 1 Feuille TD6 Université Paris-Est Marne-la-Vallée

N/A
N/A
Protected

Academic year: 2022

Partager "Java DUT 1 Feuille TD6 Université Paris-Est Marne-la-Vallée"

Copied!
2
0
0

Texte intégral

(1)

Java DUT 1 Feuille TD6 Université Paris-Est Marne-la-Vallée

Exercice 1.—

On souhaite modéliser la gestion d’un catalogue de livres. Un livre peut figu- rer ou non dans le catalogue et s’il figure il peut figurer en plusieurs exemplaires.

Le libraire doit pouvoir ajouter et enlever un exemplaired’un livre du cata- logue et aussi consulter le nombre d’exemplaires présents en stock d’un livre donné.

a) On reprend la classe Bookde la feuille TD4 pour réprésenter des livres.

Chaque livre possède un titre (title) et un auteur (author) qui sont des chaînes de caractères, c’est-à-dire des objetsString. Les champs seront privateetfinal.

b) Écrire une interfaceBookCatalogcomprenant des méthodes

— void add(Book b)

— void remove(Book b)

— int getNumber(Book b)

c) Écrire dans la classeBookune méthodepublic boolean equals(Object o) renvoyant true si deux Book ont les même champs et false sinon (voir TD4). Écrire une méthodepublic int hashCode()renvoyant un entier. Deux Book égaux par equals devront avoir le même hashCode.

d) Écrire une classe BookCatalogImplemementationimplémentant l’inter- face BookCatalog. Le Catalog sera représenté par une Map, un objet catalogde la classeHashMap<Book,Integer>(voir la documentation de l’interface Map et de la classe HasMap). Une telle Map est une table de correspondance indiquant pour chaque Book son nombre d’exemplaires.

— Écrire un constructeur dansBookCatalogImplementation.

— Écrire la méthodevoid add(Book b)qui permet d’ajouter un exem- plaire d’un livre. Si le livre n’était pas dans la Map, il sera ajouté en un exemplaire.

— Écrire la méthode int getNumber(Book b) qui renvoie le nombre d’exemplaire d’un livre. On renverra 0 si le livre n’est pas présent dans le catalogue.

— Écrire la méthode void remove(Book b) qui permet de retirer un exemplaire d’un livre. Si le livre apparaît avec un nombre d’exemlaire 0, il sera retiré de la Map.

— Écrire une méthodetoStringdansBookCatalogImplentation.

e) Écrire une classe BookCatalalogTest avec un méthode main et tester vos classes.

f) A quel moment sont utilisées les méthodesequalsethashCodedeBook? Pourquoi est-il important que les champs de Book soientfinal? g) Ajouter une méthode size renvoyant la taille d’un catalogue qui est le

nombre total d’exemplaires présents dans le stock. Dans quelles classes faut-il la mettre ?

h) Ajouter dans la classe Bookune gestion d’exception capturable pour que la création d’un livre avec un titre null lève une exception. Comment modifier les autres classes et méthodes ?

Exercice 2.—

1

(2)

Ecrire une classeWordCountcontenant une méthode main qui prend en ar- gument une suite de mots entrés au clavier et retourne la liste des mots avec leur nombre d’occurrences.

Par exemple, si on lance

java WordCount toto titi toto tutu tata titi titi la sortie obtenue sera

tata 1 titi 3 tutu 1 toto 2

2

Références

Documents relatifs

f) Écrire une méthode contains(Pixel p) qui renvoie true si le point p passé en argument est un des points du polygone. Que doit ajouter dans la classe Pixel pour que cette

Écrire une classe ArrayStack qui implémente l’interface Stack. La classe ArrayStack contiendra un tableau table d’entiers dont la taille maximale est une constante MAX comme

La classe Index sera utilisée par la classe IndexTest suivante public class IndexTest {.. public static

Aide. Les arguments mot1 et mot2 seront les éléments d’indice 0 et 1 du tableau args qui contient des chaînes de caractères. Pour mettre une chaîne de caractères en majuscule,

d) Écrire dans la classe Segment une méthode toString permettant d’afficher les deux points d’un segment. On utilisera la méthode toString de Pixel selon la technique de

pour que le programme lise au clavier une chaîne de caractères puis l’af- fiche en la mettant en majuscule. On trouvera la documentation sur la classe String du packetage java.lang

c) Écrire une classe SegmentTest destinée à tester les classes Segment et Pixel. Elle contiendra une méthode main où on crée un segment s1 avec le premier constructeur et un segment

On définit un classe Polygon qui représente un polygone défini par une suite de points. Les Polygon peuvent avoir un nombre différent de points mais on veut que le nombre maximal