programmation procédurale et programmation objets avec l’environnement logiciel clips...
Post on 04-Apr-2015
118 Views
Preview:
TRANSCRIPT
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
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
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
(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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
(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
(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
(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
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
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
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
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
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
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
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
• 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
top related