Объектно-ориентированный подход к программированию имеет 4 важных аспекта:
1) модульность; она позволяет:
- разбить программу на модули и локализовать область действия подпро
грамм и переменных;
- изменять локальные подпрограммы, не изменяя других программных моду
лей;
2) абстракция данных; абстрактный тип данных определяется на основе неко
торого их представления и множества подпрограмм для обработки данных
абстрактного типа;
3) динамическая связка подпрограмм программы; это позволяет не переком
пилировать всю программу при внесении изменений в отдельные модули,
что увеличивает гибкость языка, позволяя вводить новые классы объектов
без модификации всей программы;
4) наследование; оно позволяет создавать классы объектов, на которые может
ссылаться порожденный класс, который наследует все свойства порож
дающего класса и может задавать дополнительные свойства и новые под
программы обработки данных порожденного класса.
Это позволяет создавать компактные программы: при определении нового объекта, незначительно отличающегося от объекта-предка, не надо заново описывать свойства, общие с объектом-родителем, достаточно определить только различия.
ООП обладает рядом преимуществ при создании больших программ:
1) использование более естественных понятий и простота введения новых
понятий;
2) некоторое сокращение размера программ за счет того, что повторяющиеся
(наследуемые) свойства и действия можно не описывать многократно;
применение динамических объектов позволяет более эффективно использовать ОП;
3) возможность создания библиотек объектов;
4) сравнительно простая возможность внесения изменений в программу без
изменения написанных частей, а в ряде случаев без перекомпиляции написанных и скомпилированных программ (библиотек); при этом используются свойства наследования и полиморфизма; это упрощает модификацию программ, придает им гибкость; одно из главных достоинств ООП - возможность расширять область применения программ, не переделывая программу, а лишь добавляя в нее новые уровни иерархии;
5) возможность использования подпрограмм с различными наборами формальных параметров, но имеющих одно и то же имя, применяя свойство
полиморфизма;
6) более четкая локализация свойств и методов объекта (с помощью свойства
инкапсуляции);
7) возможность разделения доступа к различным объектам программы.
Однако ООП имеет ряд недостатков и эффективно не всегда.
ООП требует изучения большого количества встроенных подпрограмм объектов порождающих классов.
Как правило, использование ООП приводит к уменьшению быстродействия программы, особенно когда применяются виртуальные методы. Неэффективно ООП применительно к небольшим программам. Преимущества ООП в полной мере проявляются только при разработке достаточно сложных программ. Поэтому ООП можно рекомендовать при создании больших программ или класса программ, например для создания интерактивных систем с помощью средств визуального программирования. Применение ООП не упрощает саму программу, а упрощает технологию ее создания.
Попытки использовать ООП для программирования несложных алгоритмических действий, связанных, например, с вычислениями по готовым формулам, чаще всего выглядит искусственным нагромождением ненужных языковых конструкций. Их проще разрабатывать традиционными средствами Паскаля. А при разработке сложных диалоговых программ программист вынужден структурировать программу, т. е. разбить ее на ряд взаимосвязанных и взаимозависимых подпрограмм. Это фактически ведет к разработке собственной библиотеки подпрограмм; в этом случае целесообразноиспользовать средства ООП.