Материал: 4970

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

31

2.1.1. Технологии объектно-ориентированного анализа

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

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

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

32

Найденные указанным способом сущности следует выписать в виде перечня (нумерованного списка). Аналогичным образом следует поступить со свойствами сущностей (параметров) и операциями (функциями). Выделенные сущности следует рассортировать по связям: сущность–свойства–операция. Каждая отдельная полученная связь «сущность–свойства–операция» будет являться объектом. Именем объекта будет являться наименование сущности. Пример объектной декомпозиции решения задачи «Идентификация клиента» из информационной системы «Автоматизация кассового обслуживания клиентов банка» приведён в Приложении А.

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

Для создания классов применяется один из методов классификации объектов предметной области:

1)классическая категоризация (категорию формируют сущности, обладающие определенным свойством или совокупностью свойств);

2)концептуальная кластеризация (формируются концептуальные описания классов, а затем классифицируются сущности в соответствии с этим описанием);

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

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

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

33

Для класса «внутренние документы» подклассом могут являться «приказы». Для класса «входящие документы» подклассом могут являться «факсы» и «электронные письма».

Наиболее сложной для понимания и применения является теория прототипов, так как формализации подлежат объекты, которые «которые не имеют ни чётких свойств, ни чёткого определения» [2]. Значимыми признаками принадлежности к классу в этом случае будут являться свойства объекта, определяемые при взаимодействии с другими объектами (свойства взаимодействия). Например, к классу «средство оплаты» можно отнести объекты, удовлетворяющие требованиям некоторого эквивалента тому, за что оплата производится, как то: наличная оплата, безналичная оплата, бартер, взаимозачёт, и т.д.

Вслучае классификации объектов с целью построения прикладных информационных систем часто используются формальные прототипы (иначе типовые шаблоны) классов, которые описывают поведение стандартных объектов и применяются в большинстве систем. Такие классы могут лишь незначительно отличаться на основании специфики решаемых задач, так как основная цель классификации – обеспечить наибольшее соответствие объекта в модели его реальному двойнику. Например: хранилища данных, документы, сотрудники (по ролям исполнения обязанностей), операционные системы и т.д. Формальные прототипы классов имеют широкое применение в нотации UML и во многом упрощают процесс классификации.

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

Результатом этапа анализа является отражение статического состояния элементов системы в виде описания содержимого классов (имя класса, свойства класса, функции класса, принадлежность класса к более высшему классу).

Следует ещё раз отметить, что документирование процесса классификации должно быть выполнено по определённым правилам (нотациям), с целью унификации при работе над проектом.

34

Контрольные вопросы и задания

1.Что является результатом формального описания предметной области?

2.Что является результатом объектной декомпозиции?

3.Чем объясняется детерминированная реакция объектов на события?

4.Какие требования к языку программирования предъявляют правила описания состава классов?

5.В чём заключается сложность формального описания предметной области ?

6.В чём заключается метод неформального описания предметной области?

7.В чём выражается специфика итерационной модели проектирования на этапе анализа информационной системы?

8.В чём заключается метод классической категоризации?

9.В чём заключается метод концептуальной кластеризации?

10.В чём заключается метод классификации на основании теории прототипов?

11.Приведите примеры классификации объектов.

12.В чём заключается смысл полиморфизма?

13.В чём заключается сходство и различие способов классификации?

2.2. Программная реализация объектно-ориентированной технологии

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

2.2.1. Объектно-ориентированные дополнения к процедурным языкам программирования и абстрактные типы данных

Все процедурные языки программирования являются строго типизированными. Это означает, что в качестве операндов стандартных встроенных операций языков программирования используются только базовые неизменяемые типы языка, например: целый int; вещественный float и т.д. Соблюдение правил жёсткой типизации всех операций и функций является основным условием их выполнения. При выполнении вызова функций в качестве параметров могут быть использованы только базовые типы переменных языка программирования. В том

35

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

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

Например, если объектом предметной области «Высшее учебное заведение» является объект «студент», то он имеет следующие реквизиты: Ф.И.О., № группы, № студ.билета. В этом примере сущность «студент» является абстрактным типом данных, который создаётся программистом из типовых, базовых конструкций языка программирования:

1)Ф_И_О – массив символьных переменных;

2)№_группы – массив символьных переменных;

3)№_студ_билета – массив символьных переменных.

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

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

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

Источник: https://studfile.net/preview/16710630/