Darial_RSO

patient.rb

Oct 27th, 2021 (edited)
443
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 2.57 KB | None | 0 0
  1. # Продолжаем развивать софт для нашей больницы. В классе Patient (который мы писали на уроке) пока нет
  2. # никакой информации об адресе пациента. А в медицинской карте она должна быть:
  3. # Так как два человека могут жить по одному адресу, чтобы не дублировать данные мы решили
  4. # для адресов сделать отдельный класс.
  5. # Придумайте название для этого класса. Прикиньте (глядя на медкарту) какие у него
  6. # будут переменные экземпляра и напишите этот класс.
  7. # Напишите для экземпляра метод, который выводит весь адрес одной строкой.
  8. # Например:
  9. # ул. Сосновая, д. 15, кв. 1, пос. Лесное, Алексеевский р-он, Воронежская обл.
  10. # В файле с классом создайте пару экземпляров этого класса с разными адресами.
  11.  
  12.  
  13. require 'date'
  14.  
  15. class Patient
  16.   def initialize(name, patronymic_name, family_name, date_of_birth)
  17.     @name = name
  18.     @patronymic_name = patronymic_name
  19.     @family_name = family_name
  20.     @date_of_birth = Date.parse(date_of_birth)
  21.   end
  22.  
  23.   def name
  24.     return @name
  25.   end
  26.  
  27.   def full_name
  28.     return "#{@family_name} #{@name[0]}.#{@patronymic_name[0]}."
  29.   end
  30.  
  31.   def age
  32.     today = Date.today
  33.     result = today.year - @date_of_birth.year - 1
  34.  
  35.     if (today.month > @date_of_birth.month) ||
  36.       (today.month == @date_of_birth.month &&
  37.        today.day >= @date_of_birth.day)
  38.       result += 1
  39.     end
  40.  
  41.     return result
  42.   end
  43.  
  44. class Address
  45.   def initialize(street, building, apartment, city, region)
  46.     @region = region
  47.     @city = city
  48.     @street = street
  49.     @building = building.to_i
  50.     @appartment = appartment.to_i
  51.   end
  52.  
  53.   def full_address
  54.     return "#{street}, #{building}. #{apartment}. #{city}, #{region}."
  55.   end
  56. end
  57.  
  58.  
  59.  
  60.  
  61. end
  62.  
  63. vadik = Patient.new("Вадим", "Аркадьевич",
  64.   "Венедиктов", "14.09.1984")
  65. vadik_address = Address.new("Ленина", "51", "45", "Дубна", "Московская обл.")
  66.  
  67. puts "Пациент 1:"
  68. puts vadik.full_name
  69. puts "Возраст: #{vadik.age}"
  70. puts "Совершеннолетний: #{vadik.adult?}"
  71. puts "Адрес пациента: #{full_address}"
Add Comment
Please, Sign In to add comment