5/ HERITAGE
A partir d’un exemple, nous allons expliquer la notion d’héritage.
Enoncé : Une société possède
un fichier PERSONNEL composé des rubriques
|
N°
|
Nom
|
Prénom
|
Adresse
|
Ville
|
Fonction
|
Salaire
|
Les employés dont la fonction est « REPRESENTANT »
ont un mode de calcul du salaire qui diffère des autres salariés.
Leur salaire est déterminé en additionnant à leur
salaire fixe, une commission et des frais de remboursement.
La commission est calculée en fonction de leur chiffre d’affaires
selon le barème suivant :
Si CA < 100 000 Frs
alors commission = CA * 0.02
sinon si CA < 200 000
alors commission = 2 000 + (CA - 100 000)*0.04
sinon commission = 6 000 + (CA - 200 000)*0.06
fsi
fsi |
|
Les frais sont remboursés en fonction d’un
plafond qui est fixé pour chaque représentant.
|
Les frais remboursés sont calculés
selon la méthode suivante :
|
|
N°
|
PLAFOND FRAIS
|
|
1
|
1 000 Frs
|
|
2
|
1 500 Frs
|
|
3
|
2 000 Frs
|
|
4
|
2 500 Frs
|
|
5
|
3 000 Frs
|
|
Si Frais > Plafond
alors FraisRemboursés= Plafond
Sinon FraisRemboursés = Frais
Fsi |
|
Problème : Créer une classe SALARIE qui permettra
-
D’afficher les coordonnées d’un salarié
-
D’augmenter le salaire fixe d’un salarié en fonction d’un pourcentage
-
De modifier les coordonnées d’un salarié
-
De cumuler au CA d’un REPRESENTANT le montant d’une nouvelle vente
-
De cumuler les frais d'un REPRESENTANT
-
De remettre à zéro les cumuls frais et ca d'un REPRESENTANT
-
D’afficher le salaire de chaque salarié sous la forme suivante :
|
Si le salarié est un REPRESENTANT l’affichage du salaire
se fera sous la forme suivante :
|
Sinon l’affichage du salaire se fera sous la forme suivante :
|
N° : 1
Nom du salarié : RIGOU
Adresse : 3, Rue Dinard
Ville : 60300 SENLIS
Fonction : REPRESENTANT
SALAIRE FIXE : 7 500
COMMISSION : 5 440
CA : 186 000
REMBOURSEMENT DES NOTES DE FRAIS : 750
TOTAL A PAYER : 13 690 |
N° : 9
Nom du salarié : ENKLER
Adresse : 78, Rue du stade
Ville : 60400 NOYON
Fonction : MAGASINIER
Salaire à payer : 8 690 Frs |
Résolution :
Attributs :
-
Num, Nom, Prenom, Adresse, Ville, Fonction, Salaire : sont des attributs
qui conviennent quel que soit le type de fonction qu’exerce l’employé.
-
Ca, frais et PlafondFrais ne concernent que les employés
ayant pour fonction « REPRESENTANT ».
Méthodes :
Quatre méthodes peuvent être définies concernant
tous les types d’employés.
-
AfficherCoordonnees( )
-
AugmenterSalaire(réel tauxPourcentage)
-
ModifierNom(chaine NouvNom)
-
ModifierAdresse(chaine NouvRue, chaine NouvVille)
Une autre méthode concerne tous les employés mais diffère
selon que l’employé est un « REPRESENTANT » ou non.
Enfin, trois méthodes ne concernent que les employés
dont la fonction est « REPRESENTANT ».
-
CumulCa(entier MontantVente)
-
CumulFrais(entier Depense)
-
RemisecumulZero()
Solutions :
1/ Une première solution consiste à associer d’une part les
9 attributs à tous les salariés, quelle que soit leur fonction,
en mettant à 0 les attributs Ca, Frais et PlafondFrais dans le cas
où le salarié n’a pas la fonction de « REPRESENTANT
», et d’autre part, à tester la fonction du salarié
dans les méthodes CumulCa, CumulFrais, RemiseCumulsZero et AfficherSalaire.
2/ Une autre solution est de définir une classe SALARIE
ayant comme attributs et comme méthodes ce qui peut convenir à
tous les types d’employés et une autre classe REPRESENTANT avec
ses spécificités.
La classe REPRESENTANT a des attributs et des méthodes identiques
à la classe SALARIE, il est donc intéressant de ne pas redéfinir
et réécrire toute cette partie commune. Le mécanisme
permettant de récupérer ces informations est l’HERITAGE.
En appliquant le mécanisme de l’héritage à notre
problème, la classe REPRESENTANT
hérite des attributs et des méthodes de la classe SALARIE,
et doit juste déclarer les attributs supplémentaires (Ca,
Frais et PlafondFrais) et ses propres méthodes (CumulCa, CumulFrais,
RemiseCumulsZero et AfficherSalaire).
La méthode AfficherSalaire doit exister dans les deux classes,
elle sera juste redéfinie dans la classe REPRESENTANT.
Récapitulatif :
CONCEPTS DE L’HERITAGE :
-
L’héritage permet de créer de nouvelles classes à
partir de classes existantes.
-
Les classes dérivées obtenues sont des « classes filles
», « classes dérivées » ou « sous
classes ».
-
Les classes d’origine sont dites des « super classes », «
classes de base » ou « classes parentes ».
-
Les sous classes peuvent hériter des attributs de la super classe
dont elles sont issues.
-
Les sous classes peuvent avoir des attributs et des méthodes qui
leur sont propres.
-
Certaines méthodes d’une super classe peuvent être redéfinies
dans les sous classes issues de celle-ci.
NOTATION :
ClasseDeBase = CLASSE
Privé:
// membres privés ne sont accessibles que par les membres
de la classe
Public :
// membres publics sont accessibles par tous les membres de
l’application qui utilisent la classe
Fclasse
ClasseDerivee = CLASSE hérite de ClasseDeBase
Privé :
// déclaration des attribut spécifique à
la nouvelle classe
Public :
// déclaration des méthodes nouvelles et redéfinies
de la nouvelle classe
Fclasse