Td5 - polymorphisme et classes abstraites

Td5 - polymorphisme et classes abstraites

Département de mathématiques
Licence MASS 1998
TD-TP 4
Université de Nice Sophia Antipolis





Problème


Une entreprise desire programmer le calcul du salaire de ses employes.
Ces employes sont classes en 5 categories : c1, c2, c3, Directeur et Commercial.

Les employes sont des objets des classes
Employe_c1, Employe_c2, Employe_c3, Directeur, Commercial,
classes etendues de la classe Employe.

Premier cas - sans classes abstraites

Dans un premier temps definir les classes
Employe, Employe_c1, Employe_c2, Employe_c3, Directeur et Commercial
tel que :

Dans la classe Employe
Comme champs:
- Le temps horaire par semaine: 39 h.
- Le prix horaire : 200 f.
- Le taux du prix d'une heure supplementaire par rapport a une heure "normale" : 0.8
- Le nombre d'heures realisees.

Comme constructeur:
Employe(int nbHeures){ . . .}

Comme methodes:
- le calcul du salaire de l'employe calculSalaire().

Dans les classes Employe_c1, ..., Employe_c3 et Directeur
comme champs:
- Un facteur multiplicatif sur le prix horaire:
1 pour les employes c1
2 pour les employes c2
3 pour les employes c3
4 pour les Directeurs

Comme constructeur:
Employe_ci(int nbHeures){ . . .}
Comme methodes:
- le calcul du salaire de l'employe calculSalaire(),
redefinie par rapport a la classe de base.

Dans la classe Commercial

comme champs:
- Une prime.
Comme constructeur:
Commercial(int prime){ . . .}

Comme methodes:
- le calcul du salaire calculSalaire(), qui correspond a un solde du salaire de employe_c1 sur une base de 39 heures, plus la prime.

Dans la methode main() de la classe Employe :
initialiser un tableau d'employes avec les informations suivantes:
Employe 1 categorie c1 temps horaire 50 heures
Employe 2 categorie c3 temps horaire 30 heures
Directeur temps horaire 50 heures
Commercial prime 4000 f


Pour chacun des employes, afficher son salaire.
Afficher le cout total pour l'entreprise.


public class Employe{ static final int TEMPS_HORAIRE = 39; static final int PRIX_HORAIRE = 200; static final double TAUX_HEURE_SUP = 0.8; int nbHeures; Employe(int nbHeures){ this.nbHeures = nbHeures; } double calculSalaire( ) { return (nbHeures>TEMPS_HORAIRE)? PRIX_HORAIRE * TEMPS_HORAIRE+TAUX_HEURE_SUP * (nbHeures - TEMPS_HORAIRE)*PRIX_HORAIRE : PRIX_HORAIRE * nbHeures; } public static void main(String[] args){ Employe[ ] employes = { new Employe_c1(50), new Employe_c3(30), new Directeur(50), new Commercial(4000) }; for(int i=0;i
Michel Bourdelles
Last modified: Tue Mar 24 14:39:19 MET