341
classe PointNom dériveDe Point
{ méthode PointNom (entier x, entier y, caractère c)
{ base (x, y)
// appel du constructeur de la classe de base qui va
// initialiser à x et y les attributs abs et ord
nom = c
// initialisation de l’attribut spécifique à PointNom
}
méthode affCoordNom
{ écrire «Point de nom », nom, « »
affCoord
}
caractère nom
}
Voici un petit programme d’utilisation de PointNom :
PointNom pn1, pn2
pn1 := Création PointNom(1, 7, ’A’)
pn1.affCoordNom
// méthode de PointNom
pn2 := Création PointNom(4, 3, ’B’)
pn2.affCoordNom
// méthode de PointNom
pn2.affCoord
// méthode de Point
Point de nom A Coordonnées : 1 7
Point de nom B Coordonnées : 4 3
Coordonnées : 4 3
Exercice 12.4
Le constructeur de PointNom est en fait le même que dans l’exercice précédent. En revanche, il faut redéfinir la méthode affiche de la classe dérivée pour qu’elle affiche à la fois le
nom et les coordonnées. Pour ces dernières, comme les attributs abs et ord sont encapsulés
dans la classe Point, il est nécessaire de recourir à la méthode affiche de Point. Pour
cela, il faut éviter d’écrire simplement
affiche
qui provoquerait un appel de la méthode affiche de cette même classe PointNom, entraînant une récursivité infinie. Il faut en fait utiliser la mention base pour forcer l’utilisation de
affiche de la classe de base
base.affiche
Voici ce que pourrait être notre clase PointNom :
classe PointNom dériveDe Point
{ méthode PointNom (entier x, entier y, caractère c)
{ base (x, y)
// appel du constructeur de la classe de base
nom := c
}
méthode affiche
{ écrire «Point de nom », nom
base.affiche
// force l’appel de affiche de la classe de base
}
caractère nom
}
classe PointNom dériveDe Point
{ méthode PointNom (entier x, entier y, caractère c)
{ base (x, y)
// appel du constructeur de la classe de base qui va
// initialiser à x et y les attributs abs et ord
nom = c
// initialisation de l’attribut spécifique à PointNom
}
méthode affCoordNom
{ écrire «Point de nom », nom, « »
affCoord
}
caractère nom
}
Voici un petit programme d’utilisation de PointNom :
PointNom pn1, pn2
pn1 := Création PointNom(1, 7, ’A’)
pn1.affCoordNom
// méthode de PointNom
pn2 := Création PointNom(4, 3, ’B’)
pn2.affCoordNom
// méthode de PointNom
pn2.affCoord
// méthode de Point
Point de nom A Coordonnées : 1 7
Point de nom B Coordonnées : 4 3
Coordonnées : 4 3
Exercice 12.4
Le constructeur de PointNom est en fait le même que dans l’exercice précédent. En revanche, il faut redéfinir la méthode affiche de la classe dérivée pour qu’elle affiche à la fois le
nom et les coordonnées. Pour ces dernières, comme les attributs abs et ord sont encapsulés
dans la classe Point, il est nécessaire de recourir à la méthode affiche de Point. Pour
cela, il faut éviter d’écrire simplement
affiche
qui provoquerait un appel de la méthode affiche de cette même classe PointNom, entraînant une récursivité infinie. Il faut en fait utiliser la mention base pour forcer l’utilisation de
affiche de la classe de base
base.affiche
Voici ce que pourrait être notre clase PointNom :
classe PointNom dériveDe Point
{ méthode PointNom (entier x, entier y, caractère c)
{ base (x, y)
// appel du constructeur de la classe de base
nom := c
}
méthode affiche
{ écrire «Point de nom », nom
base.affiche
// force l’appel de affiche de la classe de base
}
caractère nom
}
