Vous êtes sur la page 1sur 4

Ecole Nationale d'Ingénieur

d'Electronique Année Universitaire : 2021 - 2022


et de Télécommunication de Sfax Section 2ème Année GII
Programmation Orientée Objets
Matière
Java 2

TD 1 POO Java avancé

Exercice 1 :

Nous souhaitons écrire une application permettant d'afficher les courriers présents dans une boîte aux
lettres, de déterminer le nombre de courriers invalides, et de calculer le coût total d'affranchissement
des courriers.

Une boîte aux lettres peut contenir un nombre limité de courriers. Pour le cas de cet exercice, les
courriers peuvent inclure des lettres ou des publicités.

Un courrier est caractérisé par :

 son poids (en grammes) (de type double)


 le mode d’expédition (express ou normal) (de type boolean)
 son adresse de destination (de type String)

Une lettre est caractérisée par :

 son poids (en grammes)


 le mode d’expédition (express ou normal)
 son adresse de destination
 son format ("A3" ou "A4")(de type String)

Une publicité est caractérisée par :

 son poids (en grammes)


 le mode d’expédition (express ou normal)
 son adresse de destination

Voici les règles utilisées pour affranchir le courrier :

1. en mode d’expédition normal :


– le montant nécessaire pour affranchir une lettre dépend de son format et de son poids :
Formule : montant = tarif de base + 1.0 * poids (grammes), où le tarif de base pour une
lettre "A4" est de 2.50, et 3.50 pour une lettre "A3"
– le montant nécessaire pour affranchir une publicité dépend de son poids :
Formule : montant = 5.0 * poids (grammes)

2. en mode d’expédition express : les montants précédents sont doublés, quelque soit le type de
courrier;
3. seul le courrier valide est affranchi;
4. un courrier n’est pas valide si l’adresse de destination est vide;

1
5. Les publicités sont considérées comme des courriers commerciaux qui bénéficient d’une
déduction de 20% du montant d’affranchissement.
Partie 1

1-1Réaliser une classe Courrier, possédant :


o Un constructeur paramétré,
o Une méthode double affranchirNormal() permettant de retourner le montant nécessaire pour
affranchir le courrier en mode d’expédition normal.
o Une méthode double affranchir() permettant de retourner le montant nécessaire pour
affranchir le courrier.(elle appelle la méthode affranchirNormal() et retourne le double de ce
montant si le mode d’expédition est express)
o Une méthode boolean valide() pour savoir si un courrier est valide ou non
o Une méthode toString() permettant de retourner une chaîne décrivant les propriétés d'un
courrier selon le format indiqué ci-dessous si le courrier est valide ou la mention « Courrier
Invalide » sinon. (le prix indique le coût d'affranchissement) :
Exemple 1 d’affichage :

Lettre
Poids : 200.0 grammes
Express : oui
Destination : Ariana
Prix : 7.4 DT
Format : A3

Exemple 2 d’affichage :

Publicité
(Courrier invalide)
Poids : 3000.0 grammes
Express : non
Destination :
Prix : 0.0 DT

Les attributs de la classe Courrier sont déclarés « protected ».

1-2 Réaliser une interface Commercial offrant une méthode permettant de calculer la valeur de la
déduction. La méthode aura alors la signature suivante : double deduction()

1-3 Réaliser les classes Lettre et Publicité, en prévoyant pour chaque classe :
o un constructeur paramétré, et
o la redéfinition des méthodes nécessaires.
o On ajoute le type de courrier lors de la redéfinition de la méthode toString() dans les sous
classes (comme dans les exemples d’affichage en haut)
o Les attributs des classes Lettre et Publicité sont privés.

Partie 2

On se propose maintenant de réaliser une classe Boite caractérisée par la liste des courriers pouvant
être envoyé. Cette classe offre les méthodes suivantes :

2
 Constructeur paramétré par le nombre de courrier maximum pouvant être envoyé.
 Une méthode ajouterCourrier : permet d’ ajouter un nouveau courrier dans la boite
 une méthode affranchir() permettant de retourner le montant total d'affranchissement du
courrier de la boîte.
 une méthode courriersInvalides() calculant et retournant le nombre de courriers invalides
présents dans la boîte aux lettres.
 une méthode afficher() affichant le contenu de la boîte aux lettre (on indiquera alors quels
courriers sont invalides).

Partie 3 :

Écrivez un programme de test Poste qui :


(a) Crée une boîte aux lettres pouvant contenir 50 courriers,
(b) Crée des lettres et des publicités à la fois valides et invalides (Voir l’exécution ci-dessus pour les
exemples)
(c) Ajoute ces courriers à la boîte aux lettres,
(d) Affiche les courriers de la boîte aux lettres,
(e) Affiche le coût total d'affranchissement des courriers de la boîte aux lettres,
(f) Affiche le nombre de courriers invalides dans la boîte aux lettres.

Avec le programme principal fourni, vous devriez avoir une exécution telle que (le prix indique le
coût d'affranchissement):

Le montant total d'affranchissement est de 22.4


Lettre
Poids : 200.0 grammes
Express : oui
Destination : Ariana
Prix : 7.4 DT
Format : A3

Lettre
(Courrier invalide)
Poids : 800.0 grammes
Express : non
Destination :
Prix : 0.0 DT
Format : A4

Publicité
Poids : 1500.0 grammes
Express : oui
Destination : Manouba
Prix : 15.0 DT

Publicité
(Courrier invalide)
Poids : 3000.0 grammes
Express : non
Destination :
Prix : 0.0 DT

La boite contient 2 courriers invalides

3
Exercice 2 :

On souhaite créer une application orientée objet java qui permet de gérer des comptes bancaires.
Chaque compte est défini par un code et son solde. Il existe deux types de comptes, les comptes
courants et les comptes épargne. Un compte courant possède en plus un découvert. Un compte
épargne est un compte qui possède en plus un taux d’intérêts.

Chaque compte peut avoir plusieurs opérations. Il existe deux types d’opérations : Versement et
Retrait. Chaque opération est définie par son numéro, sa date et son montant.

L’application doit permettre de :


 Créer des comptes
 Effectuer un versement d’un montant dans un compte
 Effectuer un retrait d’un montant dans un compte, pour le compte Epargne, le retrait ne peut
s’effectuer que si le solde est supérieur au montant à retirer alors que pour le compte courant
le retrait ne peut s’effectuer à condition que le solde final ne soit inférieur à (-découvert).
 Effectuer un virement d’un montant d’un compte vers un autre compte
 Consulter le solde du compte
 Mettre à jour le solde du compte en tenant compte des intérêts, cette opération ne concerne
que les compte épargne.
 Consulter la liste des opération effectuées sur le compte
 Consulter le total des montants des versements
 Consulter le total des montants des retraits

Travail à faire :
1- Etablir un diagramme de classe
2- Ecrire le code java des classes :
Compte, CompteCourant et CompteEpargne,
Opération, Versement et Retrait
3- Ecrire le code java d’une application qui répond aux besoins spécifiés

Remarque : Vous pouvez utiliser la classe java.util.ArrayList


La classe ArrayList se trouve dans le paquetage java.util ; elle modélise une collection d'objets ; elle
est générique ce qui fait qu'on peut préciser le type des objets de la collection ; un ArrayList<Integer>
doit contenir uniquement des Integer.

La classe ArrayList possède les méthodes suivantes :

 size() retourne le nombre d'éléments rangés dans la liste ; les éléments de la liste sont rangés
dans des indices compris entre 0 et size() - 1 ;
 get(int i) retourne l'élément qui se trouve à l'indice i ;
 s'il s'agit de ArrayList<E>, add(E element) ajoute element à la fin de la liste et augmente
en conséquence la taille de celle-ci ;
 s'il s'agit de ArrayList<E>, set(int i, E element) remplace l'élément qui se trouve à
l'indice i par element ; on ne peut pas insérer un élément au-delà de l'indice size() - 1 ;.

Vous aimerez peut-être aussi