An Object-Oriented Scripting Language

An Object-Oriented Scripting Language

XOTcl– an Object-Oriented Scripting Language Gustaf Neumann Uwe Zdun Department of Information Systems Specification of Software Systems Vienna University of Economics University of Essen Vienna, Austria Essen, Germany [email protected] [email protected] First European Tcl/Tk User Meeting, 15/16th June 2000 XOTcl– an Object-Oriented Scripting Language June, 2000 Overview ◆ XOTcl = Extended Object Tcl ◆ XOTcl is freely available from: http://nestroy.wi-inf.uni-essen.de/xotcl ◆ Outline: – Scripting and object-orientation, – XOTcl high-level language constructs, – Example: design pattern-based design of an XML interpreter, – xoComm HTTP implementation: performance comparison with Apache. Gustaf Neumann, Uwe Zdun Slide 1 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Tcl-Strengths Important Ideas in Tcl: ◆ Fast & high-quality development through component-based approach ◆ 2 levels: “System Language” and “Glue Language” ◆ Flexibility through . – dynamic extensibility, – read/write introspection, – automatic type conversion. ◆ Component-Interface through Tcl-Commands ◆ Scripting language for glueing Gustaf Neumann, Uwe Zdun Slide 2 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Motivation for XOTcl ◆ Extend the Tcl-Ideas to the OO-level. ◆ Just “glueing” is not enough! Goals are . – Architectural support – Support for design patterns (e.g. adaptations, observers, facades, . ) – Support for composition (and decomposition) ◆ Provide flexibility rather than protection: – Introspection for all OO concepts – All object-class and class-class relationships are dynamically changeable – Structural (de)-composition through Dynamic Aggregation – Language support for high-level constructs through powerful interceptors (Filters and Per-Object Mixins) Gustaf Neumann, Uwe Zdun Slide 3 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Filters ◆ A filter is a special instance method registered for a class C. Every time an object of class C receives a message, the filter is invoked automatically. ◆ Three parts, each optional: Filter_3 – pre-part, filter-chain Filter_2 } Class A – call to next, invokes: Filter_1 filter-chain, Class A • actual called method. o pre-part • call a1 – post-part. post-part result ◆ Filter-inheritance. Gustaf Neumann, Uwe Zdun Slide 4 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Example: Simple Filter Class A ;# Class Definition A a1 ;# Instance a1 of A A instproc Filter-1 args { ;# Filter instance method puts "pre-part of Filter-1" next puts "post-part of Filter-1" } A filter Filter-1 ;# Filter registration a1 set x 1 ;# Method invocation Applications: Trace facility, Composite Pattern, Proxy Pattern, Observers . Gustaf Neumann, Uwe Zdun Slide 5 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Per-Object Mixins ◆ A per-object mixin is a class which is mixed into the precedence order of an object in front of the precedence order implied by the class hierarchy. Motivation: ◆ Model behavior of individual objects Object (decorator). ◆ Handle orthogonal aspects not only next through multiple inheritance. next next ◆ Intrinsic vs. extrinsic behavior, similar to roles. Mix1 A . proc1 proc1 proc2 per-object Applications: timing, statistics, persistence, mixin instance-of life-cycle, chain of responsibility, adapter method anObject invocation Gustaf Neumann, Uwe Zdun Slide 6 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Example Code for Per-Object Mixins Class A ;# Class definition A instproc proc1 {} { ;# Method definition puts [self class]; next } A instproc proc2 {} { ;# Method definition puts [self class]; next } Class Mix1 ;# Class definition Mix1 instproc proc1 {} { ;# Method definition puts [self class]; next } A anObject ;# Instantiation of class A anObject mixin Mix1 ;# Mixin registration anObject proc1 ;# -> results in output "::Mix1 ::A" anObject proc2 ;# -> results in output "::A" Gustaf Neumann, Uwe Zdun Slide 7 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Dynamic Object Aggregations and Nested Classes ◆ Nesting though namespaces: Classes and objects in XOTcl can contain other classes/objects. Dynamic Object Aggregation resembles Part-of relationship in a dynamic ! and introspective fashion. Nested Classes reduce interference of independently developed program ! structures. ◆ Class nesting and aggregation semantics are handled through XOTcl object system (including built-in methods for deep copy and deep move). Gustaf Neumann, Uwe Zdun Slide 8 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Example Code: Nested Classes/Dynamic Object Aggregation Class Agent ;# Class definition Class Agent::Head ;# Nested classes Class Agent::Body Agent instproc init args { ;# Constructor aggregates two ::Agent::Head [self]::head ;# objects dynamically ::Agent::Body [self]::body } Agent myAgent ;# Object creation puts "Children: [myAgent info children]" ;# Output: head body myAgent::head destroy ;# Agent looses his head puts "Children: [myAgent info children]" ;# Output: body Gustaf Neumann, Uwe Zdun Slide 9 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Further Functionalities provided in XOTcl ◆ Assertions reduce interface and reliability problems caused by dynamic typing: – Design by contract: invariants and pre-/post-conditions for methods, – per-class and object-specific assertions. ◆ Meta-Data enhances self-documentation of objects and classes. ◆ Automatic Name Creation with autoname. ◆ Abstract Classes, ◆ Parameters. Gustaf Neumann, Uwe Zdun Slide 10 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Example: XML Parser/Interpreter ◆ Constructs a composite object structure from XML documents ◆ OO-implementation using design patterns, based on TclXML, around 120 lines (including example visitors and reusable pattern) ◆ Changeability and Adaptability through: – dynamics, – introspection, – patterns in hot spots, – interceptors per-object and filter, ◆ Patterns: Wrapper Facade, Builder, Composite, Interpreter, Visitor, Observer, . ◆ Extensibility through new visitors, observers Gustaf Neumann, Uwe Zdun Slide 11 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Partial Design of the XML Parser/Interpreter Visitor Interpreter/Composite Client TreeVisitor AbstractNode XMLParser NodeBuilder Builder XMLVisitor ... XMLNode TclXMLParser XMLBuilder VisitObserver may be Functions used as per-object mixin TclXML PrintObserver Per-Object Wrapper Facade Observer Gustaf Neumann, Uwe Zdun Slide 12 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Assessments ◆ size 73 lines (including two more visitors), ◆ + 22 lines for the Wrapper Facade and 25 lines for the Composite, ◆ Reuseable Composite implementation and reuseable TclXML wrapper, ◆ Changeability and Adaptability through: – dynamics, – introspection, – patterns in hot spots, – interceptors per-object and filter, ◆ Extensibility through new visitors. Gustaf Neumann, Uwe Zdun Slide 13 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Speed Comparison: XOTcl based HTTP Server vs. Apache ¦ Single Processor 466MHz Celeron Dual 200 MHz PPro Server ¦ Single Processor 466MHz Celeron 10MBit Clients 10MBit Clients Local Clients 100 100 100 ¤ ¥ 80 80 ¥ 80 £ ¤ 60 60 ¤ 60 XOTcl Server £ £ 40 40 40 Apache 1.3.6 Seconds Seconds Seconds Ratio (Percent) 20 20 20 0 0 0 −20 −20 −20 ¡ ¡ ¡ 0 10 20 0 10 20 0 10 20 ¢ ¢ Clients ¢ Clients Clients ◆ Basic functionality of HTTP/1.1 in around 250-400 lines of XOTcl code ◆ 1-20 simultanoues client sessions issuing each 76 HTTP requests. Modern CPUs are fast enough to execute even complex applications in ! object-oriented scripting language with sufficient speed. Gustaf Neumann, Uwe Zdun Slide 14 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 Summary and Conclusions ◆ XOTcl provides high-level language constructs for software composition, ◆ tailored for the use with scripting applications: – dynamics, – (read/write) introspection, – flexible glueing of (preexisting) components. ◆ Combination of: scripting, object-orientation, and high-level language constructs Flexible composition of software systems. ) Coping with changes at runtime/design time. ) Gustaf Neumann, Uwe Zdun Slide 15 University of Essen XOTcl– an Object-Oriented Scripting Language June, 2000 More XOTcl Material ◆ Gustaf Neumann, Uwe Zdun: Filters as a Language Support for Design Patterns in Object-Oriented Scripting Languages, Proceedings of the 5th Conference on Object-Oriented Technologies and Systems (COOTS´99), San Diego, May 3-9, 1999. ◆ Gustaf Neumann, Uwe Zdun: Enhancing Object-Based System Composition through Per- Object Mixins, Proceedings of Asia-Pacific Software Engineering Conference (APSEC‘99), Takamatsu, Japan, December 6-10, 1999. ◆ Gustaf Neumann, Uwe Zdun: Towards the Usage of Dynamic Object Aggregations as a Form of Composition, Proceedings of Symposium of Applied Computing (SAC‘00), Como, Italy, March 19-21, 2000. ◆ Gustaf Neumann, Uwe Zdun: High-Level Design and Architecture of an HTTP-Based Infrastructure for Web Applications, Word Wide Web Journal, Baltzer, early 2000. ◆ More on http://www.xotcl.org, http://nestroy.wi-inf.uni-essen.de/xotcl Gustaf Neumann, Uwe Zdun Slide 16 University of Essen.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    17 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us