Exercice : classe simple Gestion d`une bibliothèque

publicité
Durée 2h
Mars 2007
Année 2006-2007
Epreuve de programmation par objets
2ième année
Polycopiés de Cours Autorisé. Autres Documents interdits. Calculatrices interdites.
Remarques :
• Lorqu’une question vous semble pouvoir être interprétée de plusieurs manières, indiquez de
quelle manière vous l’avez comprise.
• Si une fonction a été écrite lors d’une question précédente, vous pouvez l’utiliser par la suite sans
la réécrire.
Exercice : classe simple
1/ Ecrire en Java une classe Vecteur2D qui permet de manipuler les vecteurs 2D du plan comportant 2
coordonnées. Elle comportera les méthodes et constructeurs suivants :
• Un constructeur avec deux doubles indiquant l’abscisse et ordonnée
• Un constructeur pour initialiser à l’aide d’un autre vecteur
• Un constructeur par défaut (0 dans les deux champs)
• Les accesseurs aux champs x et y
• L’addition de deux vecteurs. Attention ; ne pas modifier les vecteurs que l’on additionne.
Cette méthode sera utilisée sous la forme v3.add(v1,v2) où v1,v2 et v3 sont des vecteurs.
• Une méthode retournant la norme (racine carrée de la somme x*x+y*y) d’un vecteur
• L’affichage du vecteur
• Une méthode retournant la multiplication du vecteur par une constante. Le vecteur initial ne
doit pas changer de valeur.
2/ Ecrire un programme principal qui effectue les actions suivantes.
• Création d’un vecteur vide v1, du vecteur v2 de coordonnées (1,0), du vecteur v3 identique à v2
et du vecteur v4 de coordonnées 1,1.
• Ajout de v2 à v4 dans v1 et affichage de v1
• Définition du vecteur v5 qui contiendra la multiplication de v3 par 2.
• Création d’un tableau de 10 vecteurs : les 5 premiers vecteurs seront initialisés en fonction de leur
position dans i dans le tableau avec i pour abscisse et 3*i pour ordonnée
• Affichage des 10 vecteurs. Indiquer quel sera le résultat affiché par votre programme ici.
Gestion d’une bibliothèque
On veut créer une application permettant la gestion d’une bibliothèque municipale. Cette
bibliothèque contient des romans, des BD, des revues. Tous les documents gérés par la bibliothèque ont
un titre (une chaîne de caractère) et un prix d’achat (un double). Les livres ont de plus un nombre de
pages (un entier) et un auteur (une chaîne de caractère). Les romans sont des livres. Les BD sont des
livres qui ont de plus un dessinateur (une chaîne de caractère). Une revue est un document qui a une date
de sortie, représentée par 1 entier pour le mois et un entier pour l’année.
Les fonctionnalités indispensables sont l’affichage du document et le calcul de coût "d’entretien"
des documents. Ce coût dépend du prix d’achat "p" et de la nature du document. Ce coût est p*1,186+6
pour un roman, p*p+5 pour une revue, p+2 pour une BD.
1/2
1/ Représenter graphiquement par un diagramme de classes (le diagramme d’héritage) les différentes
classes utiles pour représenter ces éléments. Précisez les champs et les méthodes.
2/ Ecrire en Java ces différentes classes, en respectant les notions d’encapsulation (privé ou public) et la
notion de réutilisabilité. Ces classes comporteront au moins :
• Un constructeur adéquat permettant de construire un objet avec les paramètres nécessaires
• Les accesseurs aux différents champs.
• Une méthode permettant l’affichage du contenu de l’objet
• Une méthode permettant de tester l’égalité de l’objet avec un document passé en paramètre
• Le calcul du coût d’entretien lorsque c’est utile
La bibliothèque est définie par une liste de documents qu’elle possède. Il faut pouvoir créer la
bibliothèque, ajouter un document à la bibliothèque, supprimer un document à la bibliothèque, afficher
l’ensemble des documents de la bibliothèque.
3/ Ecrire en Java une classe Bibliothèque comportant les méthodes :
• Un constructeur adéquat:
• Ajout d’un document
• Suppression d’un document
• Affichage de tous les documents de la bibliothèque
• Affichage de tous les auteurs des documents de la bibliothèque. S’il y a plusieurs documents
du même auteur, il pourra apparaître plusieurs fois.
• Nombre de documents présents dans la bibliothèque.
4/ Ecrire la fonction main qui effectue les actions suivantes :
• Création d’une Bibliothèque
• Ajout du roman "Les raisins de la colère", de J. Steinbeck, de 650 pages
• Ajout de la Bd "Trolls de Troy, Histoire trolles : tome 1" de S. Arleston (Scenario) et JeanLouis Mourier (Dessins), 48 pages
• Ajout du roman "La fée carabine" de D. Pennac, 306 pages
• Ajout de la revue "L’enserg en folie", de mars 2007".
• Affichage de tous les documents de bibliothèque
• Suppression de la revue "L’enserg en folie", de mars 2007".
5/ On ajoute une fonctionnalité de sauvegarde de la bibliothèque dans un fichier. Comment faites-vous,
que modifiez vous (Ne pas réécrire toutes les classes)? Ecrivez cette méthode
6/ On veut ajouter la gestion des CD, définis par un titre, un auteur et une durée. Le coût est défini par
p+3,8. Quelles sont les modifications à faire dans les classes déjà réalisées ? Ecrivez en Java la ou les
classes utiles ?
7/ La notion d’auteur représenté par une chaîne de caractère est un peu limité : un auteur est un individu
qui a un nom (une chaîne de caractère) et un age (un entier). De même pour un dessinateur. Ecrivez en
Java les classes utiles pour représenter les auteurs et dessinateurs. Que devrez-vous modifier dans les
classes précédentes (ne réécrivez pas toutes les classes) ? En particulier, expliquez comment
fonctionnera la méthode d’affichage de tous les auteurs (question 3) et écrivez les classes et les méthodes
utiles pour représenter et manipuler les auteurs.
2/2
Téléchargement