Incr Tcl
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++.
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é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
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
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.