103 lines
1.6 KiB
Ruby
103 lines
1.6 KiB
Ruby
|
# Animal is-a object
|
||
|
class Animal
|
||
|
def initialize(latin_name)
|
||
|
# Animal has-a latin_name
|
||
|
@latin_name = latin_name
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Dog is-a Animal
|
||
|
class Dog < Animal
|
||
|
def initialize(latin_name, name)
|
||
|
super(latin_name)
|
||
|
# Dog has-a name
|
||
|
@name = name
|
||
|
end
|
||
|
end
|
||
|
|
||
|
# Cat is-a Animal
|
||
|
class Cat < Animal
|
||
|
def initialize(latin_name, name)
|
||
|
super(latin_name)
|
||
|
# Cat has-a name
|
||
|
@name = name
|
||
|
end
|
||
|
|
||
|
attr_reader :name
|
||
|
end
|
||
|
|
||
|
# Person is-a object
|
||
|
class Person
|
||
|
def initialize(name, pet = nil)
|
||
|
# Person has-a name
|
||
|
@name = name
|
||
|
|
||
|
# Person has-a pet of some kind
|
||
|
@pet = pet
|
||
|
end
|
||
|
|
||
|
attr_accessor :pet
|
||
|
end
|
||
|
|
||
|
# Employee is-a Person
|
||
|
class Employee < Person
|
||
|
def initialize(name, salary)
|
||
|
super(name)
|
||
|
@salary = salary
|
||
|
end
|
||
|
end
|
||
|
# class Employee < Person
|
||
|
# def initialize(name, salary)
|
||
|
# # Employee has-a name
|
||
|
# super(name)
|
||
|
# # Employee has-a salary
|
||
|
# @salary = salary
|
||
|
# end
|
||
|
# end
|
||
|
|
||
|
# Fish is-a object
|
||
|
class Fish
|
||
|
end
|
||
|
|
||
|
# Salmon is-a Fish
|
||
|
class Salmon < Fish
|
||
|
end
|
||
|
|
||
|
# Halibut is-a Fish
|
||
|
class Halibut < Fish
|
||
|
end
|
||
|
|
||
|
# rover is-a Dog
|
||
|
rover = Dog.new("Latin", "Rover")
|
||
|
|
||
|
# satan is-a Cat
|
||
|
satan = Cat.new("Latin", "Satan")
|
||
|
|
||
|
# mary is-a Person
|
||
|
mary = Person.new("Mary")
|
||
|
|
||
|
# mary has-a Pet, satan
|
||
|
mary.pet = satan
|
||
|
|
||
|
# frank is-a Employee
|
||
|
frank = Employee.new("Frank", 120_000)
|
||
|
|
||
|
# frank has-a pet, rover
|
||
|
frank.pet = rover
|
||
|
|
||
|
# flipper is-a Fish
|
||
|
flipper = Fish.new
|
||
|
|
||
|
# crouse is-a Salmon
|
||
|
crouse = Salmon.new
|
||
|
|
||
|
# harry is-a Halibut
|
||
|
harry = Halibut.new
|
||
|
|
||
|
# fidget is-a cat
|
||
|
fidget = Cat.new("Latin", "Fidget")
|
||
|
# james is-a Person and has-a pet, Fidget
|
||
|
james = Person.new("James", fidget)
|
||
|
|
||
|
puts james.pet.name # Fidget
|