Index: doc/example-scripts/rosetta-abstract-type.html =================================================================== diff -u -N -r24cb8f4bffd49c9375c1c64aa0610933b62511bb -rc4f449cb353be812ba6502ef8e9587e87881f59b --- doc/example-scripts/rosetta-abstract-type.html (.../rosetta-abstract-type.html) (revision 24cb8f4bffd49c9375c1c64aa0610933b62511bb) +++ doc/example-scripts/rosetta-abstract-type.html (.../rosetta-abstract-type.html) (revision c4f449cb353be812ba6502ef8e9587e87881f59b) @@ -1,863 +1,863 @@ - - - - - -Listing of doc/example-scripts/rosetta-abstract-type.tcl - - - - - -
-
-

Rosetta Example: Abstract type

-
-

Define a class without instances and without implemented methods. -For detailed description of this example -see http://rosettacode.org/wiki/Abstract_type

-
-
-
package req nx
-

Define a class AbstractQueue

-
-
-
nx::Class create AbstractQueue {
-
-  :public method enqueue {item} {error "not implemented"}
-  :public method dequeue {} {error "not implemented"}
-
-  :public object method create {args} {
-    error "Cannot instantiate abstract class [self]"
-  }
-}
-

Define a concrete queue (named ListQueue) based -on the Abstract Queue

-
-
-
nx::Class create ListQueue -superclass AbstractQueue {
-
-  :variable list {}
-
-  :public method enqueue {item} {
-    lappend :list $item
-  }
-
-  :public method dequeue {} {
-    set item [lindex ${:list} 0]
-    set :list [lrange ${:list} 1 end]
-    return $item
-  }
-}
-
-

Demonstrating the behavior in a shell:

-

Trying to create an instance of the AbstraceQueue returns an error message:

-
-
-
% AbstractQueue new
-Cannot instantiate abstract class ::AbstractQueue
-

Create an instance of the concrete queue:

-
-
-
% set q [ListQueue new]
-

Enqueue and dequeue items

-
-
-
% $q enqueue 100
-100
-% $q enqueue 101
-100 101
-% $q dequeue
-100
-
-
-
-
-

- - - + + + + + +Listing of doc/example-scripts/rosetta-abstract-type.tcl + + + + + +
+
+

Rosetta Example: Abstract type

+
+

Define a class without instances and without implemented methods. +For detailed description of this example +see http://rosettacode.org/wiki/Abstract_type

+
+
+
package req nx
+

Define a class AbstractQueue

+
+
+
nx::Class create AbstractQueue {
+
+  :public method enqueue {item} {error "not implemented"}
+  :public method dequeue {} {error "not implemented"}
+
+  :public object method create {args} {
+    error "Cannot instantiate abstract class [self]"
+  }
+}
+

Define a concrete queue (named ListQueue) based +on the Abstract Queue

+
+
+
nx::Class create ListQueue -superclass AbstractQueue {
+
+  :variable list {}
+
+  :public method enqueue {item} {
+    lappend :list $item
+  }
+
+  :public method dequeue {} {
+    set item [lindex ${:list} 0]
+    set :list [lrange ${:list} 1 end]
+    return $item
+  }
+}
+
+

Demonstrating the behavior in a shell:

+

Trying to create an instance of the AbstraceQueue returns an error message:

+
+
+
% AbstractQueue new
+Cannot instantiate abstract class ::AbstractQueue
+

Create an instance of the concrete queue:

+
+
+
% set q [ListQueue new]
+

Enqueue and dequeue items

+
+
+
% $q enqueue 100
+100
+% $q enqueue 101
+100 101
+% $q dequeue
+100
+
+
+
+
+

+ + +