Chapitre 2. Représenter des connaissances avec AROM

Table des matières
2.1. Classes et objets
2.2. Associations et tuples
2.3. BNF du langage AROM

2.1. Classes et objets

Une classe décrit un ensemble d'objets ayant des propriétés communes. Les classes sont descriptives : elles fournissent un ensemble de conditions nécessaires mais non suffisantes d'appartenance des objets à la classe. Chaque classe est caractérisée par un ensemble de propriétés appelées variables (cet ensemble de propriétés défini l'intention de la classe). Les classes ne disposent pas de méthodes au sens des langages de programmation orientée objet.

Une variable correspond à une propriété dont le type n'est pas issu d'une classe de la base de connaissances. En effet, il n'existe pas de variable référençant un ou plusieurs objets ; il est nécessaire de passer par une association.

Chaque variable est caractérisée par un ensemble de facettes qui peut être subdivisé en trois catégories :

Les classes sont structurées de manière hiérarchique par la relation de spécialisation qui, en AROM, est simple. La spécialisation d'une classe est réalisée par au moins une des deux opérations suivantes : ajout ou modification d'une valeur de facette ou ajout d'une nouvelle variable. Une classe hérite les facettes de variables qu'elle ne redéfinit pas. Par ailleurs, les sous-classes d'une classe ne sont pas supposées mutuellement exclusives (leurs descriptions peuvent englober des instances communes), ni exhaustives (l'union des ensembles d'instances des sous-classes n'est pas nécessairement égal à l'ensemble des instances de leur super-classe).

Un objet AROM représente une entité distinguable du domaine modélisé. Chaque objet est attaché à une classe mais appartient également à tous les ancêtres de cette classe. Le terme "attaché", utilisé dans le système TROEPS [Euz93], met en exergue la contingence et l'aspect dynamique du fait d'appartenir à une classe. Il reflète le fait que, contrairement à la programmation orientée objet, les SRCO comme AROM autorisent l'utilisateur ou un de ses programmes à déplacer un objet d'une classe vers une autre parce que des informations additionnelles ont été obtenues sur cet objet.