Об'єктно-орієнтоване програмування (ООП) - це парадигма програмування, яка використовує об'єкти та класи для організації коду. Основні ідеї ООП базуються на спробі моделювати реальний світ у програмному коді, використовуючи поняття об'єктів, які мають властивості (атрибути) та поведінку (методи).
Переваги ООП
Модульність: Об'єкти дозволяють
інкапсулювати функціональність та стан, роблячи код більш модульним і легким для розуміння.
Спадкування: Можливість створювати новий клас на основі існуючого дозволяє повторно використовувати код і зменшувати дублювання.
Поліморфізм: Можливість використовувати однаковий інтерфейс для різних класів дозволяє розширювати функціональність без модифікації існуючого коду.
Мови, які підтримують ООП парадигму
Java, C++, C#, Python, Ruby, Swift, Objective-C, Kotlin, PHP, JavaScript, Scala, Dart, Smalltalk, Eiffel, Simula, Go, Perl, Rust, Lua, Groovy, Haskell, Ada, Groovy, Delphi/Object Pascal, Fortran, R, ABAP, TypeScript, ActionScript, ColdFusion, PowerBuilder, Prolog, Visual Basic (VB.NET), F#, COBOL, PL/SQL, Io, Erlang, Lua, APL
та багато інших.
Багато мов можуть підтримувати кілька парадигм програмування
одночасно. Тож цей список насправді більший.
База ООП
Класи - це шаблони або опис для створення об'єктів. Клас визначає властивості (атрибути) та методи (функції), які буде мати об'єкт.
Об'єкт - це конкретний екземпляр класу, створений за допомогою конструктора класу. Кожен об'єкт має свій власний стан (значення атрибутів) та поведінку (реакцію на виклик методів).
Інкапсуляція в ооп означає об'єднання даних та методів, які працюють з цими даними, в одному об'єкті або класі. Інкапсуляція дозволяє приховати внутрішню реалізацію та обмежує доступ до деяких компонентів зовнішнього середовища.
Спадкування дозволяє створювати новий клас на основі існуючого (батьківського) класу, успадковуючи його властивості та методи. Це сприяє використанню існуючого коду та розширенню його функціональності.
Поліморфізм означає можливість об'єктів різних класів викликати однаковий метод чи функцію з однаковою назвою. Це робить програми більш гнучкими та узагальненими.
Приклад створення класу та об'єкта в Ruby
class Person
attr_accessor :name, :age
def initialize(name, age)
@name = name
@age = age
end
def introduce
puts "Hi, I'm #{@name} and I'm #{@age} years old."
end
end
# Створення об'єкта класу Person
person = Person.new("John", 25)
# Виклик методу об'єкта
person.introduce