Объекты объединяют в себе данные и подпрограммы, обрабатывающие эти данные.
Каждый объект является экземпляром класса (типа), а классы образуют иерархию с наследованием («простое-сложное).
Взаимодействие объектов осуществляется путем передачи сообщений.
Основным достоинством объектно-ориентированного программирования (ООП) по сравнению со структурным яв-ляется «более естественная» декомпозиция задачи, которая существенно облегчает его разработку.
Это приводит к более полной локализации данных и интегрированию их с подпрограммами обработки, что позво-ляет вести практически независимую разработку отдельных частей (объектов) программы.
Кроме этого, объектный подход предлагает новые способы организации программ, основанные на механизмах инкапсуляции, наследования, полиморфизма, что позволяет конструировать сложные объекты из сравнительно простых. В результате существенно увеличивается повторяемость кода.
Четвертый этап – компонентный подход и CASE-технологии (с середины 90-х годов до нашего времени).
Компонентный подход предполагает построение ПО из отдельных компонентов, которые взаимодействуют между собой через стандартизованные двоичные интерфейсы.
В отличие от обычных объектов объекты-компоненты можно собрать в динамически вызываемые библиотеки или исполняемые файлы (*.dll *.exe), распространять в двоичном виде (без исходных текстов) и использовать в любом языке, поддерживающем соответствующую технологию.
Компонентный подход лежит в основе технологий COM (Component Object Model – компонентная модель объектов), и технологии создания распределенных приложений CORBA (Common Object Request Broker Architecture - общая архитектура с посредником обработки запросов объектов).
Технология СОМ фирмы Microsoft является разви-тием технологии OLE, которая использовалась в Windows для создания составных документов.
Технология СОМ определяет общую парадигму взаимодействия программ любых типов: библиотек, приложений, операционной системы, т. е. позволяет одной части программного обеспечения использовать функции (службы), предоставляемые другой, независимо от того, функционируют ли эти части в пределах одного процесса, в разных процессах на одном компьютере или на разных компьютерах.