Ruby Классы и объекты
Ruby — идеальный объектно-ориентированный язык программирования. Возможности объектно-ориентированных языков программирования включают:
- Инкапсуляция данных
- Абстракция данных
- Полиморфизм
- Наследование
Эти возможности будут рассмотрены вобъектно-ориентированном Ruby.
Объектно-ориентированная программа включает классы и объекты. Класс — это чертёж, по которому создаются отдельные объекты. В объектно-ориентированной терминологии ваш велосипед является экземпляром класса велосипедов.
Возьмём транспортные средства в качестве примера; они включают колёса, мощность и вместимость топливного или газового бака. Эти атрибуты образуют элементы данных класса Vehicle. С помощью этих атрибутов можно отличить одно транспортное средство от других.
Транспортные средства также могут содержать определённые функции, такие как остановка, движение и ускорение. Эти функции образуют элементы данных класса Vehicle. Следовательно, класс можно определить как комбинацию атрибутов и функций.
Определение класса Vehicle выглядит следующим образом:
Пример
Присваивая разные значения этим элементам данных, вы можете создавать разные экземпляры класса Vehicle. Например, у самолёта три колеса, 1,000 лошадиных сил и вместимость топливного бака 100 литров. Точно так же у автомобиля четыре колеса, 200 лошадиных сил и вместимость бензобака 25 литров.
Определение классов в Ruby
Чтобы реализовать объектно-ориентированное программирование в Ruby, сначала нужно научиться создавать объекты и классы в Ruby.
В Ruby классы всегда начинаются с ключевого словаclass, за которым следует имя класса. Первая буква имени класса должна быть заглавной. КлассCustomerвыглядит следующим образом:
Вы можете использовать ключевое словоendдля завершения класса.КлассВсе элементы данных размещаются между определением класса иendключевое слово.
Переменные в классах Ruby
Ruby предоставляет четыре типа переменных:
- Локальные переменные:Локальные переменные — это переменные, определённые внутри метода. Локальные переменные недоступны вне метода. В последующих главах вы увидите больше подробностей о методах. Локальные переменные начинаются со строчной буквы или _.
- Переменные экземпляра:Переменные экземпляра можно использовать в разных методах внутри любого конкретного экземпляра или объекта. Это означает, что переменные экземпляра могут изменяться от объекта к объекту. Переменные экземпляра имеют символ (@), помещённый перед именем переменной.
- Переменные класса:Переменные класса могут использоваться в разных объектах. Переменные класса принадлежат классу и являются атрибутом класса. Перед именем переменной класса ставится символ (@@).
- Глобальные переменные:Переменные класса нельзя использовать в разных классах. Если вы хотите иметь переменную, которую можно использовать в разных классах, нужно определить глобальную переменную. Глобальные переменные всегда начинаются со знака доллара ($).
Пример
Используя переменную класса @@no_of_customers, можно определить количество созданных объектов, а значит, и количество клиентов.
Пример
В Ruby для создания объектов используется методnew.
Объекты — это экземпляры классов. Теперь вы узнаете, как создавать объекты класса в Ruby. В Ruby можно использовать метод классаnewдля создания объектов.
Методnew— это специальный метод, предопределённый в библиотеке Ruby. Метод new принадлежит методуClass.
В следующем примере создаются два объекта класса Customer, cust1 и cust2:
Здесь cust1 и cust2 — имена двух объектов. После имени объекта идёт знак равенства (=), после знака равенства идёт имя класса, затем оператор точка и ключевое словоnew。
Пользовательские методы для создания объектов Ruby
В методnewможно передавать параметры, которые можно использовать для инициализации переменных класса.
Когда вы хотите объявить метод с параметрамиnewметода, вам нужно объявить метод при создании класса.initialize。
initializeМетод — это особый тип метода, который будет выполнен, когда вызываетсяnew-метод класса с параметрами.
В следующем примере создается метод initialize:
Пример
В этом примере вы можете объявить метод сid、name、addrв качестве локальных переменныхinitializeметода. Здесьdefиendиспользуется для определения методов Ruby.initializeВ последующих главах вы узнаете больше подробностей о методах.
ВinitializeВ методе значения этих локальных переменных передаются в переменные экземпляра @cust_id, @cust_name и @cust_addr. Здесь значения локальных переменных передаются вместе с методом new.
Теперь вы можете создавать объекты следующим образом:
Функции-члены в классах Ruby
В Ruby функции называются методами.КлассКаждый метод в нем начинается с ключевого словаdef, за которым следует имя метода.
Имена методов всегда начинаются сострочных букв. В Ruby можно использовать ключевое словоend, чтобы завершить метод.
Следующий пример определяет метод Ruby:
Здесь,statement 1иstatement 2— это метод внутри класса Sample,functionа следующие являются компонентами его тела. Эти инструкции могут быть любыми допустимыми инструкциями Ruby. Например, мы можем использовать методputsдля выводаHello Ruby, следующим образом:
Следующий пример создаёт объект класса Sample и вызывает методhello:
Это даст следующий результат:
Hello Ruby!
Простой практический пример
Если вы хотите выполнить больше упражнений по классам и объектам, вот практический пример:
Другие расширения