Partager via


Prise en charge de l'héritage de classe au sein du moteur de règles d'entreprise

L'héritage constitue l'une des fonctionnalités principales des langages de la programmation orientée objet. Il s'agit de la capacité à utiliser toute la fonctionnalité d'une classe et à étendre ces capacités sans réécrire la classe d'origine.

Business Rules Framework prend en charge deux types d’héritage de classe : l’implémentation et l’interface. L'héritage de l'implémentation se réfère à la capacité à utiliser les propriétés et les méthodes d'une classe de base sans codage supplémentaire. L'héritage de l'interface, quant à lui, se réfère à la capacité à utiliser seulement le nom des propriétés et des méthodes. La classe enfant doit cependant fournir l'implémentation.

Les règles peuvent être écrites dans une classe de base commune, mais les objets déclarés dans le moteur peuvent provenir de classes dérivées. Dans l’exemple suivant, RegularEmployee et ContractEmployee sont des classes dérivées de la classe de base Employee.

class Employee  
   {  
      public string Status()  
      {   
         // member definition  
      }  
      public string TimeInMonths()        
      {   
         // member definition  
      }  
   }  
  
class ContractEmployee : Employee  
{  
   // class definition  
}  
class RegularEmployee : Employee  
{  
   // class definition  
}  

Supposons que la règle suivante existe.

Règle 1

IF Employee.TimeInMonths < 12  
THEN Employee.Status = "New"  

Au moment de l’exécution, si l’utilisateur affirme deux objets, l’un instance de ContractEmployee et l’autre un instance de RegularEmployee, les deux instances d’objet sont évaluées par rapport à la règle décrite précédemment.

L’utilisateur peut également affirmer des objets de classe dérivés dans des actions à l’aide d’une assertion. Cela provoque une nouvelle évaluation des règles qui contiennent l'objet dérivé et son type de base dans leur condition, comme le montre l'exemple suivant.

Règle 2

IF Employee.Status = "Contract"   
THEN Employee.Bonus = false  
Assert(new ContractEmployee())  

Toutes les règles contenant le type Employee ou le type ContractEmployee dans leurs conditions sont réévaluées après l’assertion. Le type d'héritage dans cet exemple est l'implémentation. Bien que seule la classe dérivée soit déclarée, la classe de base est également déclarée si les règles sont écrites à l'aide des méthodes dans la classe de base au lieu de la classe dérivée.

Voir aussi

Moteur de règles