Объектно-ориентированное программирование (ООП) — методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
Согласно парадигмы ООП программа состоит из обьектов, обменивающихся сообщениями. Обьекты могут обладать состоянием, единственный способ изменить состояние обьекта - передать ему сообщение, в ответ на которое, обьект может изменить собственное состояние.
Класс — это описание еще не созданного объекта, как бы общий шаблон, состоящий из полей, методов и конструктора, а объект – экземпляр класса, созданный на основе этого описания.
Основные принципы ООП
- Инкапсуляция - сокрытие реализации.
- Наследование - создание новой сущности на базе уже существующей.
- Полиморфизм - возможность иметь разные формы для одной и той же сущности.
- Абстракция - отделение концепции от ее экземпляра.
В чем заключаются преимущества и недостатки объектно-ориентированного подхода в программировании?
Преимущества:
- Легко читается - не нужно выискивать в коде функции и выяснять, за что они отвечают
- Быстро пишется - можно быстро создать сущности, с которыми должна работать программа.
- Простота реализации большого функционала - т.к. на написание кода уходит меньше времени, можно гораздо быстрее создать приложение с множеством возможностей
- Меньше повторений кода - не нужно писать однотипные функции для разных сущностей
Недостатки:
- Потребление памяти - объекты потребляют больше оперативной памяти, чем примитивные типы данных
- Снижает производительность - многие вещи технически реализованы иначе, поэтому они используют больше ресурсов.
- Неэффективность и неэкономное распределения памяти на этапе выполнения (по причине издержек на динамическое связывание и проверки типов на этапе выполнения).
- Излишняя универсальность. Часто содержится больше методов, чем это реально необходимо текущей программе. А поскольку лишние методы не могут быть удалены, они становятся мертвым грузом.
- Сложно начать - парадигма ООП сложнее функционального программирования, поэтому на старт уходит больше времени