Создание класса Person в Ruby: объяснение инкапсуляции и методов

Вот пример того, как можно создать класс под названием «Person» с переменными экземпляра, конструктором и некоторыми методами в Ruby:

class Person
  attr_accessor :id, :name, :age

  def initialize(name, age)
    @id = generate_id
    @name = name
    @age = age
  end

  def generate_id
    # Code to generate a unique ID for the person
  end

  def greet
    puts "Hello, my name is #{@name}."
  end

  def celebrate_birthday
    @age += 1
    puts "Happy birthday! I am now #{@age} years old."
  end

  def can_vote?
    @age >= 18
  end

  def introduce
    puts "I am #{@name}, #{@age} years old."
  end

  def change_name(new_name)
    @name = new_name
    puts "My name has been changed to #{@name}."
  end
end

В этом примере класс Personимеет три переменные экземпляра: @id, @nameи @age. Конструктор initializeпринимает имя и возраст в качестве параметров и присваивает их соответствующим переменным экземпляра. Кроме того, метод initializeвызывает метод generate_idдля создания уникального идентификатора человека.

Класс также включает в себя несколько других методов:

  • greet: этот метод печатает приветственное сообщение с именем человека.
  • celebrate_birthday: этот метод увеличивает возраст человека на единицу и печатает сообщение о дне рождения.
  • can_vote?: этот метод возвращает true, если человеку 18 лет и старше, и falseв противном случае.
  • introduce: этот метод печатает имя и возраст человека.
  • change_name: этот метод принимает новое имя в качестве параметра и соответствующим образом обновляет имя человека.

Используя этот класс, вы можете создавать объекты-люди и вызывать для них эти методы. Например:

person = Person.new("John Doe", 25)
person.greet
person.celebrate_birthday
puts "Can vote? #{person.can_vote?}"
person.introduce
person.change_name("Jane Smith")

Этот код создаст объект Personс именем «Джон Доу» и возрастом 25 лет. Затем он вызовет метод greetдля печати приветствия, celebrate_birthday, чтобы увеличить возраст, can_vote?, чтобы проверить, может ли человек голосовать, introduce, чтобы представить человека, и, наконец, change_name, чтобы обновите имя на «Джейн Смит».

В статье блога вы можете написать о важности инкапсуляции в объектно-ориентированном программировании и о том, как она достигается в примере класса. Вы также можете обсудить различные методы и их возможности.