Об'єктно-орієнтоване програмування (ООП) є одним з основних підходів до програмування, який дозволяє розробникам створювати гнучкі та масштабовані програми. Ruby, як мова програмування, повністю підтримує ООП, що робить її популярною серед розробників. У цій статті ми розглянемо основи ООП у Ruby, його ключові концепції та надамо приклади коду для кращого розуміння.
Об'єктно-орієнтоване програмування - це парадигма програмування, яка використовує "об'єкти" для моделювання реального світу. Об'єкти можуть містити дані у вигляді полів (атрибутів) і код у вигляді методів. Основні принципи ООП включають:
Ruby є чисто об'єктно-орієнтованою мовою, що означає, що все в Ruby є об'єктом, включаючи числа, рядки та навіть класи. Давайте розглянемо, як створювати класи та об'єкти в Ruby.
Клас у Ruby визначається за допомогою ключового слова class
. Ось простий приклад класу:
class Animal def initialize(name) @name = name end def speak "Я - #{@name}!" end end
У цьому прикладі ми створили клас Animal
з методом initialize
, який є конструктором, і методом speak
, який повертає рядок з ім'ям тварини.
Щоб створити об'єкт класу, ми використовуємо метод new
:
dog = Animal.new("Собака") puts dog.speak
Цей код створює новий об'єкт dog
класу Animal
і викликає метод speak
, який виведе: Я - Собака!
.
Інкапсуляція дозволяє приховувати дані об'єкта від зовнішнього світу. У Ruby ми можемо використовувати модифікатори доступу, такі як public
, private
та protected
, щоб контролювати доступ до методів і атрибутів.
class BankAccount def initialize(balance) @balance = balance end def deposit(amount) @balance += amount end def withdraw(amount) if amount <= @balance @balance -= amount else "Недостатньо коштів!" end end def check_balance @balance end private def log_transaction # Логіка для запису транзакцій end end
У цьому прикладі клас BankAccount
має приватний метод log_transaction
, який не може бути викликаний ззовні. Це дозволяє захистити важливу логіку від випадкового використання.
Спадкування дозволяє створювати нові класи на основі існуючих. Це дозволяє повторно використовувати код і розширювати функціональність.
class Dog < Animal def speak "Гав! Я - #{@name}!" end end dog = Dog.new("Бобік") puts dog.speak
У цьому прикладі клас Dog
успадковує від класу Animal
і перевизначає метод speak
. Коли ми викликаємо speak
для об'єкта dog
, він виведе: Гав! Я - Бобік!
.
Поліморфізм дозволяє об'єктам різних класів реагувати на однакові методи. Це досягається через перевизначення методів у підкласах.
class Cat < Animal def speak "Мяу! Я - #{@name}!" end end def make_animal_speak(animal) puts animal.speak end dog = Dog.new("Шарик") cat = Cat.new("Мурка") make_animal_speak(dog) # Гав! Я - Шарик! make_animal_speak(cat) # Мяу! Я - Мурка!
У цьому прикладі ми створили метод make_animal_speak
, який приймає об'єкт класу Animal
(або його підкласу) і викликає метод speak
. Це демонструє поліморфізм, оскільки один і той же метод може працювати з різними типами об'єктів.
Об'єктно-орієнтоване програмування в Ruby є потужним інструментом для створення гнучких і масштабованих програм. Розуміння основних концепцій, таких як інкапсуляція, спадкування та поліморфізм, дозволить вам ефективно використовувати Ruby для розробки програмного забезпечення. Сподіваємося, що ця стаття допомогла вам краще зрозуміти ООП у Ruby!
© 2024 RailsInsights. All rights reserved.