В теории программирования
объектно-ориентированного программирования (
ООП) определяется как технология создания сложного программного обеспечения, которая основана на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного типа (
класса), а классы образуют
иерархию с наследованием свойств. Взаимодействие объектов в такой системе осуществляется путем передачи сообщений между объектами.
Такое представление программы было представлено в языке Simula. Принцип
ООП был использован в языках Паскаль,
C++.
Основное достоинство ООП – сокращение количества межмодульных вызовов и уменьшение объемов информации, передаваемой между модулями, по сравнению с модульными программами. Это достигается за счет более полной локализации данных и интегрирования их с подпрограммами обработки, что позволяет вести практически независимую разработку отдельных частей программы (объектов).
Объектный подход предполагает новые средства разработки (наследование, полиморфизм, композиция, наполнение), позволяющие конструировать более сложные программные продукты.
Основной недостаток – некоторое снижение быстродействия за счет сложной организации программных систем.
В основу
ООП заложены следующие принципы:
- абстрагирование
- ограничение доступа
- модульность
- иерархичность
- типизация
- параллелизм
- устойчивость
Абстрагирование четко определяет особенности данного объекта с точки зрения дальнейшего рассмотрения и анализа. Современный уровень
абстракции предполагает объединение всех свойств объекта (состояние объекта, поведение) в единую программную единицу – некий
абстрактный тип (в
C++ –
класс).
В результате ограничения доступа в
ООП позволяют разработчику:
- выполнять конструирование системы поэтапно, не отвлекаясь на особенности реализации используемых абстракций.
- легко модифицировать реализацию отдельных объектов. Если система разработана правильно, то модификация не потребует изменения всех объектов.
Принцип модульности унаследован от модульного программирования. Следование этому принципу упрощает проектирование и отладку программы.
В
ООП используется два вида иерархии - общая, дробь, частная. Эта иерархия используется при разработке структуры классов, когда
классы строятся на базе более простых, путем добавления к ним новых характеристик и, возможно, уточнения имеющихся.
Использование
принципа типизации обеспечивает раннее обнаружение ошибок, которые связаны с недопустимыми операциями над программными объектами.
- упрощение документации
- возможность генерации более эффективного кода программы. Тип может связываться с программным объектом
- статически (раннее связывание, тип объекта определен при компиляции)
- динамически (позднее связывание. Тип определяется во время выполнения программы.)