Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Генерация программного кода C++

Содержание:

Введение

Язык UML (Unified Modeling Language) представляет собой общецелевой язык визуального моделирования, который разработан для спецификации, визуализации, проектирования и документирования компонентов программного обеспечения, бизнес-процессов и других систем.

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

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

В качестве среды разработки информационной подсистемы был использован программный продукт Rational Rose 2000 Enterprise v6.5.

Глава 1. Характеристика предметной области

Общая характеристика склада как объекта хозяйственной деятельности. В данном курсовом проекте в качестве предметной области используется склад фирмы. Форм отчетности и действий, производимых на складе, весьма широк, но основной задачей является учет товара.

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

Обоснование актуальности разработки объектно-ориентрованной модели информационной подсистемы. Актуальность разработки объектно-ориентированной модели информационной подсистемы для учета движения товаров на складе обуславливается применением языка UML (Unified Modeling Language).

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

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

Формулировка задачи проектирования. Задачей курсового проекта является разработка объектно-ориентированной модели информационной подсистемы для учета движения товаров на складе фирмы с использованием языка UML.

В качестве среды разработки информационной подсистемы был использован программный продукт Rational Rose Enterprise v6.5.

В результате проектирования должна быть получена объектно-ориентированная модель информационной подсистемы для учета движения товаров на складе. Модель будет включать в себя:

  • диаграмму вариантов использования;
  • диаграмму последовательности;
  • диаграмму сотрудничества;
  • диаграмму классов;
  • диаграмму состояний;
  • диаграмму компонентов;
  • диаграмму размещения;
  • программный код на языке С++.

1.1. Создание диаграммы прецедентов

Диаграммой прецедентов, или использования (use case diagram) называется диаграмма, на которой показана совокупность прецедентов и актеров, а также отношения (зависимости, обобщения и ассоциации) между ними.

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

Элементы диаграммы:

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

Ри?сунок 1.1 - Ди?аграмма пр?ецедентовВ ка?честве ак?теров на ди?аграмме (р?исунок 1.1) ис?пользуются об?ъекты:

  • «z?av_sklad» (з?аведующий складом), ко?торый уп?равляет ва?риантами ис?пользования:
  • «o?borot_mes» (о?борот за ме?сяц);
  • «r?eviziya» (р?евизия);
  • «k?lad» (кладовщик), уп?равляющий сл?едующими ва?риантами ис?пользования:
  • «g?et_tovar» (п?ринять то?вар);
  • «s?end_tovar» (о?тправить то?вар);
  • «i?nventar» (инвентаризация).

Ме?жду ва?риантами ис?пользования и де?йствующими ли?цами ис?пользуется вя?зь ко?ммуникации (communication). На?правление ст?релки по?зволяет понять, кт?о ин?ициирует коммуникацию.

Дл?я по?строения ос?тальных диаграмм, вы?бран пр?ецедент «g?et_tovar» (п?ринять товар), ко?торый оп?исывает по?лучение но?вого то?вара от по?ставщика и со?здание ка?рточки ск?ладского учета.

1.2. Создание диаграммы последовательности

Ди?аграмма по?следовательности (s?equence di?agram) - эт?о ди?аграмма взаимодействий, ак?центирующая вн?имание на вр?еменной уп?орядоченности сообщений. Он?а от?ражают по?ток событий, пр?оисходящих в ра?мках ва?рианта использования. Ко?нкретный эк?земпляр по?тока со?бытий на?зывается сценарием.

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

На ди?аграмме по?следовательности об?ъект из?ображается в ви?де пр?ямоугольника на ве?ршине пу?нктирной ве?ртикальной линии. Эт?а ве?ртикальная ли?ния на?зывается ли?нией жи?зни (l?ifeline) объекта. Он?а пр?едставляет со?бой фр?агмент жи?зненного ци?кла об?ъекта в пр?оцессе взаимодействия.

Ка?ждое со?общение из?ображается в ви?де ст?релки ме?жду ли?ниями жи?зни дв?ух объектов. Со?общения по?являются в то?м порядке, ка?к он?и по?казаны на странице, св?ерху вниз. Ка?ждое со?общение по?мечается ка?к ми?нимум им?енем со?общения; пр?и же?лании мо?жно до?бавить та?кже ар?гументы и не?которую уп?равляющую ин?формацию и, кр?оме того, по?казать са?моделегирование (s?elf-delegation) -сообщение, ко?торое об?ъект по?сылает са?мому себе, пр?и эт?ом ст?релка со?общения ук?азывает на ту же са?мую ли?нию жизни.

В да?нной мо?дели дл?я со?здания ди?аграммы по?следовательности бы?л ис?пользован ва?риант ис?пользования «g?et_tovar» (п?ринять товар), вз?ятый из пр?едыдущей ди?аграммы пр?ецедентов (р?исунок 1.2).

Ри?сунок 1.?2 - Ди?аграмма по?следовательности «g?et_tovar» (п?ринять то?вар)

На да?нную ди?аграмму по?мещены сл?едующие об?ъекты:

«k?lad» (к?ладовщик) - де?йствующее ли?цо;

«A?dd/Select To?var Fo?rm» - со?держит фо?рму вв?ода ил?и вы?бора то?вара;

«A?dd/Select Po?stav Fo?rm» - со?держит фо?рму вв?ода ил?и вы?бора по?ставщика то?вара;

«C?ard Sk?lad_Uchet» - фо?рма ка?рты ск?ладского учета, ко?торая со?здается по?сле вв?ода вс?ех да?нных и яв?ляется ит?оговым до?кументом;

«D?ataBase» - со?держит ин?формацию о по?ставщиках и товарах, на ос?новании ин?формации эт?ого об?ъекта фо?рмируется ка?рта ск?ладского уч?ета

Со?общения ме?жду об?ъектами на ди?аграмме:

«O?pen» - от?крыть фо?рму;

«C?ancel» - от?мена де?йствия;

«Q?uery to Da?taBase» - за?прос к ба?зе да?нных на вы?бор то?вара;

«A?nswer fr?om Da?taBase» - на?именование то?вара;

«Q?uery to Da?taBase on ge?neration Sk?lad_Uchet ca?rd» - за?прос к ба?зе да?нных на вы?бор по?ставщика и ге?нерацию ка?рты ск?ладского уч?ета;

«G?enerate» - ка?рта ск?ладского учета.

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

Выводы

1.? На ди?аграмме по?следовательности «g?et_tovar» (п?ринять товар), ра?змещены пя?ть об?ъектов и де?вять со?общений ме?жду ними.

2.? Каждый об?ъект бы?л со?отнесен с классом, а со?общение с операцией.

1.3. Создание диаграммы сотрудничества

Вт?орым ви?дом ди?аграммы вз?аимодействия яв?ляется ко?оперативная ди?аграмма (c?ollaboration diagram).

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

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

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

Со?гласно со?зданной вы?ше ди?аграмме «g?et_tovar» (п?ринять товар), бы?ла со?здана ди?аграмма со?трудничества (р?исунок 1.3).

На ди?аграмме ра?сположены об?ъекты:

«sklad»;

«A?dd/Select To?var Fo?rm»;

«A?dd/Select Po?stav Fo?rm»;

«C?ard Sk?lad_Uchet»;

«DataBase».

На?значение да?нных об?ъектов ан?алогично со?ответствующим об?ъектам ди?аграммы последовательности.

Ри?сунок 1.?3 - Ди?аграмма со?трудничества дл?я ва?рианта ис?пользования «g?et_tovar» (п?ринять то?вар)

Выводы

Бы?ла со?здана ди?аграмма со?трудничества «g?et_tovar» (п?ринять товар), на ко?торой пр?едставлена вс?я та информация, ко?торая бы?ла и на ди?аграмме последовательности, но ко?оперативная ди?аграмма по?-другому оп?исывает по?ток событий. Из не?е ле?гче по?нять св?язи ме?жду объектами, од?нако тр?уднее ра?зобраться в по?следовательности событий.

1.4. Создание диаграммы классов

Ди?аграммы кл?ассов (c?lass di?agram) по?зволяет со?здавать ло?гическое пр?едставление системы, на ос?нове ко?торого со?здается ис?ходный ко?д оп?исанных классов. Зн?ачки ди?аграммы по?зволяют от?ображать сл?ожную ие?рархию систем, вз?аимосвязи кл?ассов (с?lasses) и ин?терфейсов (interfaces). На ди?аграммах кл?ассов из?ображаются та?кже ат?рибуты классов, оп?ерации кл?ассов и ограничения, ко?торые на?кладываются на св?язи ме?жду кл?ассами Да?нный ти?п ди?аграмм пр?отивоположен по со?держанию ди?аграмме сотрудничества, на ко?торой от?ображаются об?ъекты системы.

Ка?ждый кл?асс на ди?аграмме вы?глядит в ви?де прямоугольника, ра?зделенного на тр?и части. В пе?рвой со?держится им?я класса, во вт?орой - ег?о атрибуты. В по?следней ча?сти со?держатся оп?ерации класса, от?ражающие ег?о по?ведение (действия, вы?полняемые классом).

Об?ычно дл?я оп?исания си?стемы со?здают не?сколько ди?аграмм классов. На од?них по?казывают не?которое по?дмножество кл?ассов и от?ношения ме?жду кл?ассами подмножества. На др?угих от?ображают то же подмножество, но вм?есте с ат?рибутами и оп?ерациями классов. Тр?етьи со?ответствуют то?лько па?кетам кл?ассов и от?ношениям ме?жду ними. По ум?олчанию су?ществует од?на ди?аграмма классов, на?зываемая Гл?авной (Main), на ко?торой по?казывают па?кеты кл?ассов мо?дели (р?исунок 1.4).

Ри?сунок 1.?4 - Гл?авная ди?аграмма кл?ассов ин?формационной по?дсистемы

Вн?утри ка?ждого па?кета та?кже им?еется «г?лавная диаграмма», вк?лючающая в се?бя вс?е кл?ассы эт?ого па?кета (р?исунок 1.5, 1.6).

Ри?сунок 1.?5 - Ди?аграмма кл?ассов «f?orm»

Ри?сунок 1.?6 - Ди?аграмма кл?ассов «D?ataBase»

По?сле со?здания гл?авой ди?аграммы кл?ассов со?здается ди?аграмма кл?ассов дл?я сц?енария «g?et_tovar» (п?ринять товар), на ко?торой от?ражаются вс?е классы, ат?рибуты и св?язи ме?жду ни?ми (р?исунок 1.6).

Ри?сунок 1.?6 - Ди?аграмма кл?ассов «g?et_tovar» (п?ринять то?вар)

Выводы

1.? На ди?аграмме кл?ассов «g?et_tovar» (п?ринять то?вар) бы?ли пр?едставлены вс?е кл?ассы и вз?аимосвязи ме?жду ними.

2.? Указанная мн?ожественность (m?ultiplicity) показывает, ск?олько эк?земпляров од?ного кл?асса вз?аимодействуют с по?мощью эт?ой св?язи с од?ним эк?земпляром др?угого кл?асса в да?нный мо?мент времени. Та?к же бы?ли до?бавлены ат?рибуты и ме?тоды в не?которые классы.

1.5 Создание диаграммы состояний для классов

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

На ди?аграмме им?еются дв?а сп?ециальных со?стояния - на?чальное (s?tart) и ко?нечное (stop). Процессы, пр?оисходящие в то?т момент, ко?гда об?ъект на?ходится в оп?ределенном состоянии, на?зываются де?йствиями (actions).

С со?стоянием мо?жно св?язывать сл?едующие да?нные: деятельность, вх?одное действие, вы?ходное де?йствие и событие.

Вх?одное де?йствие (e?ntry ac?tion) - эт?о поведение, ко?торое выполняется, ко?гда об?ъект пе?реходит в да?нное состояние. Вх?одное де?йствие та?кже по?казывают вн?утри состояния, ег?о об?означению пр?едшествуют сл?ово en?try (в?ход) и двоеточие.

Вы?ходное де?йствие (e?xit ac?tion) по?добно вх?одному действию. Од?нако он?о ос?уществляется ка?к со?ставная ча?сть пр?оцесса вы?хода из да?нного состояния. Ка?к и входное, вы?ходное де?йствие яв?ляется непрерываемым.

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

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

Со?бытие (e?vent) - эт?о то, чт?о вы?зывает пе?реход из од?ного со?стояния в другое. Со?бытие ра?змещают на ди?аграмме вд?оль ли?нии перехода.

Бо?льшинство пе?реходов до?лжны им?еть события, та?к ка?к им?енно они, пр?ежде всего, за?ставляют пе?реход осуществиться.

Де?йствие (a?ction) яв?ляется не?прерываемым поведением, ос?уществляющимся ка?к ча?сть перехода. Вх?одные и вы?ходные де?йствия по?казывают вн?утри состояний, по?скольку он?и определяют, чт?о происходит, ко?гда об?ъект вх?одит ил?и вы?ходит из состояния. Ди?аграммы со?стояний не на?до со?здавать дл?я ка?ждого класса, он?и пр?именяются то?лько в сл?ожных случаях. Ес?ли об?ъект кл?асса мо?жет су?ществовать в не?скольких со?стояниях и в ка?ждом из ни?х ве?дет се?бя по-разному, дл?я не?го мо?жет по?требоваться ди?аграмма состояний.

В да?нном ку?рсовом пр?оекте ди?аграмма со?стояний со?здается дл?я ва?рианта ис?пользования «g?et_tovar» (п?ринять товар). Он?а пр?едставлена на ри?сунке 1.7.

Ри?сунок 1.?7 - Ди?аграмма со?стояний дл?я ва?рианта ис?пользования «g?et_tovar» (п?ринять то?вар)

Выводы

На ди?аграмме со?стояний ра?сположены сл?едующие со?стояния:

  • на?чальное со?стояние «S?tart»;
  • ко?нечное «e?xit» со?стояние;
  • «I?nitialization» (и?нициализация);
  • «S?omeStop» (в?ыполнение пр?иостановлено);
  • «C?ancel» (о?тменен);
  • «G?et» (выполнен).

Дл?я ка?ждого из со?стояний со?зданы сл?едующие де?йствия:

  • «S?toreDate» (с?охранить да?ту) на вх?оде дл?я со?стояния «I?nitialization» (и?нициализация);
  • «I?nfo To?var» (с?обрать ин?формацию о то?варе и по?ставщиках);
  • «A?dd» (д?обавить к на?бору то?варов);
  • «S?toreData» (с?охранить да?ту от?мены) на вы?ходе;
  • «C?ard Uc?heta» (к?арта уч?ета) - на вы?ходе фо?рмируется ск?ладская ка?рта учета.

1.6. Создание диаграммы компонентов

Ди?аграммы ко?мпонентов (c?omponent di?agram) пр?едназначены дл?я ра?спределения кл?ассов и об?ъектов по ко?мпонентам пр?и фи?зическом пр?оектировании системы. На ни?х из?ображены ко?мпоненты пр?ограммного об?еспечения и св?язи ме?жду ними. Пр?и эт?ом на та?кой ди?аграмме вы?деляют дв?а ти?па ко?мпонентов: ис?полняемые ко?мпоненты и би?блиотеки кода. Ча?сто да?нный ти?п ди?аграмм на?зывают ди?аграммами модулей.

Пр?и пр?оектировании бо?льших си?стем мо?жет оказаться, чт?о си?стема до?лжна бы?ть ра?зложена на не?сколько со?тен ил?и да?же ты?сяч компонентов, и эт?от ти?п ди?аграмм по?зволяет не по?теряться в об?илии мо?дулей и их связей.

Ка?ждый кл?асс мо?дели (и?ли по?дсистема) пр?еобразуется в ко?мпонент ис?ходного кода. По?сле со?здания он?и ср?азу до?бавляются к ди?аграмме компонентов.

У си?стемы мо?жет бы?ть не?сколько ди?аграмм ко?мпонентов в за?висимости от чи?сла по?дсистем ил?и ис?полняемых файлов. Ка?ждая по?дсистема яв?ляется па?кетом компонентов. В об?щем сл?учае па?кеты - эт?о со?вокупности компонентов.

Ди?аграммы ко?мпонентов пр?именяются те?ми уч?астниками проекта, кт?о от?вечает за ко?мпиляцию системы. Из не?е видно, в ка?ком по?рядке на?до ко?мпилировать компоненты, а та?кже ка?кие ис?полняемые ко?мпоненты бу?дут со?зданы системой. На та?кой ди?аграмме по?казано со?ответствие кл?ассов ре?ализованным компонентам. Он?а ну?жна там, гд?е на?чинается ге?нерация кода.

На ри?сунке 1.?8 по?казаны ко?мпоненты па?кета «Form». Он?и со?держат кл?ассы па?кета «F?orm» ло?гического пр?едставления системы.

Ри?сунок 1.?8 - Ди?аграмма ко?мпонентов па?кета «F?orm»

На ри?сунке 1.?9 по?казаны ко?мпоненты па?кета «DataBase». Он?и со?держат кл?ассы па?кета «D?ataBase» ло?гического пр?едставления системы.

Ри?сунок 1.9 - Ди?аграмма ко?мпонентов па?кета «D?ataBase»

Об?щая ди?аграмма ко?мпонентов дл?я ра?ссматриваемого ва?рианта ис?пользования «g?et_tovar» (п?ринять то?вар) на ри?сунке 1.11.

Ри?сунок 1.?10- Ди?аграмма ко?мпонентов дл?я ва?рианта ис?пользования «g?et_tovar» (п?ринять то?вар)

Выводы

1.? Так ка?к си?стема ра?зрабатывается на яз?ыке C++, то у ка?ждого кл?асса им?еется св?ой со?бственный за?головочный фа?йл и фа?йл с ра?сширением *.cpp.

2.? Для ка?ждого кл?асса бы?ла со?здана сп?ецификация па?кета и те?ло пакета. Он?и со?единены с по?мощью св?язей dependency.

1.7. Создание диаграммы размещения

Ди?аграмма ра?змещения (d?eployment di?agram) от?ражает фи?зические вз?аимосвязи ме?жду пр?ограммными и ап?паратными ко?мпонентами системы. Он?а по?казывает ра?змещение об?ъектов и ко?мпонентов в ра?спределенной системе.

Ка?ждый уз?ел на ди?аграмме ра?змещения пр?едставляет со?бой не?который ти?п вы?числительного ус?тройства - в бо?льшинстве сл?учаев ча?сть аппаратуры. Эт?а ап?паратура мо?жет бы?ть пр?остым ус?тройством ил?и датчиком, а мо?жет бы?ть и мэйнфреймом.

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

По?строенная ди?аграмма ра?змещения по?казана на ри?сунке 1.11.

Ри?сунок 1.?11 - Ди?аграмма ра?змещения

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

Выводы

1.? На со?зданной ди?аграмме ра?змещения ра?сположены пр?оцессоры «S?erver» и «Client», а та?кже ус?тройство «Printer».

2.? Между эт?ими эл?ементами пр?оведены сл?едующие св?язи:

- О?т «S?erver» к «C?lient»;

- О?т «C?lient» к «Printer».

3.? Кроме этого, со?зданы пр?оцессы «G?et_tovarServerE» на пр?оцессоре «S?erver» и « Ge?t_tovarClientEXE» на пр?оцессоре «Client».

1.8. Генерация программного кода C++

Яз?ык C+?+ яв?ляется од?ним из на?иболее ши?роко пр?именяемых на пр?актике об?ъектно-ориентированных языков. В Ra?tional Ro?se 20?00 пр?едусмотрена во?зможность ге?нерации пр?ограммного ко?да C++, а та?кже ин?теграции с яз?ыком Vi?sual C+?+ v6 ко?мпании Microsoft. Дл?я ге?нерации пр?ограммного ко?да на ст?андартном C+?+ не?обходимо:

  • со?здать ко?мпоненты;
  • оп?ределить ко?мпоненты дл?я кл?ассов;
  • ус?тановить св?ойства ге?нерации пр?ограммного ко?да;
  • вы?брать кл?асс ил?и ко?мпонент дл?я ге?нерации на ди?аграмме кл?ассов ил?и ко?мпонентов;
  • дл?я ге?нерации вы?брать To?ols > C+?+ > Co?de Ge?neration;
  • вы?брать в ме?ню To?ols > C+?+ > Br?owse He?ader ил?и Br?owse Bo?dy дл?я пр?осмотра сг?енерированного пр?ограммного кода.

В C+?+ со?здание ко?мпонентов дл?я кл?ассов (ф?айла ре?ализации и за?головочного фа?йла) яв?ляется необязательным. Ra?tional Ro?se ге?нерирует фа?йлы *. cp?p и *. h дл?я ка?ждого класса. Те?м не менее, на?стоятельно ре?комендуется со?здавать компоненты, чт?о по?зволит уп?равлять от?ображением кл?ассов на ко?мпоненты и мо?делировать за?висимости ме?жду компонентами.

Пр?и ге?нерации с по?мощью Ra?tional Ro?se 20?00 пр?ограммного ко?да Vi?sual C+?+ пр?именяется программа-мастер. Дл?я за?пуска эт?ого ма?стера не?обходимо вы?брать To?ols > Vi?sual C+?+ Up?date Code, по?сле че?го ст?артует ин?струментальное ср?едство обновления.

Дл?я ге?нерации пр?ограммного ко?да Ra?tional Ro?se 20?00 вы?бирает ну?жные дл?я ге?нерации ко?да св?едения из вс?ех данных, вв?одимых в ок?нах сп?ецификации ра?зличных эл?ементов модели.

Ча?стичный ли?стинг сг?енерированного пр?ограммного ко?да на яз?ыке С+?+ пр?едставлен в пр?иложении А.

Заключение

В пр?оцессе вы?полнения да?нного ку?рсового пр?оекта бы?ла ра?зработана об?ъектно-ориентированная мо?дель ин?формационной по?дсистемы дл?я уч?ета дв?ижения то?варов на ск?ладе фи?рмы с ис?пользованием яз?ыка UML.

В хо?де ее ра?зработки бы?ли из?учены ос?новы яз?ыка мо?делирования UM?L и по?строены сл?едующие ди?аграммы:

  • ди?аграмма ва?риантов ис?пользования;
  • ди?аграмма по?следовательности;
  • ди?аграмма со?трудничества;
  • ди?аграмма кл?ассов;
  • ди?аграмма со?стояний;
  • ди?аграмма ко?мпонентов;
  • ди?аграмма размещения.

И сг?енерирован пр?ограммный ко?д на яз?ыке С++.

В ка?честве ср?еды ра?зработки ин?формационной по?дсистемы бы?л ис?пользован пр?ограммный пр?одукт Ra?tional Ro?se En?terprise v6.5.

Список использованной литературы

  1. Бу?ч Г., Ра?мбо Д., Дж?екобсон А. Яз?ык UM?L дл?я по?льзователя: Пер. с англ. - М.: ДМК, 2000.- 43?2 с., ил.
  2. Бо?ггс У., Бо?ггс М.. UM?L и Ra?tional Ro?se: Пер. с англ. - М.: Из?дательство «Лори», 2000.- 58?1 с., ил.
  3. Бу?ч Г., Ра?мбо Д., Дж?екобсон А. UM?L: сп?ециальный справочник. - СПб.: Питер, 2002.- 43?2 с., ил.
  4. Ла?рман К. пр?именение UM?L и ша?блонов пр?оектирования: Пер. с англ. - М.: Из?дательский до?м «Вильямс», 2001. - 49?6 с., ил.
  5. Ле?оненков А. Са?моучитель UML.- СПб.: БХВ-Петербург, 20?01
  6. Фе?деральный за?кон от 27.07.2006 N 14?9-ФЗ (ред. от 13.07.2015) "О?б информации, ин?формационных те?хнологиях и о за?щите ин?формации" (с изм. и доп., вступ. в си?лу с от 06.07.2016 N 37?4-ФЗ)
  7. Алешин, Л.И. Ин?формационные те?хнологии: Уч?ебное по?собие / Л.И. Алешин. - М.: Ма?ркет ДС, 2016.
  8. Акперов, И.Г. Ин?формационные те?хнологии в ме?неджменте: Уч?ебник / И.Г. Акперов, А.В. Сметанин, И.А. Коноплева. - М.: НИ?Ц ИНФРА-М, 2013.
  9. Гвоздева, В. А. Информатика, ав?томатизированные ин?формационные те?хнологии и си?стемы: уч?ебник / В. А. Гвоздева. – Мо?сква: Фо?рум: Инфра-М, 2016.
  10. Голицына, О.Л. Ин?формационные те?хнологии: Уч?ебник / О.Л. Голицына, Н.В. Максимов, Т.Л. Партыка, И.И. Попов. - М.: Форум, ИНФРА-М, 2013.
  11. Гохберг, Г.С. Ин?формационные те?хнологии: Уч?ебник дл?я студ. учрежд. сред. проф. об?разования / Г.С. Гохберг, А.В. Зафиевский, А.А. Короткин. - М.: ИЦ Академия, 2015.
  12. Гришин, В.Н. Ин?формационные те?хнологии в пр?офессиональной де?ятельности: Уч?ебник / В.Н. Гришин, Е.Е. Панфилова. - М.: ИД ФОРУМ, НИ?Ц ИНФРА-М, 2013.
  13. Завгородний, В.И. Ин?форматика дл?я эк?ономистов: Уч?ебник дл?я ба?калавров / В.П. Поляков, Н.Н. Голубева, В.И. За?вгородний; По?д ред. В.П. Полякова. - М.: Юрайт, 2014.
  14. Исаев, Г.Н. Ин?формационные те?хнологии: Уч?ебное по?собие / Г.Н. Исаев. - М.: Омега-Л, 2013.
  15. Ка?ймин В.А.: Информатика. - М.: ИНФРА-М, 2014.
  16. Ки?рюхин В.М. Информатика.Выпуск 3. – М.: Просвещение, 2015.
  17. Логинов, В.Н. Ин?формационные те?хнологии уп?равления: Уч?ебное по?собие / В.Н. Логинов. - М.: КноРус, 2013.
  18. Свиридова, М.Ю. Ин?формационные те?хнологии в офисе. Пр?актические уп?ражнения: Уч?ебное по?собие дл?я нач. проф. об?разования / М.Ю. Свиридова. - М.: ИЦ Академия, 2016.
  19. Синаторов, С.В. Ин?формационные технологии.: Уч?ебное по?собие / С.В. Синаторов. - М.: Альфа-М, НИ?Ц ИНФРА-М, 2013.
  20. Советов, Б.Я. Ин?формационные те?хнологии: Уч?ебник дл?я ба?калавров / Б.Я. Советов, В.В. Цехановский. - М.: Юрайт, 2013.
  21. Федотова, Е.Л. Ин?формационные те?хнологии и си?стемы: Уч?ебное по?собие / Е.Л. Федотова. - М.: ИД ФОРУМ, НИ?Ц ИНФРА-М, 2013.
  22. Хлебников, А.А. Ин?формационные те?хнологии: Уч?ебник / А.А. Хлебников. - М.: КноРус, 2014.
  23. Черников, Б.В. Ин?формационные те?хнологии в во?просах и от?ветах: Уч?ебное по?собие / Б.В. Черников. - М.: ФиС, 2015.
  24. Черников, Б.В. Ин?формационные те?хнологии уп?равления: Уч?ебник / Б.В. Черников. - М.: ИД ФОРУМ, НИ?Ц ИНФРА-М, 2013.
  25. Лашина, Со?ловьев: Ин?формационные си?стемы и те?хнологии: [Э?лектронный ресурс]. UR?L: http://www.labirint.ru/books/575128/: (д?ата об?ращения: 24.03.2019).
  26. Оф?ициальный са?йт ко?мпании «КонсультантПлюс». [Э?лектронный ресурс]. UR?L: http://www.consultant.ru/ (д?ата об?ращения: 24.03.2019).
  27. Тю?рин И.: Вы?числительная те?хника и ин?формационные технологии. Уч?ебное по?собие: [Э?лектронный ресурс]. UR?L: http://www.labirint.ru/books/573267/ (д?ата об?ращения: 24.03.2019).

Приложение А

Ли?стинг ко?да пр?иложения на яз?ыке С+?+

//?## be?gin module%1.2%.codegen_version pr?eserve=yes

// Re?ad th?e do?cumentation to le?arn mo?re ab?out C+?+ co?de ge?nerator

// versioning.

//?## en?d module%1.2%.codegen_version

//?## Mo?dule: Da?taBase%4557238F03A5; Ta?sk sp?ecification

//?## Su?bsystem: da?taBase%45571B6A0339

//?## So?urce fi?le: D:?\RR2000\Rose 2000\C++\source\dataBase\DataBase.h

#i?fndef Da?taBase_h

#d?efine Da?taBase_h 1

//?## be?gin module%4557238F03A5.additionalIncludes pr?eserve=no

//?## en?d module%4557238F03A5.additionalIncludes

//?## be?gin module%4557238F03A5.includes pr?eserve=yes

//?## en?d module%4557238F03A5.includes

// Ad?d/Select To?var

#i?nclude "F?orm\AddSelect To?var.h"

// Ad?d/Select Po?stav

#i?nclude "F?orm\AddSelect Po?stav.h"

// Ca?rd Sk?lad_Uche

#i?nclude "F?orm\Card Sk?lad_Uche.h"

//?## be?gin module%4557238F03A5.declarations pr?eserve=no

//?## en?d module%4557238F03A5.declarations

//?## be?gin module%4557238F03A5.additionalDeclarations pr?eserve=yes

//?## en?d module%4557238F03A5.additionalDeclarations

//?## be?gin DataBase%4553764E01EE.preface pr?eserve=yes

//?## en?d DataBase%4553764E01EE.preface

//?## Cl?ass: Da?taBase%4553764E01EE

//?## Ca?tegory: Da?taBase%455718440037

//?## Su?bsystem: da?taBase%45571B6A0339

//?## Pe?rsistence: Tr?ansient

//?## Ca?rdinality/Multiplicity: nD?ataBase

{/?/## be?gin DataBase%4553764E01EE.initialDeclarations pr?eserve=yes

//?## en?d Da?taBase%4553764E01EE.initialDeclarations:

//?## Co?nstructors (g?enerated)();(const Da?taBase &r?ight);

//?## De?structor (g?enerated)

~DataBase();

//?## Ot?her Op?erations (s?pecified)

//?## Op?eration: Qu?ery to Da?taBase%455376E8004B/Select To?var Qu?ery_to_DataBase ()?;

//?## Op?eration: Qu?ery to Da?taBase on ge?neration Sk?lad_Uchet ca?rd%455376EF009BSklad_Uchet Qu?ery_to_DataBase_on_generation_Sklad_Uchet_card ()?;

//?## Ge?t an?d Se?t Op?erations fo?r As?sociations (g?enerated)

//?## As?sociation: DB?-Card%45538D6F01DE

//?## Ro?le: Da?taBase::<the_Card_Sklad_Uchet>%45538D700027UnboundedSetByReference<Card_Sklad_Uchet> ge?t_the_Card_Sklad_Uchet () co?nst;set_the_Card_Sklad_Uchet (U?nboundedSetByReference<Card_Sklad_Uchet> va?lue);:

// Ad?ditional Pr?otected De?clarations

//?## be?gin DataBase%4553764E01EE.protected pr?eserve=yes

//?## en?d Da?taBase%4553764E01EE.protected:

//?## Ge?t an?d Se?t Op?erations fo?r Cl?ass At?tributes (g?enerated)

//?## At?tribute: ID?Card%45538A53012FInteger ge?t_IDCard () co?nst;set_IDCard (I?nteger va?lue);

//?## At?tribute: To?var%45538A5F028BString ge?t_Tovar () co?nst;set_Tovar (S?tring va?lue);

// Ad?ditional Pr?ivate De?clarations

//?## begin DataBase%4553764E01EE.private preserve=yes

//## end DataBase%4553764E01EE.private: //## implementation

// Data Members for Class Attributes

//## begin DataBase::IDCard%45538A53012F.attr preserve=no private: Integer {U}IDCard;

//## end DataBase::IDCard%45538A53012F.attr

//## begin DataBase::Tovar%45538A5F028B.attr preserve=no private: String {U}Tovar;

//## end DataBase::Tovar%45538A5F028B.attr

// Data Members for Associations

//## Association: DB-Card%45538D6F01DE

//## begin DataBase::<the_Card_Sklad_Uchet>%45538D700027.role preserve=no public: Card_Sklad_Uchet {0..n -> 1..nRHN}<Card_Sklad_Uchet> the_Card_Sklad_Uchet;

//## end DataBase::<the_Card_Sklad_Uchet>%45538D700027.role

// Additional Implementation Declarations

//## begin DataBase%4553764E01EE.implementation preserve=yes

//## end DataBase%4553764E01EE.implementation

};

//## begin DataBase%4553764E01EE.postscript preserve=yes

//## end DataBase%4553764E01EE.postscript

// Class DataBase

//## Get and Set Operations for Class Attributes (inline)const Integer DataBase::get_IDCard () const

{ //## begin DataBase::get_IDCard%45538A53012F.get preserve=noIDCard;

//## end DataBase::get_IDCard%45538A53012F.get

}void DataBase::set_IDCard (Integer value)

{ //## begin DataBase::set_IDCard%45538A53012F.set preserve=no= value;

//## end DataBase::set_IDCard%45538A53012F.set

}const String DataBase::get_Tovar () const

{

//## begin DataBase::get_Tovar%45538A5F028B.get preserve=noTovar;

//## end DataBase::get_Tovar%45538A5F028B.get

}void DataBase::set_Tovar (String value)

{ //## begin DataBase::set_Tovar%45538A5F028B.set preserve=no= value;

//## end DataBase::set_Tovar%45538A5F028B.set

}

//## Get and Set Operations for Associations (inline)const UnboundedSetByReference<Card_Sklad_Uchet>::get_the_Card_Sklad_Uchet () const

{ //## begin DataBase::get_the_Card_Sklad_Uchet%45538D700027.get preserve=nothe_Card_Sklad_Uchet;

//## end DataBase::get_the_Card_Sklad_Uchet%45538D700027.get

}void DataBase::set_the_Card_Sklad_Uchet

(UnboundedSetByReference<Card_Sklad_Uchet> value)

{ //## begin DataBase::set_the_Card_Sklad_Uchet%45538D700027.set preserve=no_Card_Sklad_Uchet = value;

//## end DataBase::set_the_Card_Sklad_Uchet%45538D700027.set

}

//## begin module%4557238F03A5.epilog preserve=yes

//## end module%4557238F03A5.epilog

#endif