module Greetable
def greet
puts "こんにちは、#{@name}です"
end
end
class Animal
include Greetable
def initialize(name)
@name = name
end
end
dog = Animal.new("ポチ")
dog.greet
出力結果:
こんにちは、ポチです
module MathUtils
PI = 3.14159
def self.circle_area(radius)
PI * radius * radius
end
end
puts MathUtils.circle_area(5)
module Walkable
def walk
puts "#{@name}が歩いています"
end
end
class Dog
include Walkable
def initialize(name)
@name = name
end
end
shiba = Dog.new("ハチ")
shiba.walk
module Swimmable
def swim
puts "#{@name}が泳いでいます"
end
end
class Fish
include Swimmable
def initialize(name)
@name = name
end
end
goldfish = Fish.new("キンちゃん")
goldfish.swim
module AnimalSounds
DOG_SOUND = "ワンワン"
def self.make_sound(animal_type)
case animal_type
when :dog
puts DOG_SOUND
else
puts "不明な動物です"
end
end
end
AnimalSounds.make_sound(:dog)
puts AnimalSounds::DOG_SOUND
module Flyable
def fly
puts "#{@name}が空を飛んでいます"
end
end
module Singable
def sing
puts "#{@name}が美しく歌っています"
end
end
class Bird
include Flyable
include Singable
def initialize(name)
@name = name
end
end
canary = Bird.new("カナリア")
canary.fly
canary.sing
module Wildlife
module African
class Elephant
def initialize(name)
@name = name
end
def trumpet
puts "#{@name}がパオーンと鳴いています"
end
end
end
end
jumbo = Wildlife::African::Elephant.new("ジャンボ")
jumbo.trumpet
module HealthChecker
def check_health(weight)
if weight > 5
puts "#{@name}は健康状態が良好です"
else
puts "#{@name}は健康管理が必要です"
end
end
end
class Cat
include HealthChecker
def initialize(name)
@name = name
end
end
tama = Cat.new("タマ")
tama.check_health(3)