TP n°2
Héritage et polymorphisme
Exercice 1 : Du polymorphisme en entreprise
Dans cet exercice on s’intéressera au système de facturation d'une société. Cette société établit des factures numérotées (en incrémentant partant de 1 et en réinitialisant à 1 le 1er janvier de chaque année) et datées, comprenant le nom du client, le prix total de la commande et, pour chaque article commandé, sa référence, son prix unitaire, le nombre d’articles commandés et le prix total pour cet article. Commencez par élaborer le diagramme des classes pour ce système de facturation.
Vous écrirez ensuite une classe TestFacture qui affiche une facture pour
• 10 stylos (choisissez ses caractéristiques)
• 15 ramettes de papier
• 2 lots de 5 stylos (différents des 10 stylos) et une autre facture pour
• 3 stylos
• 2 ramettes
pour 2 clients différents.
Le programme créera tous les objets nécessaires à l'affichage des 2 factures. Une facture s'affichera sur le modèle suivant (on ne demande pas d'affiner davantage le format d'affichage mais si vous pouvez faire mieux, n'hésitez pas !) :
--- Facture 12345 Client: Toto Date: 10 novembre 2012
Quant. Ref. Nom Marque PU PT 10 s1 Stylo Jade Watertruc 76.0 760.0 15 r1 Ramette haute qualité Clairefont 14.0 210.0 2 l1 Lot de 5 Stylo Marker 686.0 1372.0 Prix total facture : 2342.0 euros
---
Exercice 2 : Du polymorphisme dans les banques
1) Ecrivez une classe nommée Compte permettant de définir un compte en banque par son identificateur (une chaîne de caractères) et son solde (un réel). Ecrivez les constructeurs et les méthodes d'accès aux attributs. La méthode getNatureCompte retourne « compte simple ».
2) Ecrivez sa sous-classe CompteEpargne (héritant donc de la classe Compte). Cette
classe redéfinit la méthode getSolde pour la remplacer le solde original auquel sont ajoutées des intérêts. Cette classe possède deux attributs privés supplémentaires qui sont le taux d’intérêt annuel (réel et le nombre d’années d’épargne (entier). Écrivez les méthodes d’accès aux nouveaux attributs. La méthode getNatureCompte retourne « compte avec intérêt».
3) Saisissez ensuite le code de la classe ci-dessous (nommée TestCalculInterets).
Elle doit être compatible avec les deux classes Compte et CompteEpargne. Vérifiez-le ?
class TestCalculInterets {
public static void main(String [] args) {
Compte compte1 = new Compte ("A01", 1000f);
CompteEpargne compte2;
compte2 = new CompteEpargne ("E99", 1000f, 0.1f);
compte2.setAnnees(5);
Compte c;
String message = "L'argent qui dort ne rapporte rien :";
c = compte1;
message += "\n Solde compte " + c.getIdentifiant() + " : " + c.getSolde() + " "+c.getNatureCompte();
c = compte2;
message += "\n Solde compte " + c.getIdentifiant() + " : " + c.getSolde() + " "+c.getNatureCompte();
System.out.println(message);
} }
4) Ecrivez une méthode creerCompte permettant de saisir un compte ou un compte épargne avec les valeurs correspondantes. Cette méthode retournera systématiquement un objet de la classe Compte.
5) Utilisez la méthode précédente et vérifiez que les méthodes getSolde et getNatureCompte retourne le bon résultat en fonction de la classe de l’objet.