-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDuckSimulator.rb
115 lines (96 loc) · 1.83 KB
/
DuckSimulator.rb
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
class Quackbehavior
def quack
end
end
class FlyBehavior
def fly
end
end
class CanNotFly < FlyBehavior
def fly
puts "I can not fly"
end
end
class CanFly < FlyBehavior
def fly
puts "Im Fliying"
end
end
class CanQuack < Quackbehavior
def quack
puts "Quack!"
end
end
class CanNotQuack < Quackbehavior
def quack
puts "I can not quack!"
end
end
class Duck
@flybehavior = FlyBehavior.new
@quackbehavior = Quackbehavior.new
def display
end
def fly
@flybehavior.fly
end
def quack
@quackbehavior.quack
end
end
class MallarDuck < Duck
def initialize
@flybehavior = CanFly.new
@quackbehavior = CanQuack.new
end
def display
puts "I am MallarDuck"
end
end
class RedheadDuck < Duck
def initialize
@flybehavior = CanFly.new
@quackbehavior = CanQuack.new
end
def display
puts "I am RedheadDuck"
end
end
class RubberDuck < Duck
def initialize
@flybehavior = CanNotFly.new
@quackbehavior = CanQuack.new
end
def display
puts "I am Rubber Duck"
end
end
class DecoyDuck < Duck
def initialize
@flybehavior = CanNotFly.new
@quackbehavior = CanNotQuack.new
end
def display
puts "I am Decoy Duck"
end
end
puts "---------DUCK_SIMULATOR PROBLEM-----------"
mallarDuck = MallarDuck.new
redheadDuck = RedheadDuck.new
rubberDuck = RubberDuck.new
decoyDuck = DecoyDuck.new
mallarDuck.display
mallarDuck.fly
mallarDuck.quack
puts "-------------------------------"
redheadDuck.display
redheadDuck.fly
mallarDuck.quack
puts "--------------------------------"
rubberDuck.display
rubberDuck.fly
rubberDuck.quack
puts "--------------------------------"
decoyDuck.display
decoyDuck.fly
decoyDuck.quack