Incr Tcl

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

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 do jazyka Tcl i jako samostatný interpret.

Příkazy

Balíček Itcl poskytuje několik nových příkazů obsažených ve jmenném prostoru itcl. Ve verzi 4. +more1. 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. +more 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 zasobnik zasobnik push "jedna" zasobnik push "dva" zasobnik push "tři" puts [zasobnik pop] puts [zasobnik pop] puts [zasobnik pop]

Výstupem bude:

tři dva jedna

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 @. +more Tímto způsobem lze napsat implementaci rozšíření založenou pouze na třídě Itcl.

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. +more 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.

Referenční příručka

Kniha Chada Smithe „Incr Tcl from the Ground Up“ 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. +more 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. +moreproměnná a další.

Odkazy

Reference

Související články

tcl * C++ * objektově orientované programování * OTcl * XOTcl * Snit * tcllib * C++/Tcl * Itk * Tk (framework) * STOOOP

Externí odkazy

[url=https://sourceforge.net/projects/tclweb/]Projekt tclweb s mailing listem[/url], sourceforge.net

Kategorie:Rodina jazyků Tcl Kategorie:Objektově orientované programování

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top