TD 2 - Classes pour les livres
Pour définir une classe qui représente les livres, nous devons fixer
quelles sont les caractéristiques qu'il nous importe de considérer. Il se
pourrait que nous ne nous intéressions pas à tout ce qui, d'une manière
générale, permettrait de caractériser un livre.
Par exemple, ici, nous ne nous intéressons qu'aux apspects suivants:
- le titre,
- le ou les auteurs,
- l'éditeur,
- le nombre de pages,
- un numéro ISBN-10.
Le titre, le ou les auteurs,
et l'éditeur seront des objets Java de class
String. Le nombre de pages sera
un type primitif Java entier simple int.
Le numéro ISBN-10 est un numéro formé de quatre segments,
trois segments de longueur variable et un segment de longueur fixe, la longueur
totlae de l'ISBN comprend dix chiffres (le 1er Janvier 2007, la longueur a
été étendue à 13 chiffres en ajoutant un groupe initial de 3 chiffres).
Les quatre segments d'un code ISBN-10 sont: A-B-C-D
- A: 0 ou 1 pour les productions de pays anglophones (Etat-Unis,
Royaume-Uni, etc), 2 pour les pays francophones (France, Luxembourg, etc),
3 pour les pays germanophones (Allemagne, Autriche, etc), ...
Sa longueur est variable: un caractère pour les zones ayant une production
abondante (0,1,2,etc), plusieurs pour les zones ayant une production moins
abondant, jusqu'à 5 caractères au maximum. Par exemple, pour les
publications faites au Singapour, le code est 9971. Les organisations
internationales ont un code réservé: 92.
Ce premier segment ne présume pas de la langue de rédaction de l'ouvrage,
ainsi des ouvrages publiés en France avec un code 2 peuvent-être
rédigés en Anglais.
- B identifie l'éditeur de la publication. Sa longueur est variable
au sein de chaque groupe linguistique: d'un caractère pour les éditeurs
ayant une production abondante à 7 caractères pour les éditeurs ayant une
production moindre.
- C correspond au numéro d'ordre de l'ouvrage chez l'éditeur qui
l'atrribue normalement séquentillement (sauf en cas de partage de code
résultant d'un accord entre éditeurs). Sa longueur est, elle aussi,
variable: d'un caractère pour les éditeurs ayant une production peu
abondante, à 6 caractères pour les éditeurs ayant une production abondante.
On complète cette zone par des zéros de telle façon que la longueur totale
soit égale à 10.
- D est un code clé de vérification sur un caractère calculée à partir
des chiffres précédents. Outre les chiffres de 0 à 9, la clé de contrôle
peut prendre la valeur X, qui représente le nombre 10.
Préparation
Créez un dossier Livres dans votre espace de travail
(par exemple Prog_Imp2).
Création de la class Livres
Recopiez le code de la class Livres dans un fichier
nommé livre.java et placez-le dans le dossier
Livres.
/** Classe représentant un livre par ses attributs. */
class Livre {
// Les attributs d'un livre
String titre;
String auteur;
String editeur;
int nbPages;
ISBN isbn;
/** Le constructeur de livre */
public Livre(String titre, String auteur, String editeur, int nbPages,
ISBN isbn) {
// Instruction d'initialisation
// du livre en cours de construction
this.titre = titre;
this.auteur = auteur;
this.editeur = editeur;
this.nbPages = nbPages;
this.isbn = isbn;
}
}
Création de la class ISBN
Recopiez le code de la class ISBN dans un fichier
nommé isbn.java et placez-le dans le dossier
Livres.
/** Classe représentant un ISBN-10 par ses attributs. */
class ISBN {
// Les attributs d'un ISBN-10 :
int groupeA; // le groupe A (pays)
int groupeB; // le groupe B (éditeur)
String groupeC; // le groupe C (numéro d'ordre)
String groupeD; // le groupe D (clé)
/** Le constructeur d'un ISBN-10 */
public ISBN(int groupeA, int groupeB, String groupeC, String groupeD) {
// Instructions d'initialisation
// de l'ISBN-10 en cours de construction
this.groupeA = groupeA;
this.groupeB = groupeB;
this.groupeC = groupeC;
this.groupeD = groupeD;
// A compléter par la suite
}
}
Algorithmiques sur les classes Livre et ISBN
Pour ces algorithmes, vous commencerez par créer la classe
MainLivres contenant un point de lancement d'application
Java (méthode main) ainsi qu'un première méthode de test
test1() qui fera appel à des algorithmes définis dans des
méthodes spécifiques. Réaliser ces différents tests en complétant la méthode
test1() au fur et à mesure.
-
Instanciez les 6 livres suvants dans un tableau d'objets nommé
livres
- livre 1: Fourmis sans ombre - Le livre du haïky de
Maurice COYAUD, éditeur Phébus, ISBN: 2-85940-017-6,
320 pages.
- livre 2: Conscience et environnement de
Pierre RABHI, éditeur Le Relié, ISBN: 2-354-90023-6,
233 pages.
- livre 3: L'argent des Français: Les chiffres et les mythes
de Jacques MARSEILLE, éditeur Perrin, ISBN: 2-262-02253-2,
394 pages.
- livre 4: Obama face à la crise. 100 jours pour sauver
la planète de
François DURPAIRE et Olivier RICHOMME, éditeur Demopolis,
ISBN: 2-354-57026-2,
141 pages.
- livre 5: Barack Obama - L'anti-modèle français de
Jean-Baptiste ONANA, éditeur Temps, ISBN: 2-84274-471-7,
159 pages.
- livre 6: Barack Obama - Ou le nouveau rêve américain de
Guillaume SERINA, éditeur Archipel, ISBN: 2-8098-0077-7,
251 pages.
-
Modifiez la méthode test1() pour qu'elle affiche
les livres du tableau livres chacun sur une ligne
et précédés de "Livre N:" comme suit:
Livre 1: "Fourmis sans ombre - Le livre du haïky"
Maurice COYAUD, éditeur Phébus, 320 pages,
ISBN: 2-85940-017-6.
Pour cela, écrivez trois méthodes capables de fournir: une
représentation textuelle d'un ISBN-10 pour la première, d'un livre
dans une chaîne pour la deuxième et de fournir une représentation
textuelle d'un tableau de livres pour la dernière, soit:
public static String isbnToString(Livre livre)
public static String livreToString(Livre livre)
public static String setlivreToString(Livre[] setLivres)
Compilez et testez votre programme.
-
Modifiez le constructeur d'objets ISBN pour qu'il ajoute le nombre de
zéro (0) nécessaires au groupe C pour que l'ISBN compte toujours
au moins 10 caractères. Notez si chaine est un
String, l'expression Java
chaine.length() en retourne la longueur (i.e.,
le nombre de caractères).
Testez votre programme en construisant les ISBN des livres 1, 3 et 6
sans fournir les zéros de gauche du groupe C.
Autres algorithmes sur les classes Livres et ISBN
Réalisez les tests des méthodes suivantes dans la méthodes
test2().
-
Ecrivez la méthode statique livresDe --- dans
MainLivres --- qui, sur la base d'un tableau
d'objets Livre fourni, retourne un tableau
des livres d'un auteur donné par ses nom et prénom. Soit
public static Livre[] livresDe(Livre[] setLivre, String nom, String prenom)
Notez si chaine et sous-chaine
sont des String, l'expression Java
chaine.contains(sous-chaine) retourne
un booléen indiquant la présence de sous-chaine
dans chaine. Si chaine
est un String, l'expression Java
chaine.toLowerCase() retourne la chaîne en
minuscules.
-
Donnez la signature puis écrivez une méthode statique --- dans
MainLivres --- qui, sur la base d'un tableau
d'objets Livre fourni, retourne un tableau
des livres appartenant à une zone de pays (groupe A)
et à un numéro d'éditeur donnés (groupe B).
-
Complétez test2() pour qu'elle affiche les livres
francophones de Olivier Richomme sur "Obama" chez l'éditeur numéro 354.
Dernière mise à jour :
11/02/2013
Pour tout commentaire : thang [arobase] ibisc [point] fr