Incr TCL (ITCL) este prima dintre extensiile orientate pe obiecte ale limbajului TCL . Implementat parțial în limbajul C. Cu utilizarea sa este scrisă biblioteca de widget -uri grafice incr Widgets (iWidgets). Numele acestei extensii este un fel de „traducere” a numelui C++ în limbajul Tcl , comanda incr , ca și operația ++ , își incrementează argumentul cu 1.
Alături de XOtcl și SNIT , este una dintre cele mai populare trei extensii Tcl orientate pe obiecte [1] .
ITCL - definește următoarele comenzi:
De exemplu, este dat un înveliș de obiect peste fișierele text Tcl. Afișează utilizarea configuratoarelor.
fisier clasa { # descrieți și setați valorile inițiale # de variabile locale variabile private fid " " nume variabilă publică „” acces variabilă publică „r” # definește constructorul și constructorul destructor { args } { eval configure $args # configure activează configuratorii } destructor { dacă { $fid != "" } { închide $fid } } #describe class methods method get {} method put { line } method eof {} } # defini corpurile metodei body File::get {} { return [ gets $fid ] } body File::put { line } { pune $fid $line } body File::eof {} { return [ :: eof $fid ] } # definiți configuratorul pentru # nume variabilă globală # configuratorul pentru acces nu este creat configbody File::name { dacă { $fid != "" } { închide $fid } set fid [ deschide $nume $acces ] } # # clasa File în acțiune: # # creați un obiect File x #configurează numele său x configure - name / etc / passwd #afișează conținutul fișierului, rând cu rând, în timp ce { ! [ xeof ] } { pune „=> [x get]” } #delete object șterge obiectul xDiferiții membri ai unei clase sunt descriși cu următoarele comenzi disponibile în interiorul definiției clasei: constructor , destructor , method , proc (spre deosebire de o metodă nu este moștenită), variabilă , comun (asemănător cu static în C++), public , protected , private , set și matrice . Moștenirea este setată cu comanda moștenire . Moștenirea multiplă este permisă. Toate metodele sunt virtuale. Când definiți o clasă, puteți utiliza tehnici de metaprogramare , de exemplu, pentru a defini mai multe variabile locale într-o buclă, împreună cu setați și obțineți accesorii la acestea [3] .
O echipă (sau ansamblu) compusă este definită ca:
nume ansamblu comandă comp arg arg ...sau
compoziție nume ansamblu { numele părțiiArgumente părți body … … nume ansambluSubConst { numele părții Subparts argumente body … … } }Ansamblurile Tcl sunt un supliment sintactic convenabil pentru mecanismul standard al ansamblului de spații de nume Tcl . Acest mecanism vă permite să grupați mai multe comenzi într-un singur spațiu de nume - un ansamblu. Apelarea comenzii - o parte a ansamblului arată astfel:
nameConst argumente namePartsPot exista orice număr de constructe de ansamblu cu același nume, toate părțile definite în ele vor fi incluse în același ansamblu [4] .