Incr Tcl

programovací jazyk

Incr Tcl, případně [Incr Tcl] (zkráceně Itcl) je rozšíření jazyka Tcl o objektově orientované programování. Název (včetně hranatých závorek) je nápodobou použití operátoru ++ pro název jazyka C++ znamenající zvýšení hodnoty jména jazyka o jedničku. Itcl je implementováno jako balíček (package) do jazyka Tcl i jako samostatný interpret.

Itcl
ParadigmaMultiparadigmatický: imperativní, strukturovaný, procedurální, funkcionální, objektově orientovaný, řízený událostmi
Vznik1993
AutorMichael McLennan
VývojářMichael McLennan
Poslední verzeItcl4.1.1 (2017-12-21)
Typová kontroladynamická, reprezentací všech typů je textový řetězec
Ovlivněn jazykyTcl, C++
Webitcl na SourceForge

Příkazy

Balíček Itcl poskytuje několik nových příkazů obsažených ve jmenném prostoru itcl. Ve verzi 4.1.1 jsou tyto příkazy:

itcl::Root
itcl::addcomponent
itcl::adddelegatedmethod
itcl::adddelegatedoption
itcl::addobjectoption
itcl::addoption
itcl::body
itcl::class
itcl::clazz
itcl::code
itcl::configbody
itcl::delete
itcl::delete_helper
itcl::ensemble
itcl::extendedclass
itcl::filter
itcl::find
itcl::finish
itcl::forward
itcl::is
itcl::local
itcl::mixin
itcl::nwidget
itcl::scope
itcl::setcomponent
itcl::type
itcl::widget
itcl::widgetadaptor

Struktura tříd a objektů

Itcl přejalo mnoho konceptů z C++: Třída může obsahovat konstruktory, destruktor, metody a proměnné. Lze určit míru přístupu k jednotlivým členům třídy (metodám a proměnným) pomocí klíčových slov public, protected a private. Třídy mohou deklarovat (nebo bezprostředně definovat) procedury, které lze volat z třídy – není nutné vytvářet objekt této třídy (odpovídají statickým funkcím v C++ třídách). Další netypickou složkou jsou sdílené proměnné, které jsou deklarovány (nebo okamžitě inicializovány) klíčovým slovem common (odpovídají statickým proměnným v C++ třídách) – mají přístup jak k metodám třídy, tak k jejím procedurám. Nechybí ani polymorfismus . Každá třída může dědit z jiných tříd (jedné nebo více). Každá třídní metoda je v Itcl virtuální.

Itcl umožňuje (stejně jako Tcl) používání jmenných prostorů pro oddělení jmen příkazů a proměnných.

Příklad třídy v Itcl

Příklad třídy implementující zásobník:

itcl::class Stack {    private {        variable stack ""    }    public {        # Přidá prvek "arg" na vrchol zásobníku        method push {arg}        # Odstraní poslední položku z vrcholu zásobníku a vrátí ji        method pop {}        # Vyprázdní zásobník        method clear {}        # Vrátí počet prvků v zásobníku        method count {}    }}itcl::body Stack::push {arg} {    lappend stack $arg}itcl::body Stack::pop {} {    if {[count] == 0} {return}    set last [lindex $stack end]    set stack [lrange $stack 0 end-1]    return $last}itcl::body Stack::clear {} {    set stack ""}itcl::body Stack::count {} {    return [llength $stack]}

Tuto třídu lze používat takto:

Stack zasobnikzasobnik push "jedna"zasobnik push "dva"zasobnik push "tři"puts [zasobnik pop]puts [zasobnik pop]puts [zasobnik pop]

Výstupem bude:

třidvajedna

Itcl a jazyk C

Itcl představilo inovativní řešení: Při psaní rozšíření pro Tcl na základě Itcl lze použít funkci Itcl_RegisterC(), pro „registraci” funkce napsané v jazyce C v registru Itcl. Funkci pak lze používat přímo v definici třídních metod, jejímu jménu bude v Itcl předřazen znak @. Tímto způsobem lze napsat implementaci rozšíření založenou pouze na třídě Itcl.[1]

Další rozšíření založená na Itcl

Mezi rozšíření založená na Itcl patří Itk (kombinace Tk a Itcl) a IWidgets (sada dalších komponent GUI založených na Itk).

Licence

Itcl má stejně jako Tcl/Tk velmi volné licenční podmínky. Itcl lze můžete používat, kopírovat, upravovat a dokonce dále šířit bez jakéhokoli písemného souhlasu nebo licenčního poplatku za předpokladu, že veškerá upozornění o autorských právech zůstanou nedotčena. Nemůžete nárokovat vlastnictví softwaru; autoři a jejich instituce si ponechávají vlastnictví, jak je popsáno v souborech "license.terms" zahrnutých do standardní distribuce. Další informace naleznete na adrese incrtcl.sourceforge.net/itcl/copyright.html.[2]

Referenční příručka

Kniha Chada Smithe „Incr Tcl from the Ground Up“[3] je úplná referenční příručka [incr Tcl], která pokrývá základy jazyka, problémy návrhu OO, přetížení, opakované použití kódu, vícenásobnou dědičnost abstraktní základní třídy a problémy s výkonem. Navzdory svému rozsahu je uspořádána spíše výukově než encyklopedicky. Od září 2004 není v tisku.

Budoucnost Itcl

Probíhají diskuse o tom, jak začlenit Itcl do standardního Tcl, aby vývojáři mohli volně používat objektové vlastnosti v Tcl. Začlenění Itcl do jádra Tcl by přineslo možnost typové kontroly, přístup k proměnným pomocí syntaxe objekt.proměnná a další.

Odkazy

Reference

V tomto článku byly použity překlady textů z článků Incr Tcl na polské Wikipedii a Incr Tcl na anglické Wikipedii.

Související články

Externí odkazy