Инкапсуляция в Ruby
НАВИГАЦИЯ ПО СТРАНИЦЕ
Области видимости переменных в Ruby
В Ruby переменные могут иметь разные области видимости, такие как локальные, экземплярные и глобальные. Локальные переменные ограничены блоком кода, а экземплярные — доступны только в пределах экземпляра класса. Это обеспечивает инкапсуляцию данных и предотвращает их случайное изменение извне.
class Car
def initialize(model)
@model = model # Инкапсулированная переменная
end
def display_model
puts "Модель: #{@model}"
end
end
car = Car.new("Toyota")
car.display_model # Вывод: Модель: Toyota
puts car.@model # Ошибка: private method `@model' called
Геттеры и Сеттеры
Для управления доступом к переменным в Ruby часто используются методы-геттеры и методы-сеттеры. Геттеры позволяют получить значение переменной, а сеттеры - изменить его. Их использование обеспечивает более гибкий и контролируемый доступ к данным объекта.
class Person
def initialize(name)
@name = name
end
def name
@name # Геттер
end
def name=(new_name)
@name = new_name # Сеттер
end
end
person = Person.new("John")
puts person.name # Вывод: John
person.name = "Jane"
puts person.name # Вывод: Jane
Преимущества
Инкапсуляция в Ruby улучшает модульность кода, сокрытие деталей реализации и уменьшение зависимости между различными частями программы. Путем правильного использования областей видимости и методов доступа можно создавать более устойчивые и безопасные объекты, обеспечивая легкость сопровождения и расширения кода.
Таким образом, применение инкапсуляции в Ruby не только повышает читаемость кода, но также способствует созданию более гибких и надежных программных решений.