• Aucun résultat trouvé

TP n°2 Héritage et polymorphisme

N/A
N/A
Protected

Academic year: 2022

Partager "TP n°2 Héritage et polymorphisme"

Copied!
2
0
0

Texte intégral

(1)

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

(2)

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.

Références

Documents relatifs

Méthode Comme nous avons pu le voir brièvement en cours, on peut appliiquer des fonctions à des inéquations pour obtenir de

Un périphérique d’entée permet d’entrer des informations à l’unité centrale et un périphérique de sortie permet de sortir des informations à

A chaque étape le joueur propose un nombre, l'ordinateur annonce si ce nombre est plus grand ou plus petit que l'original. Si le joueur trouve le nombre, l'ordinateur indique

6- Ecrire la méthode void avancerAvecConflit(int n, Pion pio), qui fait la même chose que la méthodes avancer de la classe Pion et qui prend compte de cette modification (la

Héritage simple : classe dérivée n’a qu’une seule classe de base Héritage multiple : classe dérivée a plus d’une classe de base.

Intéressons-nous maintenant au nombre x de façons de répartir les boules dans les n boîtes de telle sorte que chaque boîte contienne une boule et une seule!. 2

Dans cet exemple, la classe Cercle n’est pas abstraite car elle donne une définition à toutes les méthodes virtuelles pures dont elle a hérité; elle peut donc être instanciée, ce

• const C::`vftable' qui fournit l'implémentation de la fonction redéfinie GetInt() de la classe A et utilise la fonction de base SetInt() de la classe A,.. • const C1::`vftable'