# 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";