Autre situation où l’on exploite le polymorphisme
279
La même analyse s’appliquerait à la situation :
Point p
p = Création Pointcol (8, 6, 2)
p.affiche
Là encore, c’est le type de l’objet référencé par p qui interviendra dans le choix de la
méthode affiche.
Voici un programme complet reprenant les définitions des classes Point et Pointcol utilisant le même programme que l’exemple du paragraphe 1 pour gérer un tableau hétérogène :
tableau Point [4] tabPts
tabPts [1] := Création Point (0, 2)
tabPts [2] := Création Pointcol (1, 5, 3)
tabPts [3] := Création Pointcol (2, 8,9)
tabPts [4] := Création Point (1, 2)
répéter pour i := 1 à 4
tabPts[i].affiche()
classe Point
{ méthode Point (entier x, entier y)
{ abs := x ; ord := y }
méthode affiche ()
{ identifie()
écrire « Mes coordonnées sont : », abs, « », ord
}
méthode identifie ()
{ écrire «Je suis un point »
}
entier abs, ord
}
classe Pointcol dériveDe Point
{ méthode Pointcol (entier x, entier y, entier c)
{ base (x, y) ;
couleur := c
}
méthode identifie
{ écrire «Je suis un point coloré de couleur », couleur
}
entier couleur
}
Je suis un point
Mes coordonnées sont : 0 2
Je suis un point coloré de couleur 3
Mes coordonnées sont : 1 5
Je suis un point coloré de couleur 9
Mes coordonnées sont : 2 8
Je suis un point
Mes coordonnées sont : 1 2
Une autre situation où l’on exploite le polymorphisme
279
La même analyse s’appliquerait à la situation :
Point p
p = Création Pointcol (8, 6, 2)
p.affiche
Là encore, c’est le type de l’objet référencé par p qui interviendra dans le choix de la
méthode affiche.
Voici un programme complet reprenant les définitions des classes Point et Pointcol utilisant le même programme que l’exemple du paragraphe 1 pour gérer un tableau hétérogène :
tableau Point [4] tabPts
tabPts [1] := Création Point (0, 2)
tabPts [2] := Création Pointcol (1, 5, 3)
tabPts [3] := Création Pointcol (2, 8,9)
tabPts [4] := Création Point (1, 2)
répéter pour i := 1 à 4
tabPts[i].affiche()
classe Point
{ méthode Point (entier x, entier y)
{ abs := x ; ord := y }
méthode affiche ()
{ identifie()
écrire « Mes coordonnées sont : », abs, « », ord
}
méthode identifie ()
{ écrire «Je suis un point »
}
entier abs, ord
}
classe Pointcol dériveDe Point
{ méthode Pointcol (entier x, entier y, entier c)
{ base (x, y) ;
couleur := c
}
méthode identifie
{ écrire «Je suis un point coloré de couleur », couleur
}
entier couleur
}
Je suis un point
Mes coordonnées sont : 0 2
Je suis un point coloré de couleur 3
Mes coordonnées sont : 1 5
Je suis un point coloré de couleur 9
Mes coordonnées sont : 2 8
Je suis un point
Mes coordonnées sont : 1 2
Une autre situation où l’on exploite le polymorphisme
