Posted to tcl by aspect at Fri Nov 24 14:19:47 GMT 2017view pretty
oo::class create Person { variable age variable sex constructor {Name Age Sex} { set name $Name set age $Age set sex $Sex my Invariants } method Invariants {} { puts "Testing invariants: $age $sex" if {$age >= 0 && $age < 120} {} {error "Age must be between 0 and 120."} if {$sex == "M" || $sex == "F"} {} {error "Sex must be M or F"} } method InvariantsFilter args { next {*}$args my Invariants } filter InvariantsFilter method set_age {years} { set age $years } method change_sex {mf} { set sex $mf } } Person create jim "Jim Bob" 5 M jim set_age 300