-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathanimals.rb
More file actions
77 lines (55 loc) · 980 Bytes
/
animals.rb
File metadata and controls
77 lines (55 loc) · 980 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class Animal
attr_reader :name, :age
def name=(value)
if value == ""
raise "Name can't be blank!"
end
@name = value
end
def age=(value)
if value < 0
raise "An age of #{value} isn't valid!"
end
@age = value
end
def talk
puts "#{@name} says Bark!"
end
def move(destination)
puts "#{@name} runs to the #{destination}"
end
def report_age
puts "#{@name} is #{@age} years old."
end
end
class Bird < Animal
def talk
puts "#{@name} says Chirp! Chirp!"
end
def move(destination)
puts "#{@name} flys to the #{destination}"
end
end
class Dog < Animal
def to_s
"#{@name} the dog, age #{age}"
end
end
class Cat < Animal
def talk
puts "#{@name} says Meow!"
end
end
class Armadillo < Animal
def move(destination)
puts "#{@name} unrolls!"
super
end
end
lucy = Dog.new
lucy.name = "Lucy"
lucy.age = 4
rex = Dog.new
rex.name = "Rex"
rex.age = 2
puts lucy.to_s, rex.to_s