Advertisement
Guest User

Untitled

a guest
May 30th, 2016
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. require 'pry'
  2.  
  3. module Flight
  4. def fly
  5. puts "I'm a #{self.name} and I fly."
  6. end
  7. end
  8.  
  9. class Animal
  10. attr_reader :breathes, :multiplies, :name
  11.  
  12. def initialize(breathes, multiplies, name)
  13. @breathes = breathes
  14. @multiplies = multiplies
  15. @name = name
  16. end
  17. end
  18.  
  19. class Mammal < Animal
  20. attr_accessor :num_legs
  21. attr_reader :warm_blooded
  22.  
  23. def initialize(breathes, multiplies, name, warm_blooded, num_legs)
  24. super(breathes, multiplies, name)
  25. @warm_blooded = true
  26. @num_legs = num_legs
  27. end
  28. end
  29.  
  30. class Primate < Mammal
  31. attr_reader :opozable_thumb
  32.  
  33. def initialize(breathes, multiplies, name, warm_blooded, num_legs, opozable_thumb)
  34. super(breathes, multiplies, name, warm_blooded, num_legs)
  35. @opozable_thumb = true
  36. end
  37. end
  38.  
  39. class Chimpanzee < Primate
  40. end
  41.  
  42.  
  43. class Bat < Mammal
  44. include Flight
  45.  
  46. attr_accessor :wings
  47.  
  48. def initialize(breathes, multiplies, name, warm_blooded, num_legs, wings)
  49. super(breathes, multiplies, name, warm_blooded, num_legs)
  50. @wings = 2
  51. end
  52. end
  53.  
  54. class Amphibian < Animal
  55. attr_reader :breaths_under_water
  56.  
  57. def initialize(breathes, multiplies, name, breaths_under_water)
  58. super(breathes, multiplies, name)
  59. @breaths_under_water = true
  60. end
  61. end
  62.  
  63. class Frog < Amphibian
  64. attr_accessor :nocturnal
  65.  
  66. def initialize(breathes, multiplies, name, breaths_under_water, nocturnal)
  67. super(breathes, multiplies, name, breaths_under_water)
  68. @nocturnal = nocturnal
  69. end
  70. end
  71.  
  72. class Bird < Animal
  73. include Flight
  74. attr_accessor :talks
  75.  
  76. def initialize(breathes, multiplies, name, talks)
  77. super(breathes, multiplies, name)
  78. @talks = talks
  79. end
  80. end
  81.  
  82. class Parrot < Bird
  83. include Flight
  84. attr_accessor :color
  85.  
  86. def initialize(breathes, multiplies, name, talks, color)
  87. super(breathes, multiplies, name, talks)
  88. @color = color
  89. end
  90. end
  91.  
  92. jimmy = Parrot.new("breaths", "multiplies", "parrot", "immitates humans", "red")
  93. puts jimmy.fly
  94.  
  95. polly = Bat.new("breaths", "multiplies", "bat", true, 2, 2)
  96. puts polly.fly
  97.  
  98. # breathes, multiplies, name, warm_blooded, num_legs, wings
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement