Vous êtes sur la page 1sur 5

Programmation Orientée Objet avec Java

TP N°3
Héritage et polymorphisme

Objectif du TP :

▪ Utiliser l’héritage
▪ Utiliser le polymorphisme
▪ Développer une première application pour la gestion des comptes bancaires
et une deuxième pour le calcul des salaires des employés d’une entreprise.

Organisation :
Créez un répertoire TP4 dans votre répertoire Java créé lors du TP1. Comme ce TP contient 2
exercices, créez 2 sous répertoires, dans TP4 : EXO1, EXO2.

Exercice1 : Comptes Bancaires

• Un compte bancaire possède à tout moment une donnée : son solde. Ce solde doit
toujours être positif (compte créditeur).
• Chaque compte est caractérisé par un code incrémenté automatiquement.
• A sa création, un compte bancaire a un solde nul et un code incrémenté.
• Il est aussi possible de créer un compte en précisant son solde initial.
• Utiliser son compte consiste à pouvoir y faire des dépôts et des retraits. Pour ces deux
opérations, il faut connaître le montant de l'opération.
• L'utilisateur peut aussi consulter le solde de son compte par la méthode toString().
• Un compte Epargne est un compte bancaire qui possède en plus un champ
« TauxInterêt =6» et une méthode calculIntérêt() qui permet de mettre à jour le solde
en tenant compte des interêts. Le taux d’intérêt est le même pour tous les comptes et
peut changer au cours du temps. Une opération de virement d’un compte Epargne vers
un autre compte Epargne s’effectue sans frais, par contre un virement d’un compte
Epargne vers un compte payant est soumis à des frais. Le montant de ces frais est de
20dh et peut changer au cours du temps. La méthode effectuerVirement(Compte cpte,
double montant) réalise une opération de virement en mettant à jour les soldes des
comptes impliqués. La gestion d’un compte Epargne n’est soumise à aucun frais.
• Un ComptePayant est un compte bancaire pour lequel chaque opération de retrait et de
versement est payante et vaut 5 dh. Ce montant peut changer au cours du temps. La
gestion d’un compte payant est soumise à des frais de gestion qui peuvent changer au
cours du temps et s’élèvent actuellement à 200 dhs l’année. La méthode
appliquerFraisGestion() met à jour le solde du compte en lui soutrayant le montant des
frais. Une opération de virement d’un compte payant vers un compte Epargne
s’effectue sans frais, par contre les frais de virement d’un compte payant vers un autre
compte payant sont de 10 dh et peuvent changer au cours du temps. La méthode
effectuerVirement(Compte cpte, double montant) réalise une opération de virement en
mettant à jour les soldes des comptes impliqués

1/5
Questions :

• Faire le diagramme des classes


• Définir la classe CompteBancaire .
• Définir la classe CompteEpargne.
• Définir la classe ComptePayant.
• Définir une classe contenant la fonction main() permettant de tester les classes
CompteBancaire et CompteEpargne avec les actions suivantes:
o Créer un tableau de 4 éléments de type CompteBancaire. Deux éléments sont
de type Epargne et deux autres sont de type Payant.
o Faire appel à la méthode deposer() de chaque instance pour déposer une
somme quelconque dans ces comptes.
o Faire appel à la méthode retirer() de chaque instance pour retirer une somme
quelconque de ces comptes.
o Faire appel à la méthode calculInterêt() des comptes Epargnes.
o Faire
o Faire appel à la méthode effectuerVirement pour effectuer des transactions
entre les différents types de comptes
o Faire appel à la méthode appliquerFraisGestion pour les comptes payants.
o Afficher le solde des 3 comptes.

Exercice 2 : L'héritage appliqué aux employés d'une entreprise, polymorphisme

L’objectif de cet exercice est de programmer le calcul des salaires hebdomadaires des
employés d'une entreprise.
Cette entreprise comporte deux types d'employés :
• Des agents qui sont payés suivant le nombre d'heures qu'ils ont travaillé dans la semaine.
Chaque agent travaille, durant la période normale du travail au cours de la semaine, un
certain nombre d’heures qui sont payées au tarif horaire normal. Ce tarif horaire change
avec le statut de l’agent. On distingue 3 statuts : Non qualifié (tarif horaire = 10dhs),
qualifié (Tarif horaire = 15dhs) et expert (tarif horaire = 20dhs). Le statut de l’employé
peut changer au cours du temps.

Un agent peut effectuer des heures supplémentaires qui sont payées avec un taux de
majoration dont la valeur est :
o 25% pour les heures supplémentaires effectuées le soir durant la semaine,
o 50% pour les heures effectuées durant le Week End
o 100% pour celles effectuées durant des vacances.

Le salaire est calculé par la formule :

Salaire = (NbHeureTarifNormal * TarifHoraireNormal) +


(NbHeureSupA25Pct*(1+TauxMajoration25Pct)*TarifHoraireNormal)+
(NbHeureSupA50Pct*(1+TauxMajoration50Pct)*TarifHoraireNormal)+
(NbHeureSupA100Pct*(1+TauxMajoration100Pct)*TarifHoraireNormal)

• Les commerciaux sont payés avec une somme fixe à laquelle on ajoute une
commission égale au produit du tauxCommision par le chiffre d'affaires qu'ils ont fait
dans la semaine.

2/5
tauxCommission est le même pour tous les commerciaux, et peut changer au cours du
temps.

Modélisez cette situation à l'aide de classes comme le montre le diagramme UML ci-dessous :

La classe HeureSup modélise une séance d’heures supplémentaires qui est décrite par la date
à laquelle elle s’est déroulée, le taux de majoration appliqué et le nombre d’heures effectuées.

La classe Agent doit permettre de spécifier le nombre d’heures travaillés au tarif horaire
normal. Elle doit également permettre d’ajouter les information sur les séances d’heures
supplémentaires effectuées par l’agent. Ces séance qui sont des objets instances de la classe
HeureSup sont stockées dans une ArrayList.

3/5
Créez une classe Paie qui comporte une méthode main() qui effectue les tâches :

public class Paie {


public static void main(String[] args) {
//Création des commerciaux
//Créer le commercial nom = "Moha"

//Créer le commercial nom = "Toto" fixe = 2000

//Positionner le salaire fixe du commercial Moha à 1500

//Positionner le chiffre d'affaire de Moha à 20000

//Positionner le chiffre d'affaire de Toto à 30000

//Création des Agents


//Créer l'agent nom = "Manolo", nomCategorie = "Expert"

//Positionner nbHeureTauxNormal à 40

//Ajouter à l'agent Manolo les heures sup:


//date=01/12/2021 : tm=0.25, nbHS = 2
//date=10/12/2021 : tm=0.5, nbHS = 3
//date=15/12/2021 : tm=1.0, nbHS = 4

//Créer l'agent nom = "Sahroune"

//Positionner sa categorie à "Qualifie"

//Positionner nbHeureTauxNormal à 30

//Ajouter à l'agent Sahroune les heures sup: (Soir:10h)


//10/12/2021 : tm=0.5, nbHS = 10

//Créer l'agent nom = "Founoune", nomCategorie = "NonQualifie"

//Positionner nbHeureTauxNormal à 40

//Ajouter à l'agent Founoune les heures sup: (Soir:4h)(WE:8h)


//15/12/2021 : tm=0.25, nbHS = 4
//25/12/2021 : tm=0.5, nbHS = 8

//Créer le tableau personnel de 5 éléments pour contenir les 2


//commerciaux et les 3 agents

//Afficher chaque élément du tableau personnel pour afficher

4/5
//le nom et le salaire de chaque employé
// Afficher également le total des salaires de tous les employés

}
}

5/5

Vous aimerez peut-être aussi