Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Продолжаем развивать софт для нашей больницы. В классе Patient (который мы писали на уроке) пока нет
- # никакой информации об адресе пациента. А в медицинской карте она должна быть:
- # Так как два человека могут жить по одному адресу, чтобы не дублировать данные мы решили
- # для адресов сделать отдельный класс.
- # Придумайте название для этого класса. Прикиньте (глядя на медкарту) какие у него
- # будут переменные экземпляра и напишите этот класс.
- # Напишите для экземпляра метод, который выводит весь адрес одной строкой.
- # Например:
- # ул. Сосновая, д. 15, кв. 1, пос. Лесное, Алексеевский р-он, Воронежская обл.
- # В файле с классом создайте пару экземпляров этого класса с разными адресами.
- require 'date'
- class Patient
- def initialize(name, patronymic_name, family_name, date_of_birth)
- @name = name
- @patronymic_name = patronymic_name
- @family_name = family_name
- @date_of_birth = Date.parse(date_of_birth)
- end
- def name
- return @name
- end
- def full_name
- return "#{@family_name} #{@name[0]}.#{@patronymic_name[0]}."
- end
- def age
- today = Date.today
- result = today.year - @date_of_birth.year - 1
- if (today.month > @date_of_birth.month) ||
- (today.month == @date_of_birth.month &&
- today.day >= @date_of_birth.day)
- result += 1
- end
- return result
- end
- class Address
- def initialize(street, building, apartment, city, region)
- @region = region
- @city = city
- @street = street
- @building = building.to_i
- @appartment = appartment.to_i
- end
- def full_address
- return "#{street}, #{building}. #{apartment}. #{city}, #{region}."
- end
- end
- end
- vadik = Patient.new("Вадим", "Аркадьевич",
- "Венедиктов", "14.09.1984")
- vadik_address = Address.new("Ленина", "51", "45", "Дубна", "Московская обл.")
- puts "Пациент 1:"
- puts vadik.full_name
- puts "Возраст: #{vadik.age}"
- puts "Совершеннолетний: #{vadik.adult?}"
- puts "Адрес пациента: #{full_address}"
Add Comment
Please, Sign In to add comment