Инкапсуляция в объектно-ориентированном программировании (ООП) означает ограничение доступа к состоянию объекта и его поведению. В Ruby инкапсуляция достигается с помощью доступа к методам и переменным объекта.
Приватные методы: Методы могут быть объявлены как private, что делает их доступными только внутри класса. Все методы, объявленные после ключевого слова private, будут приватными до тех пор, пока не будет вызвано public
или protected
.
class MyClass
def public_method
# Этот метод доступен извне класса
end
private
def private_method
# Этот метод доступен только внутри класса
end
end
Приватные переменные: Ruby не имеет прямой поддержки приватных переменных экземпляра. Вместо этого, часто используются геттеры и сеттеры (attr_reader
, attr_writer
, attr_accessor
), чтобы получить или изменить значения переменных.
class MyClass
def initialize
@my_variable = 10
end
def get_variable
@my_variable
end
private
def set_variable(value)
@my_variable = value
end
end
Или используйте attr_reader
, attr_writer
, или attr_accessor
для автоматического создания методов доступа:
class MyClass
attr_reader :my_variable
attr_writer :my_variable
def initialize
@my_variable = 10
end
private
# Доступ к @my_variable доступен только внутри класса
end
Инкапсуляция в Ruby позволяет контролировать доступ к данным и методам объекта, обеспечивая уровень безопасности и управления кодом.