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: books
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

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.
  1. Instanciez les 6 livres suvants dans un tableau d'objets nommé livres

  2. 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.

  3. 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().
  1. 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.

  2. 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).

  3. 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