Object Oriented Tcl ([incr-Tcl]) is darned good - but it's only a requirement in a small proportion of the
Tcl Training Courses that I give. So it was with real pleasure that I spent some time yesterday writing an example in front of my class in the Nottingham area to show them just how fabulous it is!
The source code of the example I came up with is
here, and I have added a whole lot of comments in to it this morning so that readers can see a "hello world" type example of how Tcl implements classes, objects, inheritance, encapsulation, security matters, polymorphism and the rest. And for readers who would like a deeper explanation, you'll find ongoing links ... or I would love to see you on a course!
P.S. Yes - we can train you whether or not you have prior OO experience; our training resources include modules that
overview straightforward objects,
talk about how objects can be build from other objects and
introduce you to OO design principles so you can start making the very best of the facilities
Here's what you get when you run the code I've linked to above.
Dorothy:stuffing grahamellis$ tclsh exv
East Midlands !!!!! place1 - 960 40
First Great Western !!!!! place2 - 1250 25
Connex !!!!! place3 - 0
FGW !!!!! place4 - 5264 94
Dorothy:stuffing grahamellis$
(written 2008-02-02)
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
T245 - Tcl/Tk - [incr-Tcl] [290] Object Orientation in Tcl - [incr-Tcl] - (2005-04-24)
[656] Think about your design even if you don't use full UML - (2006-03-24)
[1819] Calling base class constructors - (2008-10-03)
[1925] Introduction to Object Oriented Programming - (2008-12-06)
[3142] Private and Public - and things between - (2011-01-22)
[4456] Objects in Tcl - iTcl - updated first steps example - (2015-03-11)
[4460] Using Object Oriented Tcl and the Tk toolkit together - real life example - (2015-03-12)
Q907 - Object Orientation and General technical topics - Object Orientation: Design Techniques [80] OO - real benefits - (2004-10-09)
[236] Tapping in on resources - (2005-03-05)
[507] Introduction to Object Oriented Programming - (2005-11-27)
[534] Design - one name, one action - (2005-12-19)
[747] The Fag Packet Design Methodology - (2006-06-06)
[831] Comparison of Object Oriented Philosophy - Python, Java, C++, Perl - (2006-08-13)
[836] Build on what you already have with OO - (2006-08-17)
[1047] Maintainable code - some positive advice - (2007-01-21)
[1217] What are factory and singleton classes? - (2007-06-04)
[1224] Object Relation Mapping (ORM) - (2007-06-09)
[1435] Object Oriented Programming in Perl - Course - (2007-11-18)
[1538] Teaching Object Oriented Java with Students and Ice Cream - (2008-02-12)
[2169] When should I use OO techniques? - (2009-05-11)
[2170] Designing a heirarcy of classes - getting inheritance right - (2009-05-11)
[2327] Planning! - (2009-08-08)
[2380] Object Oriented programming - a practical design example - (2009-08-27)
[2501] Simples - (2009-11-12)
[2523] Plan your application before you start - (2009-12-02)
[2717] The Multiple Inheritance Conundrum, interfaces and mixins - (2010-04-11)
[2741] What is a factory? - (2010-04-26)
[2747] Containment, Associative Objects, Inheritance, packages and modules - (2010-04-30)
[2785] The Light bulb moment when people see how Object Orientation works in real use - (2010-05-28)
[2865] Relationships between Java classes - inheritance, packaging and others - (2010-07-10)
[2878] Program for reliability and efficiency - do not duplicate, but rather share and re-use - (2010-07-19)
[2889] Should Python classes each be in their own file? - (2010-07-27)
[2953] Turning an exercise into the real thing with extreme programming - (2010-09-11)
[2977] What is a factory method and why use one? - Example in Ruby - (2010-09-30)
[3063] Comments in and on Perl - a case for extreme OO programming - (2010-11-21)
[3085] Object Oriented Programming for Structured Programmers - conversion training - (2010-12-14)
[3260] Ruby - a training example that puts many language elements together to demonstrate the whole - (2011-04-23)
[3454] Your PHP website - how to factor and refactor to reduce growing pains - (2011-09-24)
[3607] Designing your application - using UML techniques - (2012-02-11)
[3760] Why you should use objects even for short data manipulation programs in Ruby - (2012-06-10)
[3763] Spike solutions and refactoring - a Python example - (2012-06-13)
[3798] When you should use Object Orientation even in a short program - Python example - (2012-07-06)
[3844] Rooms ready for guests - each time, every time, thanks to good system design - (2012-08-20)
[3878] From Structured to Object Oriented Programming. - (2012-10-02)
[3887] Inheritance, Composition and Associated objects - when to use which - Python example - (2012-10-10)
[3928] Storing your intermediate data - what format should you you choose? - (2012-11-20)
[3978] Teaching OO - how to avoid lots of window switching early on - (2013-01-17)
[4098] Using object orientation for non-physical objects - (2013-05-22)
[4374] Test driven development, and class design, from first principles (using C++) - (2014-12-30)
[4430] The spirit of Java - delegating to classes - (2015-02-18)
[4449] Spike solution, refactoring into encapsulated object methods - good design practise - (2015-03-05)
[4628] Associative objects - one object within another. - (2016-01-20)
Some other Articles
Comment spam blocked. Please comment via ForumsExpecting a item from a list of possiblesRailway Acronyms and AbbreviationsTcl - learning how to use namespaces, packages and libraries togetherObject Oriented TclSelecting file names in a shell - one word or anotherCarers at work - court case changesJust one thing let the service down - but that is my memoryNottingham - just text!Ive just received an email from myself. Should I be worried?