Файл: Применение объектно-ориентированного подхода при проектировании информационной системы (Жизненный цикл проектируемой системы).pdf
Добавлен: 29.06.2023
Просмотров: 83
Скачиваний: 3
Введение
Существенная черта современных промышленных программ - уровень сложности. Методы проектирования программных систем появились как ответ на растущую сложность программ. Методы упорядочивают процесс создания сложных программных систем, как набор средств, доступных для всей группы разработчиков и позволяют менеджерам в процессе разработки оценить степень продвижения и риск. Мы вправе выбрать различные методы проектирования: это может быть структурный анализ со своим определенным инструментарием или объектно-ориентированный. В зависимости от выбранного метода строятся различные модели бизнес процессов системной области. Построение модели это определенный способ изучения объектов или явлений. Благодаря построенным моделям мы можем проверить работоспособность разрабатываемой системы на ранних этапах ее разработки, вносить в случае необходимости определенные изменения в проект системы, как в начале, так и на последующих этапах.
Я выбрала для исследования объектно-ориентированный подход проектирования, так как в настоящее время объектно-ориентированный анализ является одним из наиболее интенсивно развивающихся. Также именно этот подход отражает топологию новейших языков высокого уровня, таких как Smalltaik, Object Pascal, C++, CLOS и Ada. Объектно-ориентированный подход к программированию стал приоритетным при разработке большинства программных проектов, что и обусловило актуальность моей работы.
Обучению объектно-ориентированному программированию и проектированию посвящены работы зарубежных исследователей, таких как Г. Буч, Б. Мэйер, А. Якобсон, Дж. Рамбо, И. Грэхем, М. Фаулер, а также исследования отечественных ученых Г.С. Ивановой, Т.Н. Ничушкина, Е.К. Пугачева, И.А. Бабушкиной и др.
Предмет исследования – объектно-ориентированное проектирование, методология BOOSH (Г. Буч).
Основным источником исследования я выбрала книгу «Объектно-ориентированный анализ и проектирование с примерами приложений»[1]. Автор Гради Буч является главным исследователем корпорации Rational Software, признанным разработчиком программного обеспечения. Это издание написано понятным языком и содержит множество примеров.
Цели моей работы - раскрыть особенности объектно-ориентированного проектирования, его преимущества; освоить систему обозначений и процесс объективно-ориентированного анализа и проектирования; научиться практическому применению объективно-ориентированного подхода в различных предметных областях.
В соответствии с поставленных целей решались следующие основные задачи:
-изучить основные концепции объектной модели;
-рассмотреть процесс и этапы жизненного цикла объектно-ориентированного анализа и проектирования;
-изучить некоторые объектно-ориентированные языки программирования;
-исследовать достоинства и недостатки объективно-ориентированного проектирования;
В первой главе будет рассмотрена проблема сложности программных систем и объектная модель как метод решения этой проблемы, а также основные элементы объектной модели.
Во второй главе будут рассмотрены три фазы жизненного цикла проектирования системы, объективно-ориентированный анализ и его реализация.
В третьей главе будут приведены примеры объективно-ориентированных языков программирования, история их появления и характеристики.
В четвертой главе приводятся преимущества объективного проектирования по сравнению с другими, а также его недостатки.
Глава 1. Сущность объектно-ориентированного подхода
При проектировании сложной программной системы удобно разделить ее на небольшие подсистемы, с каждой из которых можно работать независимо и совершенствовать ее. Такое разделение называется декомпозицией системы. Различие между структурным и объектно-ориентированным подходами в первую очередь заключается в том, какой способ декомпозиции выбран. Объектно-ориентированный подход использует объектную декомпозицию, где логическая структура системы отражается абстракциями в виде классов и объектов. Каждый объект системы моделирует поведение объекта окружающего мира и обладает только ему присущим поведением.
Для объектно-ориентированного подхода концептуальной базой является объектная модель. Она имеет четыре главных элемента:
- Абстрагирование проявляется в нахождение сходств между объектами и позволяет отделить самые существенные особенности этого объекта. С помощью абстрагирования определяются четкие концептуальные границы объекта с точки зрения наблюдателя. Абстракции обладают как статическими свойствами: объем памяти, имя, содержание; так и динамическими: мы можем изменить размер файла, его имя или содержание[1, с.39].
- Инкапсуляция выполняется посредством скрытия информации о внутреннем устройстве объекта, не влияющих на его внешнее поведение. Инкапсуляция предназначена для того, чтобы изолировать контактные обязательства абстракции от их реализации[3, с.85].
- Модульность позволяет разделить программу на фрагменты- модули- служащих в качестве физических контейнеров, позволяющих хранить абстракции отдельно. Между собой модули находятся в слабой взаимосвязи, но каждый модуль внутренне хорошо связан[4, с.108].
- Иерархия упорядочивает абстракции, раскладывая их по уровням. Основными видами иерархических структур применительно к сложным системам являются структура классов (иерархия по номенклатуре) и структура объектов (иерархия по составу).
1.1 Понятие объекта
Сущность объектно-ориентированного подхода заключается также в понятии объект, которое было использовано уже около 30 лет назад, когда возникла необходимость перейти от традиционной Фон Неймановской архитектуры к более параллельным вычислениям, более высокому уровню программных абстракций. Термин объект в программном обеспечении впервые был введен в языке SIMULA и применялся для моделирования реальности[6, с. 62].
Представление системы в терминах объектов более простое и наглядное, так как программные объекты схожи с объектами реального мира. В реальном мире, в интересующей разработчика предметной области, в качестве объектов могут рассматриваться осязаемые или видимые предметы, нечто, воспринимаемое мышлением или то, на что направлены мысль или действие[2, с.38]. Объект имеет состояние, обладает определенным поведением и уникальной идентичностью.
Состояние объекта определяется перечнем всех возможных (обычно статических) свойств и текущими значениями (обычно динамическими) каждого из этих свойств. Все свойства объекта имеют некоторые значения. То, как объекты функционируют, помогает понять их поведение.
Поведение объекта - это его наблюдаемая и проверяемая извне деятельность, то как он взаимодействует на другой на другие объекты или как он сам реагирует на действия других объектов[1, с.71]. Такое воздействие называется операцией. Часто понятие метод является синонимом понятию операция и входит в определение класса.
Можно выделить пять наиболее распространенных типов операций:
- Модификатор - это операция, изменяющая состояние объекта.
- Селектор-это операция, считывающая, но не меняющая состояние объекта.
- Итератор-это операция, с помощью которой можно организовать доступ ко всем частям объекта в определенной последовательности.
- Конструктор-операция создания объекта или его инициализации
- Деконструктор - операция разрушающая объект[1, с.73].
Состояние объекта может влиять на его поведение, причем некоторые операции могут изменять состояние объекта.
Идентичность или индивидуальность-это свойство объекта, отличающее его от всех других. Существует вероятность ошибок, путая идентичность с адресуемостью объекта.
Реализация системы будет происходить только в процессе взаимодействия объектов. Отношения между парой объектов основываются на взаимной информации об операциях, которые можно выполнить, и об ожидаемом поведении.
Выделяется два типа отношений между объектами:
- Связи - это физическое или понятийное соединение между объектами, через которое клиент запрашивает услугу у объекта-сервера или через которое один объект находит путь к другому[5, с. 34]. Вдоль связи объект посылает сообщение другому объекту.
Участвуя в связи, объект может выполнять различные роли:
- Актер, когда сам объект может не подвергаться воздействию, но активно воздействовать на другие объекты. Такие объекты называют активными.
- Сервер, когда объект не выступает в роли воздействующего объекта, а только использоваться другими объектами. Такой объект называется пассивным.
- Агент, когда объект может выступать как в активной роли, воздействуя на другие объекты, так и в пассивной, используясь ими. Агент создается для выполнения работы в интересах объекта-актера или другого объекта-агента[ 4, с.112-113].
Пусть есть два объекта X и Y, находящихся в связи между собой. Чтобы X мог послать сообщение в объект Y, нужно чтобы Y был видим для X. На этапе проектирования и реализации системы видимости по связям обязательно должны быть обеспечены. Чтобы обеспечить видимость связанных объектов можно использовать один из способов:
- Сервер глобален по отношению к клиенту.
- Сервер является параметром операции клиента.
- Сервер является частью клиента.
- Сервер является локально объявленным объектом в операции клиента[1, с. 83-84].
- Агрегация - описывает отношения объектов в иерархии часть-целое. Агрегация обеспечивает возможность перемещения от целого (агрегата) к его частям (атрибутам). Объект-атрибут имеет связь с объектом-агрегатом и может получать от него сообщения. Агрегацию можно рассматривать как частный случай ассоциации. Агрегация может означать физическое вхождение одного объекта в другой, но не обязательно[4, с. 114-115].
Выбирая один из двух этих типов отношений, необходимо учитывать, что связи обеспечивают более слабое сцепление между объектами и менее ограничительные. Агрегация может позволить инкапсулировать части в целом.
1.2. Понятие класса
Когда мы говорим об объектах, мы говорим, что они являются экземплярами классов. Объект можно определить, как некую сущность определенную во времени и пространстве, а класс определяет лишь абстракцию существенного в объекте, его методы, которые обрабатывают переменные и тем самым определяют поведение объекта.
Класс-это описание совокупности сходных между собой объектов, имеющих общую структуру и общее поведение[5, с.39]. При этом в некоторых исполняющих системах класс также может представляться некоторым объектом при выполнении программы посредством динамической идентификации типа данных.
Различают внутреннее устройство класса (реализацию) и внешнее облика класса (интерфейс). Интерфейс объявляет возможности класса, но скрывает его структуру и поведение, демонстрируя только абстракцию класса, его внешний облик.
Интерфейс состоит из объявления операций, поддерживаемых экземплярами класса и объявления других классов, перемененных, констант и исключений, уточняющих абстракцию.
Интерфейс можно разделить на три части:
- открытую (public), объявления которой видны всем клиентам;
- защищенную (protected), объявления которой доступны только самому классу, его подклассам и друзьям;
- закрытую (private), видимую только самому классу и его друзьям[5, с.39].
Разработчик может установить права доступа к какой-либо части класса, задав зону видимости для клиента.
Другом класса называют класс, который обладает правом доступа ко всем частям этого класса.
После определения интерфейса и согласованию его с интерфейсами смежных уровней управления, можно переходить к реализации всех уровней. Состояние объекта задается в его классе через определение констант, инкапсулированных для пользователя.
Классы, как и объекты не могут существовать без взаимодействия и формируют структуры из классов системы с помощью отношений. Известны три основных типа отношений между классами.
-
- отношение обобщение-специализация ("is а"-отношение);
- отношение целое-часть ("part оf"-отношение);
- ассоциация - семантические, смысловые отношения[1, с.87].
Большинство объектно-ориентированных языков программирования поддерживают разные комбинации следующих отношений:
- Ассоциации - обеспечивают смысловую связь объектов, принадлежащих разным классам[5, с.40]. Благодаря ассоциациям система работает. Без ассоциаций система превращается в набор изолированных классов-одиночек. Ассоциация не указывает направление и точную реализацию отношения. Ассоциация пригодна для анализа проблемы, когда требуется лишь идентифицировать связи. С помощью создания ассоциаций можно понять участников семантических связей, их роли, мощности (количества элементов).
Мощность ассоциации бывает одного из трех типов: