1# 2# Derived from class.n man page of itcl 3# 4package require Itcl 5 6itcl::class Toaster { 7 variable crumbs 0 8 method toast {nslices} { 9 if {$crumbs > 50} { 10 error "== FIRE! FIRE! ==" 11 } 12 set crumbs [expr $crumbs+4*$nslices] 13 } 14 method clean {} { 15 set crumbs 0 16 } 17} 18 19itcl::class SmartToaster { 20 inherit Toaster 21 method toast {nslices} { 22 if {$crumbs > 40} { 23 clean 24 } 25 return [chain $nslices] 26 } 27 28 public method doSomethingPublic {} { 29 } 30 protected method doSomethingProtected {} { 31 } 32 private method doSomethingPrivate {} { 33 } 34 35 proc procNoProtection {} { 36 } 37 38 public proc procPublic {} { 39 } 40 protected proc procProtected {} { 41 } 42 private proc procPrivate {} { 43 } 44 45 common commonNoProtection 0 46 47 public proc commonPublic "a" 48 protected proc commonProtected "b" 49 private proc commonPrivate "c" 50} 51 52set toaster [SmartToaster #auto] 53$toaster toast 2 54 55