Héritage et polymorphisme


  1. Polymorphisme et héritage – La classe Rectangle et carré –
  2. Héritage simple: Personne, employé et chef
  3. Surcharge(Overloading) en Python
  4. Polymorphisme – Classe mère Courrier –

Exercice 1: Polymorphisme et héritage – La classe Rectangle et carré –

Définir une classe Rectangle avec un constructeur donnant des valeurs (longueur et largeur) par défaut et un attribut nom = “rectangle”, il faut ensuite définir les méthodes:

  • perimetre qui retourne le périmètre du rectangle.
  • surface qui retourne la surface du rectangle.
  • afficher qui affiche le périmètre et la surface d’un rectangle ainsi leurs dimensions en longueur et largeur.

Définir une classe Carre héritant de Rectangle et qui permet de redéfinir l’attribut d’instance : nom = “carré”.

Exemple d’exécution:

>>>R=Rectangle(5,7)
>>>R.afficher()
Un rectangle de 5 sur 7
a une surface de 5 * 7 = 35
et un périmètre de (5 + 7) * 2 = 24
>>>C=Carre(6)
>>>C.afficher()
Un carré de 6 sur 6
a une surface de 6 * 6 = 36
et un périmètre de (6 + 6) * 2 = 24


Exercice 2: Héritage simple: Personne, employé et chef

Définir les classes suivantes:

  • Une classe DateNaissance avec trois attributs, jour, mois, année et une méthode ToString qui convertit la date de naissance en chaine de caractères
  • Une classe Personne  avec trois attributs, nom, prénom et date de naissance et une méthode polymorphe Afficher pour afficher les données de chaque personne.
  • Une classe Employé qui dérive de la classe Personne, avec en plus un attribut Salaire et la redéfinition de la méthode Afficher.
  • Une classe Chef qui dérive de la classe Employé, avec en plus un attribut Service et la redéfinition de la méthode Afficher.

Exemple d’exécution:

>>>P=personne(“Ilyass”,”Math”,DateNaissance(1,7,1982))
>>>P.afficher()
Nom: Ilyass
Prénom: Math
Date de naissance: 01 / 07 / 1982

>>>E=employe(“Ilyass”,”Math”,DateNaissance(1,7,1985),7865.548)
>>>E.afficher()
Nom: Ilyass
Prénom: Math
Date de naissance: 01 / 07 / 1985
Salaire: 7865.55

>>>Ch=chef(“Ilyass”,”Math”,DateNaissance(1,7,1988),7865.548,”Ressource humaine”)
>>>Ch.afficher()
Nom: Ilyass
Prénom: Math
Date de naissance: 01 / 07 / 1988
Salaire: 7865.55
Service: Ressource humaine


Exercice 3: Surcharge(Overloading) en Python

Une signature d’une fonction est le nom et les arguments avec leur type (mais pas le type de la valeur retournée).

Pour Python, puisque le typage est dynamique, une signature d’une fonction est le nom de la fonction et le nombre d’arguments.

Deux méthodes ont la même signature est interdit.

Le surcharge(Overloading)  est de définir plusieurs méthodes de signatures différentes pour un même nom. C’est-à-dire définir, dans la même classe, plusieurs fonctions de même nom mais de différent nombre d’arguments.

En python pas de surcharge,   C’est-à-dire on ne peut pas définir, dans la même classe, plusieurs fonctions de même nom mais de différent nombre d’arguments. Si vous avez les défini, seules la dernière fonction définie sera prise en compte.

La solution donc est d’utiliser les paramètres avec valeur par défaut.

Petit exercice:

Définir une classe Point avec un constructeur, un point est définit soit par deux coordonnées x et y, s’il s’agit d’une représentation d’un point au plan ou par trois coordonnées x, y et z, s’il s’agit d’une représentation d’un point en espace.

La classe Point doit contenir une méthode ToString qui affiche le point.

Exemple d’exécution:

>>>P1=Point(2,3)
>>>P1.ToString()
P(2.00 , 3.00)
>>>P2=Point(1,-5,6)
>>>P2.ToString()
P(1.00 , -5.00 , 6.00)


Exercice 4: Polymorphisme – Classe mère Courrier –

polymorphisme: Il s’agit dans cet exercice de proposer une conception modélisant une boîtes aux lettres.

Une boîtes aux lettres recueille des courrier qui peuvent être des lettres ou des colis.

Une lettre est caractérisée par :

son poids (en grammes)
le mode d’expédition (express ou normal)
son adresse de destination
son adresse d’expédition
son format (“A3” ou “A4”)

Un colis est caractérisé par :

son poids (en grammes)
le mode d’expédition (express ou normal)
son adresse de destination
son adresse d’expédition
son volume (en litres )

Il faut définir aussi les deux méthodes:

calculTimbre: qui calcule le prix du Timbre
ToString qui affiche un courrier

Règles pour calculer le prix du Timbre :

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 (kilos), 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 un colis dépend de son poids et de son volume :
Formule : montant = 0.25 * volume (litres) + poids (kilos) * 1.0;

en mode d’expédition express :

les montants précédents sont doublés, quelque soit le type de courrier;

Exemple d’exécution:

>>>L1=Lettre(“Lille”,”Paris”,80,”normal”,”A4″)
>>>L1.ToString()
Lettre:
Adresse destination: Lille
Adress expedition: Paris
Poids: 80.00 grammes
Mode: normal
Format:A4
Prix du timbre:0.20
>>>C1=Colis(“Marrakeche”,”Barcelone “,3500,”expresse”,2.25)
>>>C1.ToString()
Collis:
Adresse destination: Marrakeche
Adress expedition: Barcelone
Poids: 3500.00 grammes
Mode: expresse
Volume: 2.25 litres
Prix du timbre:3937.50


Vous aimerez aussi...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Résoudre : *
20 + 20 =