programmation procédurale et programmation objets avec l’environnement logiciel clips...

42
Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Upload: arianne-poulet

Post on 04-Apr-2015

118 views

Category:

Documents


7 download

TRANSCRIPT

Page 1: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Intelligence Artificielle

Page 2: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Programmation procédurale

• Programmation procédurale avec les fonctions

• 2 types de fonctions- fonctions systèmes- fonctions utilisateurs

Page 3: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Appels de fonction ou

Expressions

Affichage du résultat des appels

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Exemple d’appels de fonctions système

Programmation procédurale

Page 4: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

imbrication des parenthèses

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Exemple d’appels de fonctions système

Programmation procédurale

Page 5: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

(deffunction <nom-fonction> |<commentaire>| |<liste-des-paramètres>|

<expression-1><expression-2>…<expression-n>

)

Corps de la fonction <nom-fonction> : nom de la fonction

|<liste-des-paramètres>| : liste facultative des paramètres<expression-1> … <expression-n> : corps de la fonction

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le constructeur deffunction

Syntaxe

Action

Définit une fonction

Définition de fonctions utilisateurs

Programmation procédurale

Page 6: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Constructeur

Paramètres de la fonction

Corps de la fonction

Nom de la fonction

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Exemple

Le constructeur deffunction

Définition de fonctions utilisateurs

Programmation procédurale

Page 7: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Chargement de la fonctionAppels de la fonction

Résultatsdes

appels

Fonction définie

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Exemple d’appel de fonctions utilisateur

Programmation procédurale

Page 8: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Programmation objets

Le langage objet COOL (CLIPS Oriented Object Language)

Approche de programmation

OBJET

+

=

Connaissances déclaratives

Connaissances procédurales

Page 9: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Paradigmes

• Les connaissances déclaratives : propriétés de l’objet, son état, ses données, ses particularités (attributs)

• Les connaissances procédurales : capacités d’action de l’objet : savoir faire, réactions au monde extérieur (méthodes)

• Les données d’un objet ne sont accessibles et modifiablesque par les méthodes de l’objet lui même : (encapsulation)

• Les objets communiquent entre eux par messages

• Les messages sont évalués par les méthodes de l’objet

Programmation objets

Page 10: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

• Les messages sont envoyés en précisant l’objet destinataire, le nom de la méthode à déclencher et éventuellement les paramètres de cette méthode

• Un message peut être interprété différemment selon l’objet destinataire. (polymorphisme)

• Les attributs sont typés et nommés

• Les attributs sont décrits à travers un ensemble de facettes

• Il existe plusieurs types de facettes : type, valeur par défaut, intervalle de valeurs, droit d’accès, visibilité

Paradigmes

Programmation objets

Page 11: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

• Les objets ayant des propriétés et des capacités communes sont regroupés en classes

• Les classes sont génératrices d’objets

• Les objets sont crées à partir d’une classe

• Un objet est une instance unique de sa classe

Paradigmes

Programmation objets

Page 12: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

• Les objets héritent des attributs et des méthodes de leur classe

• Une classe est une spécialisation d’une autre classe existante

• Une classe 1. hérite des attributs et des méthodes de ses super-classes (ancêtres), 2. ajoute de nouveaux attributs et/ou nouvelles méthodes, 3. peut modifier ou redéfinir les méthodes héritées (surcharge)

• La partie privée d’une classe (attributs et méthodes) peut être partagée avec les membres de la familles : ancêtres (super-classes) ou descendants (sous-classes)

ParadigmesProgrammation objets

Page 13: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Programmer en COOL revient à :

1. Définir des classes (defclass) en décrivant ses attributs (slot) avec leurs facettes ainsi que ses méthodes (defmessage-handler). Les méthodes doivent être déclarées au préalable (message-handler)

3. Créer des instances des classes définies (make-instance)

4. Envoyer des messages (send) aux instances créées

Le langage COOL

Programmation objets

Page 14: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le constructeur defclass

Action

Définit une classe à travers les propriétés suivantes : Nom de la classeNom de la super-classeRôleRéactivitéLes attributs avec leurs facettesLes méthodes

Le langage COOL : définition des classes

Programmation objets

Page 15: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

(defclass <nom-classe> |<commentaires>|(is-a <nom-super-classe>)(role <rôle-classe>) |(pattern-match <filtrage-classe>)|

slot <nom-slot1> (<facette-1> <valeur-facette-1>) (<facette-2> <valeur-facette-2>) ….

slot <nom slot2> (<facette-1> <valeur-facette-1>) (<facette-2> <valeur-facette-2>) ….

…message-handler <nom-méthode-1>message-handler <nom-méthode-2>…

)

Méthodes

Attributs

Facettes

Le constructeur defclass

Syntaxe

Le langage COOL : définition des classes

Programmation objets

Page 16: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Spécifie le lien d’héritage d’une classe

(is-a <nom-super-classe>)

(is-a (USER)) <nom-super-classe> : nom de la super-classe directe : classe système ou classe utilisateur

Le constructeur defclass : lien dhéritage is-a

Syntaxe

Le langage COOL : définition des classes

Action

Exemple

Programmation objets

Page 17: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

(role <quel-rôle>)

(role (concrete)) <quel-rôle> : concrete : classe qui va être instanciée ou abstrait sinon

Le constructeur defclass : rôle de classe role

Le langage COOL : définition des classes

Action

Spécifie le rôle d’une classe

Syntaxe

Exemple

Programmation objets

Page 18: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

(pattern-match <réactivité>)

(pattern-match (reactive))

<réactivité> : reactive : instances de classe utilisables dans les règles ou unreactive sinon

Le constructeur defclass : réactivité de classe patter-match

Le langage COOL : définition des classes

Action

Définit la réactivité d ’une classe

Syntaxe

Exemple

Programmation objets

Page 19: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

• Elles servent à décrire un attribut• Types de facettes

Initialisation ou valeur par défaut (default)Typage (type)Accès (access)Visibilité (visibility)Définition des méthodes d’accès (create-accessor)

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Programmation objets

Page 20: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de valeur par défaut default

Donne une valeur par défaut à l’attribut

(slot <attribut> (default <valeur-par-défaut))

(slot statut (default cadre))

<valeur-par-défaut> : valeur par défaut de l’attribut

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Action

Syntaxe

Exemple

Programmation objets

Page 21: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de typage type

Associe à un attribut un type particulier de données

(slot <attribut> (type <type-de-données>))

(slot salaire (type float)) (slot superieur-hierarchique (type instance))(slot motivations (type symbol))

<type de données>: un type de données : string, symbol, instance, float, etc

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Action

Syntaxe

Exemples

Programmation objets

Page 22: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

STRING

OBJECT

PRIMITIVE

USER

LEXEME

SYMBOL

NUMBER

INTEGER FLOAT

MULTIFIELDADDRESS INSTANCE

INSTANCE-ADDRESSINSTANCE-NAME FACT-ADDRESS EXTERNAL-ADDRESS

INITIAL-OBJECT

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Les types de données et les classes prédéfinies dans Clips

Programmation objets

Page 23: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette d’accès access

Définit les droits d’accès (lecture et/ou écriture) liés à un attribut

(slot date-embauche (access read-only))

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Action

Syntaxe

Exemple

(slot <attribut> (access <droits-accès>)) <droits-accès> : droits d’accès : read-only, read-write ou initialize-only

Programmation objets

Page 24: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de visibilité visibility

Précise si l’attribut est accessible aux ancêtres et aux descendants de la classe où il a été définit

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Action

Syntaxe

(slot <attribut> (visibilty <type-visibilité>))

<type-visibilité> : type de visibilité : private ou public

Attribut accessible aux super-classes et aux sur-classes de la classe où il a été définit

Non Oui

Programmation objets

Page 25: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de visibilité visibility

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Exemple

(slot date-embauche (visibility private))

Programmation objets

Page 26: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Classe D

Méthode-A

Méthode-C

Méthode-B

Méthode-D

Attribut-B-2

Attribut-B-1

Classe B Classe C

Classe A

private

public

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de visibilité visibility

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Programmation objets

Page 27: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de méthodes d’accès create-accessor

Définit des méthodes particulières get-nom-de-l’attribut et put-nom-de-l’attribut permettant d’accéder à la valeur de l’attribut en lecture et en écriture

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Action

Syntaxe

(slot <attribut> (create-accessor <méthodes-à-définir>)) <méthodes-à-définir> : read, write ou read-writeread : définit le get-nom-de-l’attribut write : définit le put-nom-de-l’attributread-write : définit le get-nom-de-l’attribut et put-nom-de-l’attribut

Programmation objets

Page 28: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Facette de méthodes d’accès create-accessor

Le constructeur defclass : les facettes

Le langage COOL : définition des classes

Exemple (slot statut (create-accessor read-write))

Définition des deux méthodes

get-statut et put-statut

Programmation objets

Page 29: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Déclaration des méthodes message-handler

Déclare une méthode dans une classe

(message-handler <nom-méthode>)

(message-handler affichage-info)

<nom-méthode>: méthode à déclarer

Le constructeur defclass

Le langage COOL : définition des classes

Action

Syntaxe

Exemple

Programmation objets

Page 30: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Définition des méthodes defmessage-handler

Définit une méthode dans une classe

(defmessage-handler

<nom-classe> <nom-méthode> |<liste-des-paramètres>| <commentaire>|

<expression-1><expression-2>…<expression-n>

)

<nom-classe> : nom de la classe<nom-méthode> : nom de la méthode|<liste-des-paramètres>| : liste facultative des paramètres<expression-1> … <expression-n> : corps de la méthode

Le constructeur defclass

Le langage COOL : définition des classes

Action

Syntaxe

Programmation objets

Page 31: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Définition des méthodes defmessage-handler

Le constructeur defclass

Exemple

(defmessage-handler INSCRIPTION affichage-info()(printout t crlf)(printout t crlf "*-*-*-*-*-*-*-*-*-*-*-*" crlf) (printout t "Le nom de l'inscrit est : " ?self:Nom crlf)(printout t "Le prénom de l'inscrit est : " ?self:Prenom crlf)(printout t "Le nom de la société de l'inscrit est : " ?self:Organisme crlf)(printout t "*-*-*-*-*-*-*-*-*-*-*-*" crlf)(printout t crlf crlf crlf))

Le langage COOL : définition des classes

Programmation objets

Page 32: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

(defclass INSCRIPTION (is-a USER)(role concrete)(slot Nom (type STRING) (create-accessor read-write))(slot Prenom (type STRING) (create-accessor read-write))(slot Organisme (type STRING) (create-accessor read-write))(message-handler saisie-info)(message-handler affichage-info))

Un exemple complet

Description des attributs et déclaration des méthodes de la classe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le constructeur defclass

Le langage COOL : définition des classes

Programmation objets

Page 33: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

(defmessage-handler INSCRIPTION saisie-info()(printout t crlf crlf)(printout t "Tapez votre nom : ")(bind ?Nom (readline))(send ?self put-Nom ?Nom)(printout t crlf)(printout t "Tapez votre prénom : ")(bind ?Prenom (readline))(send ?self put-Prenom ?Prenom)(printout t crlf)(printout t "Tapez le nom de votre organisme : ")(bind ?Organisme (readline))(send ?self put-Organisme ?Organisme)(return "fin de saisie"))

Un exemple complet

Définition des méthodes de la classe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le constructeur defclass

Le langage COOL : définition des classes

Programmation objets

Page 34: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

(defmessage-handler INSCRIPTION affichage-info()(printout t crlf)(printout t crlf "*-*-*-*-*-*-*-*-*-*-*-*" crlf) (printout t "Le nom de l'inscrit est : " ?self:Nom crlf)(printout t "Le prénom de l'inscrit est : " ?self:Prenom crlf)(printout t "Le nom de la société de l'inscrit est : " ?self:Organisme crlf)(printout t "*-*-*-*-*-*-*-*-*-*-*-*" crlf)(printout t crlf crlf crlf))

Un exemple complet

Définition des méthodes de la classe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le constructeur defclass

Le langage COOL : définition des classes

Programmation objets

Page 35: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Crée une instance d’une classe déjà définie

(make-instance [<nom-instance>] of <nom-classe>(<attribut-1> <valeur-attribut-1>)(<attribut-2> <valeur-attribut-2>)…(<attribut-n> <valeur-attribut-n>))

Action

Syntaxe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

La fonction make-instance

Le langage COOL : création d’instances

<nom-instance>: nom de l’instance<nom-classe> : nom de la classe à instancier<attribut-i> <valeur-attribut-i> : paire attribut valeur

Programmation objets

Page 36: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Définit une collection d’instances d’une classe

(definstances <nom-definstances>(<nom-instance1> of <nom-classe>(<attribut-1> <valeur-attribut-1>)…(<attribut-n> <valeur-attribut-n>)) (<nom-instance2> of <nom-classe>(<attribut-1> <valeur-attribut-1>)…(<attribut-n> <valeur-attribut-n>)) …)

Action

Syntaxe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le construct definstances

Le langage COOL : création d’instances

<nom-definstances>: nom de la collection d’instances<nom-classe> : nom de la classeà instancier<attribut-i> <valeur-attribut-i> : paire attribut valeur

Programmation objets

Page 37: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Rajoute à la liste des instances toutes les instances définies par un definstances

Action

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

La commande reset

Le langage COOL : création d’instances

Programmation objets

Page 38: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Exemple de définition d ’une collection d ’instances avec definstances

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le langage COOL : création d’instances

Programmation objets

Page 39: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Rajouter à la liste des instances une collection d ’instances définie par definstances

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

Le langage COOL : création d’instances

Programmation objets

Page 40: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Envoie un message à un objet

Action

Syntaxe

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

La fonction send

Le langage COOL : envoi des messages

<objet-destinataire>: objet destinataire du message<nom-méthode> : nom de la méthode associé au message et que l’objet destinataire doit déclencher|<liste-des-paramètres>| : liste facultative de paramètres de la méthode

(send [<objet-destinataire>] <nom-méthode> |<liste-des-paramètres>|)

Programmation objets

Page 41: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

Exemples

Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS

La fonction send

Le langage COOL : envoi des messages

(send [Insc1] saisie-info)(send [Insc1] affichage-info)

Programmation objets

Page 42: Programmation procédurale et programmation objets avec l’environnement logiciel CLIPS Intelligence Artificielle

• Clips est un outil souple et puissant pour la représentation des connaissances

• Il permet d’utiliser voir combiner différents formalismes (construct)

Les Règles (defrule) Les Faits (deffacts)

Les fonctions (deffunction)

Classes d’objets (defclass) Objets ou instances (definstances) Messages (defmessage-handler)

Formalisme règles de production

Formalisme objet

Formalisme procédural

Représentation déclarative

Représentation hybride

Représentation procédurale

Représentation des connaissances dans CLIPS

Conclusion