Incr Tcl

Incr Tcl

Incr TCL (ITCL) — первое из объектно-ориентированных расширений языка TCL. Частично реализовано на языке Си. С его использованием написана библиотека графических виджетов incr Widgets (iWidgets). Название этого расширения является своего рода «переводом» названия С++ на язык Tcl, команда incr, как и операция ++, увеличивает свой аргумент на 1.

Наряду с XOtcl и SNIT — одно из трёх наиболее популярных объектно-ориентированных расширений Tcl[1].

Содержание

Команды

ITCL — определяет следующие команды:

  • itcl::body — определяет и переопределяет тело методов;
  • itcl::class — описание класса, cм. пример ниже;
  • itcl::code — даёт доступ к закрытым (private) членам класса, и при нормальном дизайне программы не должна использоваться прикладным программистом;
  • itcl::configbody — позволяет связывать с переменной класса один или несколько конфигураторов (что-то вроде триггеров SQL), см. пример ниже;
  • itcl::delete — удаляет объекты, классы и пространства имён;
  • itcl::ensemble — создаёт и модифицирует составные команды, cм. подробности ниже;
  • itcl::find — создаёт список классов и объектов текущего пространства имён, удовлетворяющих образцу;
  • itcl::local — создаёт локальный экземпляр класса (внутри определения процедуры);
  • itcl::scope — ограничивает обращение к переменной текущим контекстом для передачу в не объектно-ориентированные команды Tcl/Tk[2].
  • itcl::is — проверяет, принадлежит ли переменная классу.

Пример определения класса

В качестве примера приведена объектная оболочка над текстовыми файлами Tcl. Показано использование конфигураторов.

class File {
 
    # описываем и задаём начальные значения
    # локальных переменных
    private variable fid ""
 
    public variable name ""
    public variable access "r"
 
    # определяем конструктор и деструктор
    constructor {args} {
        eval configure $args
        # слово configure активирует конфигураторы
    }
 
    destructor {
        if {$fid != ""} {
            close $fid
        }
    }
 
    #описываем методы класса
    method get {}
    method put {line}
    method eof {}
}
 
# определяем тела методов
 
body File::get {} {
    return [gets $fid]
}
body File::put {line} {
    puts $fid $line
}
body File::eof {} {
    return [::eof $fid]
}
 
# определяем конфигуратор для 
# глобальной переменной name
# конфигуратор для access не создан
 
configbody File::name {
    if {$fid != ""} {
        close $fid
    }
    set fid [open $name $access]
}
 
#
# класс File в действии:
#
 
# создаём объект
File x
 
#конфигурируем его имя
x configure -name /etc/passwd
 
#выводим содержимое файла, строка - за строкой
while {![x eof]} {
    puts "=> [x get]"
}
 
#удаляем объект
delete object x

Различные члены класса описываются с следующих, доступных внутри определения классов, команд: constructor, destructor, method, proc (в отличие от метода не наследуется), variable, common (подобие static в С++), public, protected, private, set и array. Наследование задаётся командой inherit. Допускается множественное наследование. Все методы - виртуальны. При определении класса можно использовать приёмы метапрограммирования, например чтобы определить в цикле несколько локальных переменные, вместе с set и get методами доступа к ним [3].

Составные команды

Составная команда (или ансамбль) определяется в виде:

ensemble имяСост команда арг арг …

или

ensemble имяСост {
    part имяЧасти аргументы тело
    … … 
    ensemble имяПодСост {
        part имяПодЧасти аргументы тело
        … … 
    }
}

Ансамбли Tcl - это удобная синтаксическая надстройка над стандартным механизмом namespace ensemble Tcl. Это механизм позволяет сгруппировать несколько команд в одно пространство имён - ансамбль. Обращение к команде - части ансамбля выглядит как:

имяСост имяЧасти аргументы

Может существовать любое количество конструкций ensemble с одним и тем же именем, все определённые в них части войдут в один и тот же ансамбль[4].

Ссылки

См. также

Примечания

  1. Clif Flynt Ch. 9. Basic Object Oriented Programming in Tcl // Tcl/Tk: A Developer's Guide. — 3-rd edition. — Elsevier, 2012. — P. 263. — 792 p. — ISBN 978-0-12-384717-1
  2. детали реализации см. в man itcl::scope
  3. см. Automatic get/set methods for an itcl class
  4. естественное для пространства имён поведение

Литература

  • Chad Smith Incr Tcl/Tk from the ground up. — Osborne/McGraw-Hill, 2000. — 746 p. — ISBN ISBN 0-07-212106-8



Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "Incr Tcl" в других словарях:

  • Incr Tcl — Tcl Skriptsprache mit Bytecode Interpreter Basisdaten Paradigmen: imperativ, funktional …   Deutsch Wikipedia

  • Incr Tcl — Saltar a navegación, búsqueda Eclipse corriendo el ejemplo de incr Tcl. [incr Tcl] o itcl es una extensión del lenguaje de programación Tcl para darle soporte de programación orientada a objetos. Su nombre …   Wikipedia Español

  • 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… …   Wikipédia en Français

  • incr Tcl — Eclipse corriendo el ejemplo de incr Tcl. [incr Tcl] o itcl es una extensión del lenguaje de programación Tcl para darle soporte de programación orientada a objetos. Su nombre hace referencia al operador incremento de Tcl, así como C++ utilizaba… …   Wikipedia Español

  • Tcl — Skriptsprache mit Bytecode Interpreter Basisdaten Paradigmen: imperativ, funktional, generativ …   Deutsch Wikipedia

  • TCL — Skriptsprache mit Bytecode Interpreter Basisdaten Paradigmen: imperativ, funktional …   Deutsch Wikipedia

  • Tcl/Tk — Tcl Skriptsprache mit Bytecode Interpreter Basisdaten Paradigmen: imperativ, funktional …   Deutsch Wikipedia

  • TCL — Семантика: императивный, скриптовый Тип исполнения: интерпретатор Появился в: 1988 г. Автор(ы): Джон Остераут Последняя версия: 8.5.7 / 15 апреля 2009 …   Википедия

  • Tcl — Tool Command Language Desarrollador(es) Tcl Core Team[1] …   Wikipedia Español

  • TCL/TK — Tool Command Language Pour les articles homonymes, voir Tcl. Apparu en 1988 …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»