Open Source im professionellen Einsatz
Newsletter abonnieren
HEFTARCHIV | NEWS | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO

Partner-Links:
Shopping
Yatego Deutschlands größte Shoppingmall. 7000 Shops,
2.5 Mio Artikel. Alle Bestseller, Gutscheine und Liveshopping.

Firewall bei Mercateo kaufen.

Ein Preisvergleich bei Hardware lohnt sich.

Bei inkpool.de Laserdrucker und mehr bestellen.

Sie suchen günstige Laptops? Schauen Sie doch mal bei Preisvergleich.org, Preisvergleich.eu, Preisvergleich.ch und Preisvergleich.at vorbei.

Linux Jobs

Job offers Netherlands


user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2001  »  07  »  Klasse Federn  

RSS-Feed der aktuellen News von Linux-Magazin Online
Diesen Artikel drucken Diesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren

Objektorientierung mit Tcl

Klasse Federn

von Carsten Zerbst
Erschienen im Linux-Magazin 2001/07

Tcl ist das bestgehütete Geheimnis der IT-Industrie - und sehr lebendig. Die im Auftakt unserer Tcl-Reihe "Feder-Lesen" vorgestellte objektorientierte Erweiterung mit dem sperrigen Namen [incr Tcl] hat einen guten Teil zur Verbreitung von Tcl beigetragen.

Mit "Feder-Lesen" startet das Linux-Magazin eine Reihe, die in loser Folge über Neuigkeiten aus der Tcl-Welt berichtet. Dabei werden jeweils Werkzeuge oder Erweiterungen vorgestellt, mit deren Hilfe sich Aufgaben in Tcl besonders leicht und elegant lösen lassen. Da sich in der letzten Zeit das Entwicklungsmodell von Tcl geändert hat, beginnt die erste Folge mit den Änderungen und Neuerungen. Im Anschluss wird die objektorientierte Erweiterung [incr Tcl] vorgestellt.

Schon seit Jahren trägt die Skriptsprache Tcl den Stempel "The IT-Industry's best kept secret". Obwohl die Gemeinde der Tcl-Programmierer weiter zunimmt, ist diese selbstironische Bezeichnung durchaus berechtigt. Während an jeder Ecke über Lösungen mit den Konkurrentinnen Perl oder Python geredet wird, verrichtet Tcl seinen Dienst ohne viel Aufhebens im Verborgenen.

Das hat seinen Gründe: So gibt es bis heute immer noch kein Äquivalent zum Perl-CPAN oder zu Python.org, die Suche nach Tcl-Erweiterungen oder nach Dokumentation für ein bestimmtes Problem kann sich daher schwierig gestalten. Der Kasten "Tcl: Was bisher geschah" beleuchtet deshalb den Stand der Dinge, wie es dazu kam und was die nahe Zukunft bringen wird.

Durch viele Änderungen in den letzten Monaten sind viele Erweiterungen und Informationen inzwischen noch schwerer zu finden, als sie das vorher schon waren. Die Informationsseite der Entwickler liegt nun bei Active State [1]. Sie enthält viele Verweise auf Dokumentation, Erweiterungen und Programme. Eine weitere Möglichkeit ist die Tcl-Foundry bei Sourceforge [2]. Bei vielen Problemen des Alltags bietet sich ein Blick ins Tcl'ers Wiki an [3]. Wer auch hier noch nicht fündig wird, für den ist die Newsgroup [4] die Ultima Ratio für alle Fragen zu Tcl.

Nicht nur in der Tcl-Newsgroup taucht immer wieder der alte Kritikpunkt an Tcl auf, nämlich die fehlende Objektorientierung. Glücklicherweise lässt sich diese Fähigkeit leicht durch eine Erweiterung nachrüsten - eine sehr ausgereifte und beliebte OO-Erweiterungen ist [incr Tcl], das Thema des Monats im Feder-Lesen.

Doppelplus gut: [incr Tcl]

Auch bei Skriptsprachen kommt häufig der Wunsch nach den Segnungen der objektorientierten Entwicklung auf: Klassen, Vererbung, Datenkapselung und mehr. Obwohl sich Tk schon sehr objektorientiert anfühlt, unterstützt Tcl außer den Namensräumen keine OO-Features. Hier springt die Erweiterung [incr Tcl] in die Bresche. Nicht nur der Name ähnelt dem von C++: Das Tcl-Kommando incr ist das Äquivalent zu dem Postfix ++ bei C, [incr Tcl] möchte ebenso wie C++ eine Erweiterung der Grundsprache um OO-Features sein. Die Erweiterung ist bei Sourceforge zu finden [5], sie ist aber auch in den meisten Linux-Distributionen enthalten.

Vor ihrer Verwendung muss die Erweiterung in eine tclsh oder wish geladen werden, das geschieht mit dem Kommando package require Itcl. Alle Kommandos von [incr Tcl] sind im Namensraum itcl definiert, entweder verwendet man sie mit vollem Namen oder importiert sie in den aktuellen Namensraum. Im Folgenden geht es am Beispiel eines Editors für Type-1-Schriften um die Programmierung mit dieser Erweiterung.

Klassenweise

Klassen sind der Grundbaustein der objektorientierten Programmierung, eine gewisse Vertrautheit mit dem Klassenkonzept wird hier vorausgesetzt. Bevor Objekte erzeugt und verwendet werden können, ist eine Klasse zu definieren. Die Klasseneinteilung legt fest, welche Variablen und Methoden existieren und welche Aufgaben sie erfüllen. Um Klassenvariablen zu definieren, reicht die Aufzählung der Namen mit dem Kommando variable.

Methoden werden ähnlich wie normale Tcl-Prozeduren definiert: Nach dem Namen folgen die Eingabeparameter und danach ein Block mit dem eigentlichen Quellcode. Innerhalb dieses Blocks kann direkt auf die Klassenvariablen zugegriffen werden. Außerdem existiert dort die Variable this, die eine Referenz auf das aktuelle Objekt enthält. Zusätzlich lassen sich zwei besondere Methoden definieren: der Konstruktor und der Destruktor. Sie werden beim Erzeugen beziehungsweise beim Löschen eines Objekts aufgerufen. Der Aufbau der beiden ähnelt wieder normalen Prozeduren, nur hat der Destruktor keine Eingabevariablen.

Als Beispiel dient im Listing 1 die Definition einer Punkt-Klasse. Jeder Punkt hat eine x- und eine y-Koordinate, die durch den Konstruktor gesetzt werden. Außerdem lässt sich ein Punktobjekt verschieben.

Die mit [incr Tcl] definierten Klassen sind so ähnlich wie die Tk-Widgets verwendbar. Wie Listing 2 zeigt, lautet der Aufruf zum Erzeugen eines neuen Objekts Klassenname Objektname ?Parameter?. Der Objektname lässt sich entweder explizit wählen oder mit #auto automatisch vergeben. Das Objekt steht nun unter diesem Namen als neues Kommando zur Verfügung, die Syntax ist Objektname Methode ?Argumente?. Bei jedem Objekt stehen die Methoden cget, configure und isa zur Verfügung.

Mit den ersten beiden lassen sich die als public definierten Variablen abfragen und setzen. Die Methode isa überprüft, ob ein Objekt Mitglied einer bestimmten Klasse ist. Dazu kommen noch die selbst definierten Methoden, hier die Methode verschieben. Die Kommandos delete object Objektname und delete class Klassenname löschen das Objekt oder die Klassen wieder.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Diese Seite zu Mister Wong hinzuf�gen Webnews yigg it! Slashdot it! Twittern!
Whitepaper
The Role of Open Source in Data Integration

Obwohl in den letzten Jahren viele technische Fortschritte erzielt werden konnten, verfügen die meisten Datenintegrationsprozesse nach wie vor nur über eine sehr begrenzte Automatisierung. Das vorliegende White Paper von dem Industry Analyst Mark Madson wird zunächst ein grundlegendes Verständnis von Daten Integration vermitteln, die Vorzüge von Open Source Lösungen für Daten Integration erläutern und Ihnen professionelle Empfehlungen geben, damit Sie Ihre Integrationsjobs noch einfacher und produktiver gestalten können.

Download PDF (Registrierung erforderlich)
Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele (Folge 2)

Der zweite Teil des Open Source Datenintegration in der Praxis: Fallstudien und Anwendungsbeispiele White Papers beleuchtet anhand weiterer ausgewählter Case Studies die Implementierung von Open Source Datenintegration in der Praxis und benennt die daraus resultierenden Vorteile.

Download PDF (Registrierung erforderlich)
Kommentare (0)
 

Impressum |Datenschutzerklärung | © 2010Linux New Media AG
Partner-Sites
Deutschland: [Admin-Magazin] [LinuxUser] [EasyLinux] [Linux-Community] [Linux Technical Review] [Ubuntu User]
Europa: [EasyLinux Polen] [Linux Magazine Polen] [Linux Magazine Spanien]
International: [Linux Magazine International] [Linux Pro Magazine] [Ubuntu User] [Linux Magazine Brasilien] [EasyLinux Brasilien]