Guest User

Untitled

a guest
Mar 24th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. class Person
  2. attr_accessor :purchased, :name
  3.  
  4. def initialize(name)
  5. @name = name
  6. end
  7.  
  8. def purchase(obj,amt)
  9. obj.value = amt
  10. obj.purchased_by = self
  11. (@purchased ||= []).push(obj)
  12. end
  13.  
  14. def use(obj)
  15. obj.used_by(self)
  16. end
  17. end
  18.  
  19. class Item
  20. attr_accessor :value, :purchaser, :name
  21.  
  22. def initialize(name)
  23. @name = name
  24. @value = 0
  25. end
  26.  
  27. def value=(amt)
  28. @value = amt
  29. end
  30.  
  31. def purchased_by=(person)
  32. @purchaser=person
  33. end
  34.  
  35. def used_by(person)
  36. (@users ||= []).push(person)
  37. end
  38.  
  39. def calculate
  40. @users.each do |x|
  41. puts "#{x.name} pay #{@purchaser.name} #{@value / @users.count} for #{self.name}"
  42. end
  43. end
  44. end
  45.  
  46. x=Person.new('X')
  47. john=Person.new('John')
  48. alice=Person.new('Alice')
  49. bob=Person.new('Bob')
  50. x.purchase(car=Item.new('car'),400)
  51. john.purchase(groceries=Item.new('groceries'),100)
  52. [x,john,alice,bob].each {|p| p.use(car)}
  53. [alice,bob].each {|p| p.use(groceries)}
  54. [car,groceries].each { |i| i.calculate }
Add Comment
Please, Sign In to add comment