Этот урок посвящен наследованию классов и использованию модулей в Ruby. Также мы подведём итоги курса.
Наследование классов
Наследование — механизм, позволяющий новому классу (классу-наследнику) получать свойства и методы родительского класса. Рассмотрим класс Транспорт с общими характеристиками: скорость, цвет и метод сигналить. Классы-наследники, например, Мотоцикл или Автомобиль, наследуют эти свойства, добавляя собственные. Например, Мотоцикл может иметь свойство «количество колес = 2» и метод «ехать на заднем колесе».
class Transport
attr_accessor :color, :speed, :wheels
def signal
puts "Бип-бип"
end
end
bmw = Transport.new
bmw.color = "белый"
bmw.signal
audi = Transport.new
audi.color = "черный"
audi.signal
Создадим класс Car, наследующий от класса Transport:
class Car < Transport
attr_accessor :accessories, :transmission_type
end
bmw = Car.new
bmw.color = "белый"
bmw.signal # Метод наследуется от класса Transport
audi = Car.new
audi.color = "черный"
bmw.signal # Метод наследуется от класса Transport
Метод signal работает корректно, несмотря на определение в родительском классе. Методы можно переопределять в классе-наследнике:
class Car < Transport
def signal
puts "Бип-бип 2"
end
end
Теперь bmw.signal выведет «Бип-бип 2». Наследование позволяет создавать базовый класс с общими характеристиками и расширять его для различных типов объектов, упрощая код и повышая читаемость. Можно обращаться к переменным и методам родительского класса из класса-наследника.
bmw = Car.new
bmw.speed = 230
puts bmw.speed # Обращение к переменной родительского класса
puts bmw.color = "белый" # Обращение к переменной родительского класса
В классах-наследниках можно создавать новые методы:
class Car < Transport
def say_sam
puts "Укола"
end
end
bmw.say_sam
Модули
Для больших приложений с множеством методов удобно использовать модули. Модуль — отдельный файл с набором методов. Это позволяет разбить код на логические блоки и упростить организацию проекта. В разных модулях могут быть методы с одинаковыми именами без конфликтов.
Создадим файл tut.rb:
module Tut
def hello(name)
puts "Привет, #{name}!"
end
def say_bye(name)
puts "Пока, #{name}!"
end
end
В файле example.rb подключим и используем модуль:
require_relative 'tut'
include Tut
hello("Джордж")
say_bye("Джордж")
В этом курсе мы изучили основы программирования на Ruby. Рекомендуется изучить Ruby on Rails — фреймворк для создания динамических веб-сайтов.