Привет, друзья! Сегодня мы погрузимся в увлекательный мир объектно-ориентированного программирования (ООП) на Ruby. Если вы хотите стать настоящим Ruby-ниндзя, понимание ООП — это ваш путь к успеху!
Предыдущий урок: Исключения в Ruby
Следующий урок: Наследование и полиморфизм в Ruby
Что такое ООП и почему оно важно?
Объектно-ориентированное программирование — это подход к созданию программ, где все представлено в виде объектов. Объекты — это сущности, которые имеют свои свойства (данные) и поведение (методы). ООП помогает нам организовать код, делая его более понятным, повторно используемым и легко поддерживаемым.
Классы в Ruby: фабрики объектов
В Ruby класс — это чертеж или шаблон для создания объектов. Представьте, что класс — это форма для печенья, а объекты — это сами печеньки!
Давайте создадим наш первый класс:
class Dog
def initialize(name, breed)
@name = name
@breed = breed
end
def bark
puts "Гав-гав! Меня зовут #{@name}!"
end
end
Здесь мы определили класс Dog
с методом initialize
(конструктор) и методом bark
.
Создание объектов: оживляем наших собак
Теперь давайте создадим несколько объектов класса Dog
:
rex = Dog.new("Рекс", "Немецкая овчарка")
sharik = Dog.new("Шарик", "Дворняжка")
rex.bark # Выведет: Гав-гав! Меня зовут Рекс!
sharik.bark # Выведет: Гав-гав! Меня зовут Шарик!
Каждый объект Dog
имеет свое собственное имя и породу, но использует один и тот же метод bark
.
Атрибуты и методы: данные и поведение
В ООП атрибуты (переменные экземпляра) представляют данные объекта, а методы определяют его поведение.
Давайте добавим геттеры и сеттеры для наших атрибутов:
class Dog
attr_reader :name, :breed
attr_writer :name
def initialize(name, breed)
@name = name
@breed = breed
end
def bark
puts "Гав-гав! Меня зовут #{@name}!"
end
def info
puts "#{@name} - #{@breed}"
end
end
Теперь мы можем получать и изменять имя собаки:
rex = Dog.new("Рекс", "Немецкая овчарка")
puts rex.name # Выведет: Рекс
rex.name = "Бобик"
rex.info # Выведет: Бобик - Немецкая овчарка
Инкапсуляция: защищаем наши данные
Инкапсуляция — один из ключевых принципов ООП. Она позволяет скрыть внутренние детали реализации класса и предоставить публичный интерфейс для взаимодействия с объектом.
В Ruby мы можем использовать приватные методы:
class Dog
# ... предыдущий код ...
private
def secret_trick
puts "Это секретный трюк, который знает только #{@name}!"
end
end
rex = Dog.new("Рекс", "Немецкая овчарка")
rex.secret_trick # Вызовет ошибку: private method `secret_trick' called
Практическое задание: создайте свой класс
Теперь ваша очередь! Создайте класс Book
с атрибутами title
, author
и pages
. Добавьте метод read
, который выводит информацию о книге, и метод flip_page
, который «перелистывает» страницу.
Вот начало кода:
class Book
# Ваш код здесь
end
# Создайте несколько объектов Book и вызовите их методы
Заключение
Сегодня мы сделали первые шаги в мире ООП на Ruby. Мы узнали, что такое классы и объекты, как создавать атрибуты и методы, и познакомились с принципом инкапсуляции.
ООП — это мощный инструмент, который поможет вам создавать более структурированный и поддерживаемый код. В следующих уроках мы углубимся в более продвинутые концепции ООП, такие как наследование и полиморфизм.
Не забудьте попрактиковаться в создании собственных классов и объектов. Помните: практика — путь к совершенству!
До встречи на следующем уроке, где мы продолжим наше увлекательное путешествие в мир Ruby!