4. Достоинства и недостатки объектно-ориентированного подхода
Необходимо явно разделять две категории объектно-ориентированного подхода: объектно-ориентированное программирование ( т.е. методика составления текстов программ на объектно-ориентированном языке ) и объектно-ориентированный анализ и проектирование ( т.е. создание проектов систем и описание предметной области в терминах объектно-ориентированного подхода - классов, атрибутов, методов ).
Сегодня ни у кого не возникает сомнения в том, что объектно-ориентированное программирование является наиболее прогрессивной технологией разработки программных систем. Преимущества этого подхода рассматриваются ниже.
Объектно-ориентированный анализ, как средство описания предметной области и объектно-ориентированное проектирование как способ создания высокоуровневых проектов сегодня подвергается критике. Одним из результатов этой критики является создание Универсального Языка Моделирования - UML ( Unified Modeling Language ), который подробно рассматривается в данном пособии. В рамках данного пособия, которое посвящено в основном методам проектирования объектно-ориентированных систем рассматриваются именно достоинства таких систем, т.е. проекты являются уже техническими, они описывают не структуру предметной области, а структуру объектно-ориентированной программы. Опыт авторов данного пособия показывает, что создание крупных проектов ( таких для которых важнейшей задачей является описание предметной области, и для которых невозможно найти человека, понимающего эту предметную область в целом ) требует использования традиционных технологий, т.к. они более понятны большому кругу неспециалистов и они более адекватно рассматривают именно проблемы предметной области.
4.1 Преимущества объектно-ориентированного подхода
Сокращение числа возможных ошибок. Типичные ошибки при решении различных задач :
Несогласованные параметры подпрограмм
Часто может наблюдаться передача в подпрограмму разных параметров, несогласованных друг с другом. Пусть есть подпрограмма, выводящая на экран матрицу А размером N x M. Ее заголовок может быть таким:
procedure ShowMatrix( A : TMatrix; N,M : integer );
при вызове подпрограммы, за счет ошибки программиста, N и M могут не соответствовать реальному размеру матрицы. Эта задача решается за счет инкапсуляции, когда N и M включаются в качестве атрибутов в матрицу.
Несогласованное изменение атрибутов
Пусть у матрицы есть поля данных, характеризующих текущий размер матрицы. Если метод вставки элемента не учитывает возможное изменение размера матрицы, то может сложиться такая ситуация, когда содержимое матрицы и поля данных N M не будут соответствовать друг другу.
Повторное использование. Предполагается какой-либо вариант многократного использования уже существующего проекта или его части в новом проекте. Повторное использование можно разделить на две категории:
- повторного использования существующего кода для решения модифицированной задачи
- повторное использование и для решения других задач в данной предметной области
В обоих случаях объектно-ориентированный подход дает преимущества. За счет использования классов легко модифицировать существующие элементы без изменения уже готовых.
4.2 Недостатки объектно-ориентированного подхода
Усложнение методологии. Применение объектно-ориентированного подхода требует введения дополнительных способов представления информации о предметной области и методов ее анализа. Язык UML включает более 100 различных условных обозначений. Для успешного использования подобного механизма требуется наличие определенного уровня квалификации у специалистов. Для небольших проектов более эффективным может оказаться применение классических методов разработки. Разработка проектов, для которых важнейшей задачей является описание предметной области, и для которых невозможно найти человека, понимающего эту предметную область в целом также требует использования традиционных подходов, в виду их большей доступности для неспециалистов.
Сложность реализации. Объектно-ориентированные проекты и их программная реализации на объектно-ориентированном языке, требуют больших временных затрат и приводят к построению более сложной и требовательной к ресурсам программы, нежели классические методы, которые могут оказаться более эффективными для некоторых задач.