# Class names must be capitalized. Technically, it's a constant. class Fred # The initialize method is the constructor. The @val is # an object value. def initialize(v) @val = v end # Set it and get it. def set(v) @val = v end def get return @val end def more(y) @val += y end def less(y) @val -= y end def to_s return "Fred(val=" + @val.to_s + ")" end end # Class Barney is derived from Fred with the usual meaning. class Barney < Fred def initialize(x) super(x) @save = x end def chk @save = @val end def restore @val = @save end def to_s return "(Backed-up) " + super + " [backup value: " + @save.to_s + "]" end end # Objects are created by the new method of the class object. a = Fred.new(398) b = Barney.new(112) a.more(34) b.more(817) print "A: a = ", a, "\n b = ", b, "\n"; a.more(34) b.more(817) print "B: a = ", a, "\n b = ", b, "\n"; b.chk a.more(34) b.more(817) print "C: a = ", a, "\n b = ", b, "\n"; b.restore print "D: a = ", a, "\n b = ", b, "\n";