Aller au contenu
EN FR

Concepts, instances et interfaces

Statut documentaire : reference — voir Maturité et preuves.

Une déclaration de concept définit un type conceptuel. Les instances Runtime sont des occurrences de ce type. L’attachement d’interface ajoute une vue conceptuelle sur un support existant sans remplacer son identité.

Concept et instance

define .:#WorkItem(me)[title::#string];
#task42:#WorkItem[title='Review proposal'];

La déclaration de classe/modèle et la déclaration du concept sémantique ont des responsabilités distinctes. Un modèle classé Entity doit tout de même déclarer sa participation sémantique à Entity lorsqu’il doit participer à l’enregistrement conceptuel, aux implications et au raisonnement.

: versus ::

#alice:#Person;
#alice::#Customer;

: déclare ou type un terme. :: attache une interface à un support existant. La seconde forme ne retype pas destructivement #alice ; elle ajoute une interface conceptuelle dont le support distingué est l’objet existant.

define .:#Auditable(me)[auditLevel::#integer];
doc42::#Auditable;
auditBox:#Auditable(doc42)[auditLevel=2];

La forme nommée auditBox est utile lorsque l’instance d’interface doit elle-même être adressable.

Les usages structurels nécessitent un type défini

Certaines annotations anticipées peuvent être acceptées, mais l’application structurelle, l’attachement d’interface et l’usage en argument exigent une définition connue. Définir un type structurel avant de l’utiliser comme concept appliqué.

Règle de conception

Séparer identité métier, identité conceptuelle et identifiants de persistance. Ne pas ajouter un champ littéral Me aux métadonnées applicatives pour imiter la notation H-Logic.