Serie4 HeritagePolymorphisme
Serie4 HeritagePolymorphisme
Serie4 HeritagePolymorphisme
TP N°4
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.
Un compte bancaire possède à tout moment une donnée : son solde. Ce solde peut être
positif (compte créditeur) ou négatif (compte débiteur).
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.
Un ComptePayant est un compte bancaire pour lequel chaque opération de retrait et de
varsement est payante et vaut 5 dh
Questions :
1/7
L’objectif de cet exercice est de programmer le calcul des salaires hebdomadaires des
employés d'une entreprise.
Des employés qui sont payés suivant le nombre d'heures qu'ils ont travaillé dans la
semaine. Ils sont payés à un certain tarif horaire et leurs heures supplémentaires (au-
delà de la charge horaire due (=40) ) sont payées 30 % de plus que les heures
normales.
D'autres employés, payés de la même façon, mais leurs heures supplémentaires sont
payées 50 % de plus que les heures normales.
Les commerciaux sont payés avec une somme fixe à laquelle on ajoute 1 % du chiffre
d'affaires qu'ils ont fait dans la semaine.
Modélisez cette situation à l'aide de classes qu’il faut placer dans un package entreprise.
Chaque employé doit avoir un nom. Ce nom, une fois donné ne peut pas être modifié.
Commencez par écrire une classe Employe dont hériteront les autres classes.
Pour ne pas avoir trop de modificateurs, créez un seul modificateur
setInfosSalaire pour entrer ou modifier les informations brutes nécessaires au
calcul des salaires (nombre d'heures de travail, chiffre d'affaire,...). Ne faites pas du
polymorphisme avec cette méthode.
Les classes doivent comporter au moins 2 constructeurs : un qui ne prend en paramètre
que le nom de l'employé et l'autre qui prend en paramètres le nom et toutes les
informations pour le calcul du salaire.
Créez une méthode getSalaire() qui sera utilisée pour calculer le salaire de
n’importe quel employé en utilisant le polymorphisme.
Créez une classe Paie qui comporte une méthode main() qui a pour tâches :
Entrer les informations sur des employés des différents types (au moins 3 commerciaux).
Utilisez un tableau pour enregistrer Les employés.
Au moins un des employés sera créé avec le constructeur qui n'a que le nom en paramètre, et
entrez ensuite les informations pour son salaire avec la méthode setInfosSalaire.
Pour au moins un autre employé, utilisez le constructeur pour entrer les informations sur le
salaire.
La méthode main() affichera le salaire hebdomadaire de chacun des employés dans une
boucle "for" qui parcourra le tableau des employés. Utilisez le polymorphisme avec un
accesseur pour le salaire. L'affichage doit avoir la forme : "Moha gagne 7800 DHs ".
2/7
======== Correction =============
===============Exercice1=================
public class CompteB {
int code;
float solde;
static int nbComptes=0;
3/7
public CompteP(){
super(0);
}
public void verser(float mt){
super.verser(mt);
super.retirer(5);
}
public void retirer(float mt){
super.retirer(mt);
super.retirer(5);
}
public String toString(){
return "Compte Payant "+super.toString();
}
}
c1.verser(6000);
c1.retirer(4000);
System.out.println(c1.toString());
c2.verser(3300);
c2.retirer(2000);
System.out.println(c2);
c2.calculInterets();
System.out.println(c2);
c3.verser(2000);
System.out.println(c3.toString());
}
}
===============Exercice 2 ======================
public class Employe {
4/7
// (et donc la classe Employe abstraite)
public double getSalaire() {
return -1.0;
}
5/7
return fixe + (pourcentageCa * ca) / 100;
}
else {
return -1.0;
}
}
6/7
return pourcentageHeuresSup;
}
7/7