Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы на ГОСы1.doc
Скачиваний:
61
Добавлен:
06.05.2019
Размер:
4 Мб
Скачать

58__Объектный подход к проектированию информационных систем.

Методы проектирования программных систем. Разграничим понятия «метод» и «методология». Метод - это последовательный процесс создания моделей, которые описывают вполне определенными средствами различные стороны разрабатываемой программной системы.

Методология - это совокупность методов, применяемых в жизненном цикле разработки программного обеспечения и объединенных одним общим философским подходом.

Методы появились как ответ на растущую сложность программных систем. Для первых ЭВМ создавались простые программы. В 60-70-е годы эффективность применения компьютеров резко возросла, цены на них стали падать, а возможности ЭВМ увеличились. Сложность ПО возросла, поэтому в 60-70-е годы было разработано много методов, помогающих справиться с растущей сложностью программ.

Методы разбивают на три группы:

  • метод структурного проектирования сверху вниз (оказалось, что структурный подход не работает, если объем программы превышает приблизительно 100000 строк);.

  • метод потоков данных (DFD) (структура программной системы строится как преобразование входных потоков в выходные);

  • объектно-ориентированное проектирование (OOD).

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

ООD – это метод, логически приводящий нас к объектно-ориентированной декомпозиции. Применяя ООD, мы создаем открытые для изменений программы, построенные из ограниченного числа универсальных блоков (компонентов)

Модели объектно-ориентированного проектирования. Важность построения моделей при проектировании сложных систем диктует необходимость наличия нескольких типов моделей (рис.3).

Несмотря на различия в моделях, методы проектирования моделей имеют что-то общее. Их, в частности, объединяет следующее:

  • условные обозначения - язык для описания каждой модели;

  • процесс - правила проектирования модели;

  • инструменты - средства, которые ускоряют процесс создания моделей, определяют законы их функционирования и помогают выявлять ошибки в процессе разработки.

Рис. 3. Модели объектно-ориентированного проектирования.

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

Объектно-ориентированный анализ направлен на создание моделей, более близких к реальности, с использованием объектно-ориентированного подхода. Это методология, при которой требования к системе формируются на основе понятий классов и объектов, выявленных в предметной области (составляющих словарь предметной области).

Основные предпосылки создания объектно-ориентированного подхода:

  1. прогресс в области архитектуры ЭВМ (включая системную и аппаратную часть);

  2. развитие языков программирования, таких как Simula, Smalltalk, CLU, Ada;

  3. развитие методологии программирования, включая принципы модульности и защиты информации (сокрытия данных)"

Три момента, оказавшие влияние на становление объектного подхода:

  • развитие теории баз данных (ER-модели);

  • исследования в области искусственного интеллекта (теория фреймов);

  • достижения философии и теории познания (греки – мир можно рассматривать как в терминах объектов, так и событий; Декарт _люди имеют объектный взгляд на мир; Клир – редукционизм и холизм).

Компоненты объектного подхода

Способ программирования определяется стилем программирования, включающим принципы программирования и языки программирования. Пять основных разновидностей стилей программирования:

С Т И Л Ь

ВИД АБСТРАКЦИИ

Процедурно-ориентированный

Алгоритмы

Объектно-ориентированный

Классы и объекты

Логико-ориентированный

Цели (наиболее часто выраженные в терминах исчисления предикатов)

Ориентированный на правила

Правила "если…- то…"

Ориентированный на ограничения

Инвариантные соотношения

Основные элементы объектно-ориентированного стиля. Каждый стиль программирования имеет свою концептуальную основу. Для объектно-ориентированного стиля концептуальная основа состоит в объектном подходе.

Ему соответствуют четыре главных элемента

(без любого из них подход не будет ОО)

и три дополнительных элемента:

  • абстрагирование;

  • ограничение доступа;

  • модульность;

  • иерархия

  • типизация;

  • параллелизм;

  • сохраняемость

1. Абстрагирование – позволяет сосредоточить внимание на существенных характеристиках объекта с точки зрения наблюдателя (пример кошка для домохозяйки и ветеринара)

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

Абстракция должна охватить лишь самую суть объекта, не больше, но и не меньше – «принцип наименьшей выразительности»

Выделяют следующие обстракции:

• Абстракция сущности

объекта

Объект представляет собой модель некой сущности (описание существенных сторон) предметной области

• Абстракция поведения

Объект состоит из обобщенного множества операций, каждая из которых выполняет полезную функцию

•Абстракция в виде виртуальной машины

Объект объединяет группы операции, которые либо используются для управления объектом (на более высоком уровне управления), либо сами используют некоторый набор операций более низкого уровня

• Произвольная абстракция

Объект включает в себя набор независимых по отношению друг к другу операций

Наиболее интересны абстракции сущностей объектов, так как они соответствуют словарю предметной области.

Объект, использующий ресурсы другого объекта называется клиентом.

Полный набор операций, которые клиент может осуществлять над другим объектом, называется протоколом. Протокол отражает все возможные действия, которыми объект может подвергаться сам и которыми может оказывать влияние на другие объекты.

Понятия операция (Ada), метод (Smalltalk) и функция-элемент (C++ )- фактически обозначают одно и то же и используются как эквивалент.

Все абстракции обладают как статическими, так и динамическими свойствами.

Пример: Объект – файл. Статические свойства : объем требуемой памяти, имя, содержание. Динамические свойства: файл может изменять размеры, имя, содержание.

Пример. В Object Pascal есть абстракции: переменные объектов, методы объектов; нет: переменных классов, методов классов. Отсутствуют также метаклассы и множественное наследование – эти механизмы исключены, чтобы сделать язык простым для изучения программистам начинающим изучать О.О. методологию. Поэтому Object Pascal иногда называют «обглоданным» О.О. языком

Уже насчитывается около 2000 языков программирования, более 100 – объектных (имеющих механизмы реализации абстрактных данных и классов, например, Ada) и объектно-ориентированных языков (в которых реализован механизм наследования как средство отражения иерархии классов, например, Smalltalk, Object Pascal (в нем есть простое наследование), C++, Clos).

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

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

Пример: В Object Pascal формально нет ограничений доступа, тем не менее все поля являются обособленными, а доступ к ним осуществляется через методы класса.

3. Модульность – является элементом конструкции и позволяет осуществлять на её основе проектные решения. В таких языках ( например, Object Pascal, C++, Ada, CLOS, LISP) классы и объекты составляют логическую структуру системы, эти абстракции организуются в модули, образуя физическую структуру системы (особенно когда система состоит из сотен классов).

Иначе говоря, «модульность – это разделение программы на раздельно компилируемые фрагменты (модули) , имеющие между собой средства сообщения».

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

Определение: Модульность - это свойство системы, связанное с возможностью декомпозиции ее на ряд тесно связанных модулей.

Пример: обратиться к рис. 3 на стр. 5. Выявление классов и объектов - логическое проектирование, деление на модули – физическое проектирование

4. Иерархия – это ранжированная или упорядоченная последовательность.

Пример иерархии: наследование - такое отношение между классами (отношение родитель/потомок), когда один класс заимствует структурную или функциональную часть одного или нескольких других классов (соответственно, простое или множественное наследование).

Дополнительные элементы объектно-ориентированного стиля.

1. Типизация. Концепция типизации строится на понятии типов абстрактных данных.

«Тип – это точное определение свойств строения или поведения, которое присуще некоторой совокупности объектов». «Тип» и «Класс» - эквивалентные понятия

Определение: Типизация – это ограничение, накладываемое на класс объектов и препятствующее взаимозамене различных классов (или сужающее возможности такой взаимозамены).

2. Параллелизм. Реальная параллельность достигается только на многопроцессорных системах (системы с одним процессором имитируют параллельность за счет алгоритмов разделения времени). В то время, как объектно-ориентированное программирование основано на абстракции данных, ограничении доступа и наследовании, параллелизм связан с абстрагированием и синхронизацией процессов.

Объект является основой, которая объединяет обе концепции: каждый объект (как абстракция реальности) может представлять собой отдельный канал управления (абстракцию процесса). Такой объект называется активным.

Определение: Параллелизм - это свойство объектов находиться в активном, либо пассивном состоянии.

3. Устойчивость – это свойство объекта существовать во времени (вне зависимости от процесса, породившего данный объект) и (или) в пространстве (перемещение объекта из адресного пространства, в котором он был создан {для многопроцессорных систем})

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

Инкапсуляция – объединение в данном элементе и данных, и способов их обработки. Можно определить данные, входящие в классы, и действия, которые могут выполняться над этими данными, как некоторую структуру–объект в системе, работающей согласно набору правил.

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

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

Преимущества объектного подхода. Объектный подход позволяет создавать системы, которые воплощают пять атрибутов (свойств) сложных (хорошо структурированных) систем (иерархия, разделение на подсистемы, внутренние и внешние связи, низший уровень абстракции, развитие от простого к сложному). Еще пять преимуществ:

  1. Объектный подход позволяет в полной мере использовать выразительные возможности объектных и объектно-ориентированных языков программирования (их преимущества не всегда очевидны)

  2. Использование объектного подхода существенно повышает качество разработки в целом и её фрагментов.

  3. Использование объектного подхода приводит к построению систем на основе стабильных промежуточных описаний, что упрощает процесс внесения изменений и позволяет избегать полной переработки системы в случае существенных изменений исходных требований.

  4. Объектный подход уменьшает риск разработки сложных систем потому что:

а) процесс интеграции растягивается во времени жизненного цикла системы;

б) объектный подход включает ряд хорошо продуманных этапов проектирования (что также уменьшает степень риска и повышает степень уверенности в правильности принимаемых решений).

  1. Объектный подход ориентирован на человеческое восприятие мира (для многих людей является естественным ООП к системам)

Общие выводы по теме «Объектный подход»

1. Развитие программной технологии привело к созданию методов О.О. Анализа, Проектирования и Программирования, которые направлены на решение задачи программирования больших систем.

2. Существует ряд приемов (стилей) программирования: процедурно-ориентированный, объектно-ориентированный, логически-ориентированный, ориентированный на правила и ориентированный на ограничения.

3. Объектный подход образует концептуальную основу для объектно-ориентированной методологии; он включает принципы абстрагирования, ограничения доступа, модульности, иерархии, типизации, параллелизма и устойчивости.

4. Абстрагирование означает выделения таких существенных характеристик объекта, которые отличают его от всех других объектов и, таким образом, четко определяют особенности данного объекта с точки зрения дальнейшего его рассмотрения.

5. Ограничение доступа – процесс защиты отдельных элементов объекта, не затрагивающий существенных характеристик объекта как целого.

6. Модульность – свойство системы, связанное с возможностью ее декомпозиции на ряд тесно связанных модулей.

7. Иерархия – ранжированная или упорядоченная система абстракций.

8. Типизация – ограничение, предъявленное классу объектов, препятствующее взаимозамене различных классов и в большинстве случаев сильно сужающее возможность такой взаимозамены.

9. Параллелизм – свойство, отличающее активные объекты от неактивных.

10. Устойчивость – свойство объектов существовать во времени и (или) пространстве.

11. Применение объектного подхода позволяет создавать системы, обладающие пятью атрибутами хорошо структурированных систем (иерархия, разделение на подсистемы, наличие внутренних и внешних связей, низший уровень абстракции, развитие от простого к сложному).