Особенности объектно-ориентированного подхода



Стремление избавиться от недостатков структурного подхода привело к развитию новых идей, основанных на объектной декомпо­зиции. Такой подход к разработке программных систем получил название объектно-ориентированного. В основе его лежат понятия


"объект", "класс", "инкапсуляция" и "полиморфизм". В реальном ми­ре, а точнее, в интересующей разработчика предметной области, в ка­честве объектов могут рассматриваться конкретные предметы, а так­же абстрактные или реальные сущности. Например, объектами могут быть покупатель; фирма, производящая определенные товары; банк; заказ на поставку. Объект обладает индивидуальностью и поведени­ем, имеет атрибуты, значения которых определяют его состояние. Так, конкретный покупатель, делая заказ, может оказаться в состоя­нии, когда денег на его счете не хватает для оплаты, а его "поведение" в этом случае заключается в "обращении в банк за кредитом".

Каждый объект является представителем некоторого класса одно­типных объектов. Класс определяет общие свойства для всех его объ­ектов. К таким свойствам относятся:

• состав и структура данных, описывающих атрибуты класса и соот­
ветствующих объектов;

• совокупность методов — процедур, определяющих взаимодейст­
вие объектов этого класса с внешней средой.

Например, описание класса "магазины" может включать некото­рые атрибуты (индивидуальные для каждого объекта этого класса — конкретного магазина): "название", "адрес", "штат сотрудников", "те­кущий счет", а также методы: "формирование заказов на поставку то­варов", "передача товара со склада в торговую секцию" и т.д. Объекты и классы обладают характерными свойствами, которые активно ис­пользуются при объектно-ориентированном подходе и во многом оп­ределяют его преимущества.

Инкапсуляция — это скрытие информации. При объектно-ориен­тированном программировании предусмотрена возможность запрета доступа к атрибутам объектов, кроме как через его методы. Внутрен­няя структура объекта в этом случае скрыта от пользователя, т.е. объ­екты можно считать самостоятельными сущностями, отделенными от внешнего мира. Для того чтобы объект произвел некоторое действие, ему извне необходимо послать сообщение, которое инициирует вы­полнение нужного метода. Инкапсуляция позволяет изменять реали­зацию любого класса объектов без опасения, что это вызовет нежела­тельные побочные эффекты в программной системе. Тем самым упрощается процесс исправления ошибок и модификации программ.

Наследование — возможность создавать из классов новые классы по принципу "от общего к частному". Наследование позволяет новым классам при сохранении всех свойств классов-родителей (называв-


мых в дальнейшем суперклассами) добавлять свои черты, отражаю­щие их индивидуальность. С точки зрения программиста новый класс должен содержать только коды и данные для новых или изменяющих­ся методов. Сообщения, обработка которых не обеспечивается собст­венными методами класса, передаются суперклассу. Наследование позволяет создавать иерархию классов и является эффективным сред­ством внесения изменений и дополнений в программные системы.

Полиморфизм — способность объектов выбирать метод на основе типов данных, применяемых в сообщении. Каждый объект может реа­гировать по-своему на одно и то же сообщение. Полиморфизм позво­ляет упростить исходные тексты программ, обеспечивает их развитие за счет введения новых методов обработки.

Объектно-ориентированная декомпозиция заключается в пред­ставлении системы в виде совокупности классов и объектов предмет­ной области. При этом иерархический характер сложной системы отражается в виде иерархии классов, а ее функционирование рассмат­ривается как взаимодействие объектов.

При таком подходе сложная система описывается наиболее есте­ственным образом.

Жизненный цикл объектно-ориентированной разработки про­граммных систем содержит несколько этапов, но в отличие от струк­турного подхода в нем нет строгой последовательности их выполне­ния. Процесс носит принципиально итеративный характер, что полностью отвечает потребностям разработчиков.

Разработка начинается с этапа исследования — объектно-ориен­тированного анализа. Здесь предъявляются требования к системе. Затем осуществляется анализ предметной области, в ходе которого определяются классы и объекты, которые составляют словарь пред­метной области. Результатом исследования должно быть получение достаточно полных сведений для создания модели системы.

После исследования начинается объектно-ориентированное про­ектирование, в ходе которого детализируется представление классов и объектов, полученных на этапе анализа. Определяются структуры данных, методы, отношения между классами, разрабатываются сцена­рии взаимодействия объектов. При проектировании системы могут вводиться новые классы и объекты, если это потребуется для решения поставленных проблем. В результате проектирования должна быть создана детальная модель системы, составлены спецификации объек­тов, классов и отношений, достаточные для их программирования.


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

Главная особенность жизненного цикла при объектно-ориентиро­ванном подходе заключается в том, что нет строгой последовательно­сти выполнения отдельных этапов. При разработке может выясниться необходимость дополнительного исследования; программирование и последующее тестирование могут потребовать возврата к проектиро­ванию. Такой метод, названный Г. Бучем возвратным, отражает итера­тивный характер разработки приложения.


Дата добавления: 2018-09-20; просмотров: 252; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!