Об'єктно-орієнтоване програмування (ООП) є одним з основних підходів до програмування, який дозволяє розробникам створювати гнучкі та масштабовані програми. 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.