В Ruby классы и объекты — это фундаментальные понятия, составляющие основу объектно-ориентированного программирования. Хотя они тесно связаны между собой, важно понимать различия между ними. В этой статье блога мы рассмотрим разницу между классами и объектами в Ruby и приведем примеры кода, иллюстрирующие их использование.
Понимание классов.
В Ruby класс — это план или шаблон для создания объектов. Он определяет характеристики и поведение, которыми будут обладать объекты этого класса. Классы определяются с помощью ключевого слова class
, за которым следует имя класса и тело класса, заключенное в end
. Вот пример:
class Car
def initialize(make, model)
@make = make
@model = model
end
def start_engine
puts "Starting the engine of #{@make} #{@model}."
end
end
В приведенном выше коде мы определяем класс Car
с методом initialize
(специальный метод, называемый конструктором), который устанавливает значения make
и model
переменные экземпляра. У нас также есть метод start_engine
, который печатает сообщение с указанием марки и модели автомобиля.
Создание объектов:
Объект является экземпляром класса. Он представляет собой конкретное возникновение или реализацию атрибутов и поведения класса. Объекты создаются с помощью метода new
, который вызывает конструктор класса (initialize
). Вот пример:
my_car = Car.new("Toyota", "Camry")
В приведенном выше коде мы создаем новый объект my_car
класса Car
, передавая конструктору аргументы «Toyota» и «Camry».
Методы и примеры кода:
Давайте рассмотрим некоторые дополнительные методы, обычно используемые с классами и объектами в Ruby:
- Методы доступа:
Методы доступа обеспечивают доступ к переменным экземпляра объекта. Их можно использовать для получения или изменения значений этих переменных. Вот пример:
class Car
# ...
def make
@make
end
def model
@model
end
end
my_car = Car.new("Toyota", "Camry")
puts my_car.make # Output: Toyota
puts my_car.model # Output: Camry
- Методы установки.
Методы установки, также известные как методы-мутаторы, позволяют изменять значения переменных экземпляра. Вот пример:
class Car
# ...
def make=(new_make)
@make = new_make
end
def model=(new_model)
@model = new_model
end
end
my_car = Car.new("Toyota", "Camry")
my_car.make = "Honda"
my_car.model = "Accord"
puts my_car.make # Output: Honda
puts my_car.model # Output: Accord
- Методы класса:
Методы класса определяются в самом классе и могут вызываться в классе без необходимости создания экземпляра. Вот пример:
class Car
# ...
def self.honk
puts "Beep beep!"
end
end
Car.honk # Output: Beep beep!
- Методы экземпляра.
Методы экземпляра определяются внутри класса и могут вызываться для отдельных объектов этого класса. Вот пример:
class Car
# ...
def drive
puts "Driving the #{@make} #{@model}."
end
end
my_car = Car.new("Toyota", "Camry")
my_car.drive # Output: Driving the Toyota Camry.