• Aucun résultat trouvé

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

N/A
N/A
Protected

Academic year: 2022

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

Copied!
2
0
0

Texte intégral

(1)

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

Exercice 1.—

On définit un classeBook pour réprésenter des livres. Chaque livre possède un titre (title) et un auteur (author) qui seront des chaînes de caractères, c’est-à-dire des objetsString.

a) Écrire un constructeur pour la classeBook. Les champs serontprivate.

b) Écrire une classeBookTestavec une méthodemainpour tester le construc- teur et les méthodes deBook. Testez le constructeur.

c) On considère que les champs d’un Book ne seront jamais changés une fois celui-ci créé. Quels sont les accesseurs que l’on doit mettre ? Écrivez les.

Que doit on ajouter aussi ?

d) Écrire un autre constructeur qui prend juste untitle et pas d’author.

On initialisera le champauthoravec "no author" dans ce cas. Comment le compilateur fait-il pour savoir quel constructeur appeler ?

e) Comment faire maintenant pour que le second constructeur appelle le premier ? On utilisera l’appelthis()placé en tête du constructeur de la façon suivante.

public Book(String title) { this(title, "no author");

}

f) On stocke des Book dans un tableau qui s’agrandit automatiquement en utilisant la classejava.util.ArrayList. Regardez la documentation de la méthodeindexOfdans cette classe et exécutez le code suivant : public static void main(String[] args){

Book b1 = new Book("Les fruits du Congo", "Alexandre Vialatte");

Book b2 = new Book("Les fruits du Congo");

Book b3 = new Book("Les fruits du Congo", "Alexandre Vialatte");

Book b4 = new Book("Lolita", "Vladimir Nabokov");

ArrayList<Book> list = new ArrayList<Book>();

list.add(b1);

list.add(b4);

System.out.println(list.indexOf(b2));

System.out.println(list.indexOf(b3));

}

g) Quelle méthode de Book est appelée par indexOf? Modifier la classe Book pour queindexOffonctionne correctement.

Pour cela écrira dans la classeBookune méthodepublic boolean equals(Object other)renvoyanttruesi deux Book ont les même champs etfalsesinon.

Pourquoi ajoute-t-on le tag@Override? On complètera le code ci-dessous.

@Override

public boolean equals (Object other){

if (other==null) return false;

Book b = (Book)other ; ...

} }

1

(2)

h) Qu’affiche le code ci-dessous ?

public static void main(String[] args){

Book b = new Book("Lolita", "Nabokov");

Book c = new Book(null, null);

ArrayList<Book> list = new ArrayList<Book>();

list.add(b);

System.out.println(list.indexOf(c));

}

Où se situe le problème ?

i) Corrigez le problème en empêchant la construction d’un Book avec des champsnull. On utilisera la méthodejava.util.Objects.requireNonNull de la façon suivante :

public Book(String title, String author) { this.title = Objects.requireNonNull(title);

this.author = Objects.requireNonNull(author);

}

2

Références

Documents relatifs

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

g) Sachant qu’un carnivore à besoin du quart de son poids en viande par semaine, écrire une méthode getMeatForAWeek dans la classe Animal qui renvoit la quantité de viande

— É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

Ecrire des classes et méthodes pour lire un fichier texte et afficher ensuite un histogramme du texte : la liste des mots présents dans le texte et pour chacun d’eux, leur