Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Person
- attr_accessor :purchased, :name
- def initialize(name)
- @name = name
- end
- def purchase(obj,amt)
- obj.value = amt
- obj.purchased_by = self
- (@purchased ||= []).push(obj)
- end
- def use(obj)
- obj.used_by(self)
- end
- end
- class Item
- attr_accessor :value, :purchaser, :name
- def initialize(name)
- @name = name
- @value = 0
- end
- def value=(amt)
- @value = amt
- end
- def purchased_by=(person)
- @purchaser=person
- end
- def used_by(person)
- (@users ||= []).push(person)
- end
- def calculate
- @users.each do |x|
- puts "#{x.name} pay #{@purchaser.name} #{@value / @users.count} for #{self.name}"
- end
- end
- end
- x=Person.new('X')
- john=Person.new('John')
- alice=Person.new('Alice')
- bob=Person.new('Bob')
- x.purchase(car=Item.new('car'),400)
- john.purchase(groceries=Item.new('groceries'),100)
- [x,john,alice,bob].each {|p| p.use(car)}
- [alice,bob].each {|p| p.use(groceries)}
- [car,groceries].each { |i| i.calculate }
Add Comment
Please, Sign In to add comment