PolymorphismePolymorphisme sur inférence de type
Nous avons vu au chapitre Raisonnement automatique,
section Raisonnement en monde ouvert que, lors du raisonnement,
les classes des individus et les superclasses des classes pouvaient être
modifiées. Dans ce cas, les méthodes disponibles
peuvent changer. De plus, en cas de polymorphisme, c’est-à-dire lorsque
plusieurs classes exploitent la même méthode de
manière différente, l’implémentation
de la méthode pour un individu ou une classe peut changer. C’est
le « polymorphisme sur inférence de type ».
Voici un exemple simple :
>>> ma_bacterie = onto.Bactérie(gram_positif = True,
... a_pour_forme = onto.Ronde(),
... a_pour_regroupement = [onto.EnAmas()] )
>>> ma_bacterie.méthode()
C’est une bactérie !
Nous avons créé une bactérie.
Lorsque nous exécutons la méthode, c’est l’implémentation de
la classe Bactérie qui est donc appelée. Nous
allons maintenant appeler le Raisonneurraisonneur.
>>> sync_reasoner()
Le raisonneur a déduit que la bactérie
est en fait un Staphylocoque (à partir de ses relations). À présent,
si nous appelons la méthode, c’est l’implémentation du
Staphylocoque qui est appelée :
>>> ma_bacterie.méthode()
C’est un staphylocoque ...