Incr Tcl

langage de programmation

Incr Tcl est une extension du langage Tcl permettant une sorte de programmation orientée objet. Le nom est un jeu sur C/C++ : en C, ++ est l'opérateur d'incrémentation, ce qui équivaut logiquement à incr en Tcl.

Exemple de programme Incr Tcl

La syntaxe s'inspire, d'une manière générale, de celle de C++.

Concepts

modifier

Nous supposons connus les principaux concepts de la programmation orientée-objet.

Le concept-clé est la classe, qui comporte des variables d'instance (variable) et des variables communes à toutes les instances (common). Seule une variable commune peut être définie comme un tableau associatif (array).

Les objets instanciés doivent être explicitement détruits, c'est pourquoi une classe peut comporter un constructeur et un destructeur. Une commande spécifique (itcl::local) permet d'éviter cela en déléguant la destruction de l'objet à la désaffectation de la variable le pointant.

Les méthodes (method) et procédures (proc) contenues dans une classe suivent la syntaxe de la commande proc, et peuvent par conséquent prendre un nombre variable d'arguments. La surcharge de méthodes est en effet possible par ce moyen.

Tous les mots-clés susdits peuvent être précédés des qualificatifs suivants :

  • private
  • protected
  • public

Incr Tcl permet l'héritage multiple, comme en C++ naturellement.

Exemple pratique

modifier
package require Itcl
itcl::class Personne {
   private variable nom
   private variable prenom
   public variable age 18
   constructor {vnom vprenom} {
      set nom $vnom
      set prenom $vprenom
      puts "Bienvenue, $prenom $nom!"
   }
   method coucou {depuis} {
      puts "Bonjour à toi, $prenom!"
      if {$depuis != ""} {
         puts "Nous sommes à $depuis."
      }
   }
   method estMajeur {} {
      expr {$age>=18}
   }
   method nommer {} {
      return "$prenom $nom"
   }
}
# instanciation
Personne lj Justard Laurent
lj configure -age 16
if {[lj estMajeur]} {
   puts "[lj nommer] est majeur"
}
lj coucou "la Côte d'Azur"
# Destruction de l'objet
itcl::delete object lj
#itcl::delete class Personne
  • (en) Chad Smith and Larry W. Virden, Incr Tcl/Tk from the Ground Up: The Accelerated Track for Professional Programmers, McGraw-Hill Professional Publishing, (ISBN 0-072-12106-8), 1999.

Liens externes

modifier