Incr Tcl

Un article de Wikipédia, l'encyclopédie libre.

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.

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

Sommaire

[modifier] Concepts

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égant 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.

[modifier] Exemple pratique

itcl::class Personne {
   private variable nom
   private variable prénom
   public variable age 18
   constructor {vnom vprenom} {
      set nom $vnom
      set prenom $vprenom
      puts "Bienvenue, $prénom $nom!"
   }
   method coucou {depuis} {
      puts "Bonjour à toi, $prénom!"
      if {$depuis != ""} {
         puts "Nous sommes à $depuis."
      }
   }
   method estMajeur {} {
      expr {$age>=18}
   }
   method nommer {} {
      return "$prenom $nom"
   }
}
# instanciation
Personne lj Laurent Justard
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

[modifier] Livres

  • (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.

[modifier] Liens externes

Autres langues