Технология программирования
Язык разработки, среда реализации, инструменты разработки. Особенности виртуальной среды реализации программ и их учет в разработке программного продукта. Системные макросы и их применение в текстах разработки. Средства визуального программирования.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 26.10.2013 |
Размер файла | 1,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Настройка
1. Найдите в браузере диаграмму Классов "Ввод нового заказа",
2. Дважды щелкнув на диаграмме, откройте ее.
3. Проверьте, имеется ли в панели инструментов диаграммы кнопка Unidirectional Association (Однонаправленная ассоциация). Если ее нет, продолжите настройку, выполнив шаги 4 и 5. Если есть, приступайте к выполнению самого упражнения.
4. Щелкните правой кнопкой мыши на панели инструментов диаграммы и в открывшемся меню выберите пункт Customize (Настроить),
5. Добавьте на панель кнопку Creates A Unidirectional Association (Создать однонаправленную ассоциацию).
Добавление ассоциаций
1. Нажмите кнопку Unidirectional Association панели инструментов.
2. Проведите ассоциацию от класса выбор_заказа к классу заказ_деталей.
3. Повторите шаги 1 и 2, создав ассоциации:
От класса заказ_деталей к классу упр_заказами
От класса упр_заказами к классу Заказ
От класса упр_заказами к классу упр_транзакциями
От класса упр_транзакциями к классу Заказ
От класса упр_транзакциями к классу Позиц_заказа
От класса Заказ к классу Позиц_заказа
4. Щелкните правой кнопкой мыши на однонаправленной ассоциации между классами выбор_заказа и заказ_деталей класса выбор_заказа.
5. В открывшемся меню выберите пункт Multiplicity > Zero or One (Множественность > - Нуль или один),
6. Щелкните правой кнопкой мыши на другом конце однонаправленной ассоциации.
7. В открывшемся меню выберите пункт Multiplicity > Zero or One (Множественность > Нуль или один),
8. Повторите шаги 4-7, добавив на диаграмму значения множественности для остальных ассоциаций, как показано на рис.10
Рис.10 Ассоциации сценария "Ввести новый заказ"
Лабораторная работа 9. Исключение кириллизованного текста в информации классов
Разработанные ранее модели, предназначенные для описания предметной области используют кириллизованную символику, недопустимую для большинства языков программирования. Выполните замену русского текста на латинский шрифт. Для этой цели сохраните предыдущую модель под другим именем и далее работайте с новым файлом (что бы при необходимости можно было бы вернуться к бизнес - процессам, описанным русским шрифтом).
Этапы выполнения упражнения.
Этап 1. Используя меню (Файл-> Сохранить как) сохраните данную модель под другим именем (например Заказ1) в той же папке, что и исходная модель.
Работайте далее с копией модели (то есть Заказ1).
Этап 2. Переименуйте классы и их спецификации таким образом, чтобы использовался только латинский шрифт. Замените имя класса
Заказ_деталей на OrderDetail
Выбор_заказа на OrderОptions
Заказ на Order
Упр_заказами на OrderMgr
Позиц_заказа на OrderItem
Упр_транзакциями на TransactionMgr
Измените имена операций таким образом, чтобы рис.10 преобразовался в рис.11. Для этого, измените операцию класса OrderОptions
Открыть () на Open ()
Класса OrderDetail
Открыть () на Open ()
Сохранить заказ () на Save ()
Класса Order
Ввести номер заказа, заказчика и число заказываемых предметов () на SetInfo ()
Сохранить_заказ () на Save ()
Класса OrderMgr
Сохранить заказ () на SaveOrder ()
Класса TransactionMgr
Сохранить заказ () на SaveOrder ()
Сохранить информацию о заказе () на Commit ()
Создать_заказ () на SubmitInfo ()
Класса OrderItem
Создать () на Create ()
Взять_информацию () на GetInfo ()
Дать_информацию на SetInfo ()
Переименуйте имена пакетов
Границы на Boundaries
Сущности на Entity
Контроль на Control
Добавление стереотипов к классам
1. Щелкните правой кнопкой мыши на классе OrderOptions диаграммы.
2. В открывшемся меню выберите пункт Open Specification (Открыть спецификацию).
3. В поле стереотипа выберите из выпадающего списка слово Boundary (если его нет, то введите).
4. Нажмите на кнопку ОК.
5. Повторив шаги 1-4, свяжите классы OrderDetail со стереотипом Boundary, OrderMgr и TransactionMgr со стереотипом Control, а класс Order и OderItem - со стереотипом Entity.
Теперь диаграмма Классов должна иметь вид, показанный на рис.11.
Рис.11 Основная диаграмма классов
Замечание. На диаграмме рис.11 возможно визуальное представление классов не в виде иконок, а в виде дополнительной строки текста с именем стереотипа. За этот вид отвечает метка установленная либо на icon либо на label (Class> Open Specefication> Options> Label)
Лабораторная работа 10. Построение диаграммы компонентов
В настоящем разделе начинается построение физической модели системы (то есть программной системы).
Этапы выполнения упражнения. Так как эта модель связана с конкретным языком программирования, то в настройках это необходимо отметить. Выполнить Tools>Options>Notations>Default Language и из выпадающего списка языков программирования выбрать Delphi.
Создание пакетов компонентов
1. Щелкните правой кнопкой мыши на представлении компонентов в браузере.
2. В открывшемся меню выберите пункт New > Package (Создать > Пакет}.
3. Назовите пакет Entities (Сущности).
4. Повторив шаги с первого по третий, создайте пакеты Boundaries (Границы) и Control (Управление).
Добавление пакетов на Главную диаграмму Компонентов
1. Откройте Главную диаграмму Компонентов, дважды щелкнув на ней мышью,
2. Перетащите пакеты Entities, Boundary и Control из браузера на Главную диаграмму.
Отображение зависимостей между пакетами
1. Нажмите кнопку Dependency (Зависимость) панели инструментов.
2. Щелкните мышью на пакете Boundary Главной диаграммы Компонентов.
3. Проведите линию зависимости к пакету Control.
4. Повторив шаги 1 - 3, проведите зависимость от пакета Control к пакету Entities.
В результате диаграмма примет вид рис.12
Рис.12 Зависимости между пакетами
Добавление компонентов к пакетам и отображение зависимостей
1. Дважды щелкнув мышью на пакете Entities Главной диаграммы Компонентов, откройте Главную диаграмму Компонентов этого пакета.
2. Нажмите кнопку Package Specification (Спецификация пакета) панели инструментов.
3. Поместите спецификацию пакета на диаграмму.
4. Введите имя спецификации пакета - OrderItem_.
5. Повторив шаги 2-4, добавьте спецификацию пакета Order_.
6. Нажмите кнопку Dependency (Зависимость) панели инструментов.
7. Щелкните мышью на спецификации пакета OrderItem_.
8. Проведите линию зависимости к спецификации пакета OrderItem_.
9. С помощью описанного метода создайте следующие компоненты и зависимости:
Для пакета Boundaries:
Спецификацию пакета Orderоptions_
Спецификацию пакета OrderDetail_
Зависимости в пакете Boundaries:
От спецификации пакета Orderоptions_
к спецификации пакета OrderDetai_l
Для пакета Control:
Спецификацию пакета OrderMgr_
Спецификацию пакета TransactionMgr_
Зависимости в пакете Control:
От спецификации пакета OrderMgr_
к спецификации пакета TransactionMg_
Создание диаграммы Компонентов системы
1. Щелкните правой кнопкой мыши на представлении Компонентов в браузере.
2. В открывшемся меню выберите пункт New > Component Diagram (Создать > Диаграмма Компонентов).
3. Назовите новую диаграмму System.
4. Дважды щелкните на этой диаграмме мышью.
Размещение компонентов на диаграмме Компонентов системы
1. Разверните в браузере пакет компонентов Entities, чтобы открыть его.
2. Щелкните мышью на спецификации пакета Order_ в пакете компонентов Entities.
3. Перетащите эту спецификацию на диаграмму.
4. Повторив шаги 2 и 3, поместите на диаграмму спецификацию пакета OrderItem_.
5. С помощью этого метода поместите на диаграмму следующие компоненты:
Из пакета компонентов Boundaries:
Спецификацию пакета Orderоptions_
Спецификацию пакета OrderDetail_
Из пакета компонентов Control:
Спецификацию пакета OrderMgr_
Спецификацию пакета TransactionMgr_
6. Нажмите кнопку Task Specification (Спецификация задачи) панели инструментов.
7. Поместите на диаграмму спецификацию задачи и назовите ее OrderClientExe.
8. Повторите шаги 6 и 7 для спецификации задачи OrderServerExe.
Добавление оставшихся зависимостей на диаграмму Компонентов системы
Уже существующие зависимости будут автоматически показаны на диаграмме Компонентов системы после добавления туда соответствующих компонентов. Теперь нужно добавить остальные зависимости.
1. Нажмите кнопку Dependency (Зависимость) панели инструментов.
2. Щелкните мышью на спецификации пакета OrderDetail_
3. Проведите линию зависимости к спецификации пакета OrderDetail_
4. Повторив шаги 1 - 3, создайте следующие зависимости:
От спецификации пакета OrderMgr_
к спецификации пакета Order_
От спецификации пакета TransactionMgr_
к спецификации пакета OrderItem_
От спецификации пакета TransactionMgr_
к спецификации пакета Order_
От спецификации задачи OrderClientExe к спецификации пакета Orderоptions_
От спецификации задачи OrderServerExe к спецификации пакета OrderMg_r
Соотнесение классов с компонентами
1. В Логическом представлении браузера найдите класс Order пакета Entities.
2. Перетащите этот класс на спецификацию пакета компонента Order_ в представлении Компонентов браузера, В результате класс Order будет соотнесен со спецификацией пакета компонента Order_.
3. Повторив шаги 1 - 2, соотнесите классы со следующими компонентами:
Класс OrderItem со спецификацией пакета OrderItem_
Класс Orderоptions со спецификацией пакета Orderоptions_
Класс OrderDetail со спецификацией пакета OrderDetai_l
Класс OrderMgr со спецификацией пакета OrderMgr_
Класс TransactionMgr со спецификацией пакета TransactionMgr_
В результате в браузере после имени класса, в скобках появятся имена компонентов, с которыми этот класс связан (рис.13)
Рис.13 Представление компонентов и классов в браузере
Лабораторная работа 11. Кодогенерация проекта в Delphi
Теперь вся информация подготовлена к тому, чтобы запрограммировать классы с их методами и операциями.
Для выполнения кодогенерации в среде Delphi необходимо выполнить следующую последовательность действий:
протестировать модель на логические непротиворечия;
настроить (или проверить настройки) среду на законы кодогенерации (соответствие элемента модели Rose элементу кода Delphi);
создать имя проекта Delphi и выполнить кодогенерацию.
Этапы выполнения упражнения.
1) Протестируйте модель Tools->Ceck Model. Просмотрите log файл на наличие ошибок. Если файл не виден - выполните команду file->Save Log As и введите имя файла (по умолчанию error. log). Затем его просмотрите и, при необходимости, исправьте ошибки. К наиболее распространенным ошибкам относятся такие, как неотображение сообщений на операции или несоотнесение объектов с классами на диаграммах взаимодействия. С помощью пункта меню Check Model можно выявить большую часть неточностей и ошибок в модели.
2) Пункт меню Access Violations позволяет обнаружить нарушения правил доступа, возникающие тогда, когда существует связь между двумя классами разных пакетов. При этом связи между самими пакетами нет. Например, если существует связь между классами Order пакета Entities и OrderManager пакета Control, то обязательно должна существовать и связь между пакетами Entities и Control. Если последняя связь не установлена, Rose выявит нарушение правил доступа. Чтобы обнаружить нарушение правил доступа:
Выберите в меню Report > Show Access Violations.
Проанализируйте все нарушения правил доступа.
3) Выполните Tools>Options>Notation>Default Language и из выпадающего списка выберите язык программирования Delphi.
4) Проверьте правильность установок кодогенерации по умолчанию (default). Для этого выполните Tools->Options->Delphi и последовательно переберите из выпадающего списка поля Type все элементы. Сравните установки в поле Model Propities с данными (default) из таблицы Приложения A. В случае несоответствия - исправьте.
5) Выполните Tools> Ensemble Tools>Rose Delphi Link (рис.14)
Рис.14. Меню для выбора процесса кодогенерации
В результате появится соответствующая экранная форма. Выполните на этой форме File>New Proect. Появится форма с браузером. Введите имя файла и место на диске, куда будет сохранено имя сгенерированного проекта в Delphi. Например, NewProect. dpr и нажмите Открыть. В результате форма примет вид (рис.15)
Рис.15. Представление результатов кодогенерации в окне Rose Delphi Link
5. Через проводник Windows найдите папку проекта Delphi. С помощью программы Блокнот просмотрите содержимое всех файлов. В приложении B к руководству приведено содержимое всех файлов проекта.
Лабораторная работа 12. Анализ Delphi проекта, добавление визуальных объектов, реинжениринг в Rose
1) Запустите на выполнение программу Delphi и загрузите сгенерированный проект (Proect1. dpr). Проверьте, что проект содержит все модули и присмотрите их содержимое через редактор Delphi.
2) Создайте в проекте Delphi новую форму с Name Form1. Поместите на форму компонент MainMenu (главное меню)
3) С помощью Menu Disigner введите две позиции горизонтального меню с названиями (полями Caption) Oder и OderItem.
4) Для Oder введите две строки вертикального меню с Caption Create и SubmitInfo. Для OderItem введите одну строку вертикального меню с названием GetInfo.
5) Сохраните проект в Delphi.
Реинжениринг Delphi проекта в модель Rose
1) Вернитесь в проект Rose и откройте окно проектов Rose Delphi Link. Проверьте, что открыт именно тот проект, для которого выполнялась кодогенерация.
2) Курсором мыши нажмите клавишу Update ALL со стрелкой влево (обновление модели Rose на основе изменений проекта Delphi). В результате в моделе Rose должны произойти определенные изменения (рис.16):
Рис.16. Окно Rose Delphi Link после кодогенерации
в представление Logic View создался новый пакет Unit1 и External References (Внешние ссылки). Внутри второго пакета созданы три класса TForm, TMainMenu и TMenuItem, которые использовались при развитии проекта Delphi. Отметим, что эта папка не создалась бы, если бы мы при первоначальном создании проекта включили в него пакет классов Delphi FreimWork.
в этом же представлении в пакете Unit1 создан класс TForm1 и Unit1 оба соотнесенные с вновь созданным компонентом Unit1. Кроме того, в этом же пакете создалась диаграмма классов Overview, содержимое которой показано на рис.17
Рис.17. Результаты реинжениринга проекта Delphi в Rose
(Задание. Опишите интерпретацию рис.17 с позиции объектно - ориентированного проектирования).
Лабораторная работа 13. Кодогенерация модельных элементов из Приложения Б
Ниже, с помощью визуального представления, описаны основные законы кодогенерации при установках кодогенерации типа Default и пример кодогенерации нашего проекта.
Задание. Создать новый проект в Rational Rose. Для каждого элемента из приложения создать в Rose соответствующую модель классов и выполнить кодогенерацию для нее.
Таблица законов кодогенерации из Rose в Delphi
Элемент модели: Category
Наименование св-ва |
Описание |
|
ClassDiagram |
The name of diagram to add classes to when reverse engineering. Defaults to "Overview". If "", then no diagram is created. |
Элемент модели: Class
Наименование св-ва |
Описание |
|
Kind |
One of "", "class" (default), "interface", "dispinterface", "object". The class stereotype is also set to "Interface" if the kind is "interface" or "dispinterface". |
Элемент модели: ProcedureType
Наименование св-ва |
Описание |
|
<<Stereotype>> |
Delphi Procedure Types are modelled in Rose as classes with a stereotype "ProcType" |
|
ProcedureType_ofObject |
True or False (default), true if procedure type references a method of an instance object. |
Элемент модели: Component
Наименование св-ва |
Описание |
|
ComponentKind |
One of "unit", "library", "program", or "package". Library or program components describe as projects, package components are ignored (their referenced units are in the RDL view anyway). |
Элемент модели: Attribute
Наименование св-ва |
Описание |
|
Published |
True or False (default). If the attribute is public and published is true, then the attribute gets generated to code in a published visibility section. |
Элемент модели: Role
Наименование св-ва |
Описание |
|
Published |
True or False (default). If the role is public and published is true, then the role gets generated to code in a published visibility section. |
|
Array_Range |
If not "" (default), then the role is generated to code as an array with the specified range. If "", then the role's cardinality is used to determine it the role is an array. |
Элемент модели: Operation
Наименование св-ва |
Описание |
|
Published |
True or False (default). If the operation is public and published is true, then the operation gets generated to code in a published visibility section. |
|
Operation_Abstract |
True or False (default). If true, then the operation is generated to code with an "abstract" directive. |
|
Operation_Binding |
One of "" (default), "virtual", "dynamic", "override", "reintroduce". If not "", then the operation is generated to code with the specified binding. |
|
Operation_CallingConvention |
One of "" (default), "register", "pascal", "cdecl", "stdcall", "safecall". If not "", then the operation is generated to code with the specified calling convention. |
|
Operation_Message |
"" (default) or a message expression. If not "", then the operation is generated to code with a "message" directive having the specified value. |
|
Operation_Overload |
True or False (default). If true, then the operation is generated to code with a "overload" directive. |
|
Operation_Kind |
The kind of the operation. One of "procedure" (default), "function", "constructor", "destructor", "class procedure", "class function". |
Элемент модели: Property
Наименование св-ва |
Описание |
|
<<stereotype>> |
Delphi properties are modelled in rose as operations with a stereotype of "Property". |
|
Published |
True or False (default). If the property is public and published is true, then the property gets generated to code in a published visibility section. |
|
Property_Index |
"" (default) or index expression. If not "", then the property is generated to code with a "index" specifier having the specified value. |
|
Property_Read |
"" (default) or read expression. If not "", then the property is generated to code with a "read" specifier having the specified value. |
|
Property_ReadOnly |
True or False (default). If true,then the property is generated to code with a "readonly" specifier. |
|
Property_Write |
"" (default) or write expression. If not "", then the property is generated to code with a "write" specifier having the specified value. |
|
Property_WriteOnly |
True or False (default). If true,then the property is generated to code with a "writeonly" specifier. |
|
Property_Stored |
"" (default) or storage expression. If not "", then the property is generated to code with a "stored" specifier having the specified value. |
|
Property_DefaultSpecifier |
One of "" (default), "nodefault", or "default". If not "", then the property is generated to code with a default value specifier. If "default", the value is obtained from the Property_DefaultValue model property. |
|
Property_DefaultValue |
"" (default) or constant expression. The value used for the "default" specifier. |
|
Property_Implements |
"" (default) or implements expression. If not "", then the property is generated to code with a "implements" specifier having the specified value. |
|
Property_IsDefaultProperty |
True or False (default). If true, then the property is generated to code with a "default" property directive. Only relevant for array properties. |
Элемент модели: Parameter
Наименование св-ва |
Описание |
|
Mode |
One of "" (default), "const", "var", "out". If not "", then the parameter is generated to code with the specified mode. |
Модели кодогенерации при настройке по типу Default
Type SampleClass1 = class (BaseClass, SampleInterface) {. } end; |
||
type SampleClass2 = class private AnAttribute: Integer; ARole: SupplierClass1; Public procedure AnOperation (arg: Integer); property AProperty: Integer index 2 read AnAttribute write AnOperation; end; |
Property specifiers are stored in the code generation properties of the associated rose operation. |
|
type SampleClass3 = class private ArrayRole1: array of SupplierClass2; ArrayRole2: array [1.10] of SupplierClass5; ArrayRole3: array [SampleRange] of SupplierClass3; ArrayRole4: TItems; end; |
ArrayRole3 range 'SampleRange' is stored in the Array_Range code gen property. To specify your own collection type, instead of using arrays, add a ': ' and the collection type to the role name. |
|
type SampleRecord = record attr1: Integer; attr2: Real; end; |
||
type SampleEnum = (value1, value2, value3); |
||
type ProcedureTypeSample = function (arg: Integer): Integer; |
A procedure type maps to a Rose class, with a ProcType stereotype, and a single operation 'signature' which represents the procedure type signature |
|
type SampleRange = 1.10; |
A subrange is represented as a Rose class with 'Range' stereotype, and 2 attributes named Low and High. The initial value of these attributes are the low and high values of the range |
|
type TOldType = class end; type SampleTypeId1 = TOldType; type SampleTypeId2 = Integer; |
A type id is represented as a Rose class with a 'TypeId' stereotype. If the type being renamed is a standard delphi type (such as Integer) an attribute is used to model this type. Otherwise, an inheritance relationship is used. |
|
type SampleClassRef = class of TObject; type SamplePointer = ^TOtherType; type SampleFile = file of Integer; type SampleArray = array of array of Integer; |
Delphi pointer types, class references, array types, set types, and file types are represented as Rose classes with stereotypes. If the delphi type references another user-defined type, this is shown with a dependency. If the delphi type references a basic delphi type (Integer) or is complex (i. e. nested arrays) the reference is modeled with an attribute. |
|
Unit SampleUnit; interface type SampleClass1 = class {…} end; implementation end; |
A unit maps to a component and a category. Its member classes are the component's assigned classes. |
Модуль NewProect. dpr (Корневая папка)
program NewProject;
uses
OrderClientExe in 'OrderClientExe. pas',
OrderServerExe in 'OrderServerExe. pas',
OrderDetail_ in 'Baundary\OrderDetail_. pas',
OrderOptions_ in 'Baundary\OrderOptions_. pas',
TransactionMgr_ in 'Control\TransactionMgr_. pas',
OrderMgr_ in 'Control\OrderMgr_. pas',
Order_ in 'Entity\Order_. pas',
OrderItem_ in 'Entity\OrderItem_. pas';
begin
end.
Модуль OrderDetail_. pas (Папка Baundary)
unit OrderDetail;
interface
uses
OrderMgr;
var theOderMgr: OderMgr;
procedure Open;
procedure SubmitinfoXX;
procedure Save;
implementation
procedure Open;
begin
end;
procedure SubmitinfoXX;
begin
end;
Модуль OrderOptions_. pas (Папка Baundary)
unit OrderOptions_;
interface
uses
OrderDetail_;
type
OderOptions = class;
OderOptions = class
public
theOrderDetail: OrderDetail;
procedure Create;
end;
implementation
procedure OderOptions. Create;
begin
end;
end.
Модуль OrderMgr_. pas (Папка Control)
unit OrderMgr;
interface
uses
Order,
TransactionMgr;
type
OderMgr = class;
OderMgr = class
public
theOrderCollection: array of Order;
theTransactionMgr: TransactionMgr;
procedure SaveOrder;
end;
implementation
procedure OderMgr. SaveOrder;
begin
end;
end.
Модуль TransactionMgr _. pas (Папка Control)
unit TransactionMgr;
interface
uses
Order,
OrderItem;
var theOrderCollection: array of Order;
var theOrderItemCollection: array of OrderItem;
procedure SaveOrder;
procedure CommitXX;
implementation
procedure SaveOrder;
begin
end;
procedure CommitXX;
begin
end;
end.
Модуль Order_. pas (Папка Entity)
unit Order_;
interface
uses
OrderItem_;
type
Order = class;
Order = class
public
theOrderItemCollection: array of OrderItem;
procedure Create;
procedure SetInfo;
procedure GetInfo;
end;
implementation
procedure Order. Create;
begin
end;
procedure Order. SetInfo;
begin
end;
procedure Order. GetInfo;
begin
end;
end.
Модуль OrderItem_. pas (Папка Entity)
unit OrderItem_;
interface
type
OrderItem = class;
OrderItem = class
public
procedure GetInfo;
procedure Create;
procedure SetInfo;
end;
implementation
procedure OrderItem. GetInfo;
begin
end;
procedure OrderItem. Create;
begin
end;
procedure OrderItem. SetInfo;
begin
end;
end.
Модуль OrderClientExe. pas (Корневая папка)
unit OrderClientExe;
interface
implementation
end.
Модуль OrderServerExe. pas (Корневая папка)
unit OrderServerExe;
interface
implementation
end.
Лабораторная работа 14. Построение диаграммы размещения
В этом упражнении создается диаграмма Размещения для системы обработки заказов.
Рис.18 Диаграмма размещения для модельной задачи
Этапы выполнения упражнения
Добавление узлов к диаграмме Размещения
1. Дважды щелкнув мышью на представлении Размещения в браузере, откройте диаграмму Размещения.
2. Нажмите кнопку Processor (Процессор) панели инструментов.
3. Щелкнув мышью на диаграмме, поместите туда процессор.
4. Введите имя процессора "Сервер базы данных".
5. Повторив шаги 2-4, добавьте следующие процессоры:
Сервер приложения
Клиентская рабочая станция №1
Клиентская рабочая станция №2
6. На панели инструментов нажмите кнопку Devices (Устройство).
7. Щелкнув мышью на диаграмме, поместите туда устройство.
8. Назовите его "Принтер".
Добавление связей
1. Нажмите кнопку Connection (Связь) панели инструментов.
2. Щелкните мышью на процессоре "Сервер базы данных".
3. Проведите линию связи к процессору "Сервер приложения".
4. Повторив шаги 1 - 3, добавьте следующие связи;
От процессора "Сервер приложения" к процессору "Клиентская рабочая станция №1"
От процессора "Сервер приложения" к процессору "Клиентская рабочая станция №2"
От процессора "Сервер приложения" к устройству "Принтер"
Добавление процессов
1. Щелкните правой кнопкой мыши на процессоре "Сервер приложения" в браузере.
2. В открывшемся меню выберите пункт New > Process (Создать > Процесс),
3. Введите имя процесса - OrderServerExe.
4. Повторив шаги 1 - 3, добавьте процессы:
Процесс OrderclientExe на процессоре "Клиентская рабочая станция №1"
Процесс ATMClientExe на процессоре "Клиентская рабочая станция №2"
Показ процессов на диаграмме
1. Щелкните правой кнопкой мыши на процессоре "Сервер приложения".
2. В открывшемся меню выберите пункт Show Process (Показать процессы).
3. Повторив шаги 1 и 2, покажите процессы на следующих процессорах:
Клиентская рабочая станция №1
Клиентская рабочая станция №2
Методические рекомендации и указания по выполнению лабораторных работ
За весь семестр студент повторяет лабораторные работы, выполняемые на занятиях, для своего индивидуального задания - программного проекта (вариант задания предлагается преподавателем). В течение семестра студент консультируется с преподавателем и поэтапно показывает результаты работы над проектом. В конце семестра студент должен сдать и защитить программный проект с пояснительной запиской.
Выполнение задания требует от студента теоретических знаний и умений осуществлять на практике моделирование, проектирование и программирование на основе объектно-ориентированной парадигмы.
Основной раздел работы должен содержать результаты решения конкретной прикладной задачи и отражать выполнение промежуточных заданий на этапах выполнения работы.
Этап 1.
Задание: Определение темы, постановка целей и задач исследования.
Методические указания к этапу 1:
Целью проекта является разработка программного продукта с использованием объектно-ориентированной технологии программирования. Задачи конкретизируют цель и задают последовательность работ по ее выполнению.
Этап 2.
Задание: Поиск литературных и других источников, необходимых для выполнения курсовой работы.
Методические указания к этапу 2:
Необходимо провести поиск литературных и других (информация из Интернет) источников по теме исследования, а также программных продуктов - аналогов, позволяющих или решающих конкретную прикладную задачу.
Этап 3.
Задание: Обработка и анализ материала, постановка задачи для разработки программного продукта.
Методические указания к этапу 3:
Необходимо проанализировать найденные литературные и другие источники, дать их сравнительную характеристику, указав при этом достоинства и недостатки существующих программных продуктов. На основании анализа необходимо составить предварительный список действий, которые будет выполнять разрабатываемый программный продукт.
Этап 4.
Задание: Выполнить анализ предметной области в соответствии с вариантом задания на основании объектно-ориентированного подхода.
Методические указания к этапу 4:
На этапе анализа необходимо выделить основные понятия предметной области, понять сущность и структуру исследуемого объекта, установить суть явлений, процессов и взаимосвязей переменных, характерных для объекта. Необходимо уяснить, в чем состоит проблема, для решения которой планируется создание программного продукта. В процессе анализа предметной области уточняется список действий, составленный на этапе 3, которые будет выполнять разрабатываемый программный продукт. Определяется также перечень действий, недопустимых для исследуемого объекта.
Этап 5.
Задание: Обосновать и разработать объектную модель предметной области в соответствии с вариантом задания.
Методические указания к этапу 5:
Модель предметной области должна представлять иерархию объектов, включать в себя классы, соответствующие понятиям предметной области, выделенным на этапе анализа. В ходе выявления объектов из предметной области необходимо установить, какие связи существуют между ними. Особый интерес представляют два вида отношений: обобщение (отношение между подклассом и суперклассом) и агрегации (отношение между целым и частью). Между классами могут существовать и другие отношения, но эти два исключительно важны.
Классы в рамках объектно-ориентированного подхода имеют атрибуты (данные) и операции (методы, функции, выполняемые объектами). Однако, при моделировании предметной области, атрибуты и операции классов обычно не рассматриваются. На этом этапе следует сконцентрировать внимание на выявлении собственно объектов и отношений между ними.
Этап 6.
Задание: Выполнить проектирование программного продукта, реализующего созданную объектную модель и позволяющего решить задание своего варианта.
Методические указания к этапу 6:
Каждый класс модели предметной области, созданной на предыдущем этапе, нужно дополнить описанием необходимых атрибутов и операций. Для атрибутов должны быть определены их типы. Для операций - состав и типы параметров, типы возвращаемых значений. Для всех атрибутов и операций класса необходимо определить область видимости: общедоступный (public), защищенный (protected) или закрытый (private).
Нередко на этапе проектирования появляются дополнительные классы, отсутствующие в модели предметной области. Такие классы позволяют более эффективно и гибко реализовать взаимодействие классов предметной области. Например, для удобства манипулирования объектами некоторого класса предметной области можно на этапе проектирования предусмотреть создание специализированного класса массива, который будет хранить набор объектов предметной области, и будет иметь операции для их сортировки, записи в файл, чтения из файла и т.д.
Этап 7.
Задание: Реализовать созданный проект в виде законченного приложения, используя объектную модель выбранного языка программирования и объектно-ориентированную технологию программирования соответствующей инструментальной среды.
Методические указания к этапу 7:
На этом этапе нужно реализовать все спроектированные классы на выбранном языке программирования. Дополнительно нужно создать пользовательский интерфейс к приложению. Готовое приложение необходимо протестировать и исправить обнаруженные ошибки.
Этап 8.
Задание: Проанализировать полученные результаты решения прикладной задачи, сформулировать выводы по проекту.
Методические указания к этапу 8:
Следует сравнить полученные результаты с поставленными задачами и определить степень их выполнения и, в конечном итоге, степень достижения цели проекта. На основе анализа результатов выполнения работы сформулировать выводы. Желательно отметить возможные направления и пути дальнейшего развития и совершенствования разработанного программного продукта.
Этап 9.
Задание: Оформить пояснительную записку к курсовой работе и созданный программный продукт.
Методические указания к этапу 9:
Пояснительная записка оформляется в соответствии с требованиями, приведенными в данном методическом пособии, и сдается студентом преподавателю в установленный срок.
Этап 10.
Задание: Защитить полученные результаты.
Методические указания к этапу 10:
На защите в устной форме излагается цель, задачи, использованные методы анализа, моделирования, проектирования и программирования программного продукта. Сообщаются полученные результаты. После устного сообщения студент демонстрирует сеанс работы с программным продуктом, его функциональные возможности.
В ходе выполнения программного проекта студент должен:
регулярно отчитываться перед преподавателем о выполнении соответствующих этапов работ;
пользоваться библиографическим указателем и каталогом, сетью Интернет;
знать основные методы сбора и анализа материала по теме;
изучить литературу и другие источники по теме, собрать и проанализировать необходимый материал;
изложить современное состояние вопроса в виде обзора литературы;
выполнить анализ предметной области;
обосновать и разработать объектную модель предметной области;
спроектировать и реализовать программный продукт, решающий прикладную задачу;
грамотно оформить курсовую работу.
Преподаватель должен:
определить тему проекта;
обсудить содержание и структуру проекта;
проверить полноту библиографического списка, наличие и доброкачественность первичных материалов;
проконтролировать календарный план выполнения работы и ее оформление;
проследить уровень владения и использования студентом научной терминологии,
помочь студенту изложить современное состояние вопроса;
проверить полноту разработанной студентом объектной модели предметной области и ее адекватность решаемой прикладной задаче;
проконтролировать качество разработки и реализации студентом программного продукта;
помочь студенту проанализировать полученные результаты и сформулировать выводы по проекту
3. Структура пояснительной записки к курсовой работе и требования к ее оформлению
В состав пояснительной записки входят:
1. Титульный лист
2. Содержание (с указанием страниц)
3. Введение
4. Основной раздел (с разбиением на параграфы)
5. Заключение
6. Список использованной литературы и других источников
7. Приложение (Приложения)
Во введении определяется актуальность проблемы, предмет (объект), цель и задачи исследования.
Основной раздел
1). Обзор источников и аналогов
Приводится обзор литературы и других источников, результат поиска аналогов с обязательными ссылками на найденные источники. Изучение источников по теме, как правило, предшествует сбору и анализу материала. Оно должно быть достаточно широким. Нельзя ограничиваться сведениями, почерпнутыми из учебников, обязательно используются монографии и статьи, опубликованные в научных журналах. Поиск литературы осуществляется студентом самостоятельно с помощью каталогов научной библиотеки, библиографических указателей и справочников, сети Интернет. В результате изучения литературы должно формироваться представление о современном состоянии вопроса, устанавливаются имеющиеся противоречия и нерешенные задачи. Обзор должен содержать логичное рассмотрение различных аспектов темы исследования, выделяются основные теоретические и практические положения. Материал не должен представлять беспорядочное изложение точек зрения различных авторов. В основном используются источники последних 7-10 лет. В резюме выделяются дискуссионные вопросы.
2). Анализ предметной области
При необходимости раздел иллюстрируется необходимым количеством рисунков, фотографий, таблиц, схем, диаграмм и графиков и т.д. Они должны не только иллюстрировать основные положения работы, но и служить наглядными доказательствами и обоснованиями для последующих заключений и выводов.
3). Объектная модель предметной области
Описываются классы, соответствующие понятиям предметной области. Раскрываются их связи между собой и алгоритмы их взаимодействия в процессе решения прикладной задачи. Объектная модель изображается графически в виде диаграммы классов.
4). Проектирование программного продукта
Подробно документируются классы предметной области. Определяется состав их атрибутов и операций. При необходимости добавляются дополнительные классы. Результаты проектирование графически изображается в виде диаграмм, блок-схем.
5). Реализация программного продукта
Поясняются особенности реализации основных операций классов и используемых алгоритмов. Описывается пользовательский интерфейс и последовательность работы с ним. Описание сеанса работы с программным продуктом целесообразно иллюстрировать копиями соответствующих окон пользователя.
Заключение включает обсуждение полученных результатов, приводятся выводы по работе. Выводы должны полностью соответствовать цели работы и характеризовать ее результаты. Они являются концентрацией основных положений работы и поэтому не могут развивать идеи, не вытекающие полностью из ее материалов.
В список использованной литературы и других источников включаются обязательно все используемые работы, ресурсы Интернет и др. по авторскому алфавиту. Список используемых источников оформляется в соответствии с библиографическими требованиями.
Приложение (я) включается в работу в случае необходимости. В приложениях приводятся листинги исходных текстов программ с основными комментариям, большие блок-схемы алгоритмов, таблицы, экспериментальных данных, результатов работы программы и т.д., если они занимают слишком много места в основном разделе работы. Материал приложений должен способствовать более четкому изложению материала, иллюстрировать отдельные положения и результаты курсовой работы.
Приложения последовательно нумеруются с названиями: Приложение 1, Приложение 2 и т.д.
Общие требования
Язык пояснительной записки к проекту должен быть четким, ясным, изложение - логичным и последовательным. Следует избегать громоздких предложений, повторений, канцеляризмов ("на основании вышеизложенного…", "исходя из…" и т.д.). Не применяются сокращения, кроме общепринятых. Все грамматические, стилистические ошибки тщательно выверяются и исправляются. Графические материалы должны быть наглядными. Диаграммы и графики выполняются с соблюдением масштаба.
Каждая таблица в тексте должна иметь общий заголовок, номер, четкое обозначение строк и столбцов. В тексте дается анализ таблицы, в котором не повторяются приводимые в таблице показатели, а даются заключения и обобщения из ее материалов. Подписи под диаграммами и графиками должны четко и полностью объяснять отраженные на них явления. Дается общая нумерация рисунков, диаграмм и отдельно - нумерация таблиц.
Пояснительная записка к работе оформляется на одной стороне листа А-4, листы скрепляются. Содержание начинается со второй страницы. Наименование разделов содержания должно точно соответствовать наименованию разделов. Нумерация страниц начинается с третьей, первая страница - титульный лист, вторая - лист с содержанием. Каждый раздел начинается в пояснительной записке с новой страницы.
Текст пояснительной записки выполняется шрифтом 12 или 14 (Times New Roman или Arial), выравнивание по ширине, заголовки - жирный шрифт 16, межстрочный интервал - 1,5. Используются листы бумаги формата А4 с полями: левое - 2,5; правое - 1,5; верхнее 2,0; нижнее - 2,0. Текст печатается на одной стороне листа. При компоновке текста с иллюстрациями должно соблюдаться рациональное заполнение страниц. Нумерация страниц выполняется внизу страницы от центра, титульный лист (первая страница) не нумеруется.
Все страницы пояснительной записки скрепляются и оформляются в обложку. К пояснительной записке прикрепляется диск с файлами программ, представляемых и описанных в вашем проекте.
При выполнении проекта студент может использовать на выбор объектную модель одного из языков программирования (Delphi, Java, С++, С# и др.) и объектную технологию программирования в соответствующей среде.
При моделировании предметной области и проектировании программного продукта следует использовать диаграммы классов языка UML.
Порядок защиты проекта:
1. Перед защитой преподавателю сдается пояснительная записка к проекту
2. Выступление студента, выполнившего проект (длительность выступления - 3 мин). Демонстрация работы программного продукта (длительность демонстрации - 5 мин).
3. Вопросы
Оценка за проект объявляется преподавателем после проверки пояснительной записки
8. Материалы для текущего, рубежного и итогового контроля
Текущий контроль:
Выполнять вовремя лабораторные работы. Варианты заданий
Вариант 1
Система "Кассы ж/д". Задача - информационная поддержка деятельности транспортных железнодорожных касс. БД должна осуществлять: ведение списка рейсов и билетов на них с указанием класса; учёт забронированных мест; ведение архива пассажиров за последний месяц. Необходимо предусмотреть: продажу билетов в оба конца; поиск места на рейс в соответствии с требованиями заказчика; получение списка свободных мест на рейс; выдачу информации по конкретному рейсу; получение списка проданных мест; проверку наличия брони по имени клиента и/или названию организации.
Вариант 2
Система "Гостиничный комплекс". Гостиничный комплекс состоит из нескольких зданий-гостиниц (корпусов). Каждый корпус имеет ряд характеристик, таких, как класс отеля (двух-, пятизвездочные), количество этажей в здании, общее количество комнат, комнат на этаже, местность номеров (одно-, двух-, трехместные и т.д.), наличие служб быта: ежедневная уборка номера, прачечная, химчистка, питание (рестораны, бары) и развлечения (бассейн, сауна, бильярд и пр.). От типа корпуса и местности номера зависит сумма оплаты за него. Химчистка, стирка, дополнительное питание, все развлечения производятся за отдельную плату.
Рубежный контроль
Контрольная работа #1
Вариант 1
1. В отеле используется система электронного ключа. Менеджер отеля каждому клиенту при вселении выдает карточку с магнитной лентой. Клиент вставляет эту карточку в специальное отверстие в двери - дверь открывается. Дверь в комнату блокируется при закрытии (английский замок). Изнутри дверь всегда можно открыть. При окончании срока прибывания клиента или при выезде клиента из отеля карточка перестает работать. Обслуживающий персонал также может с помощью своей карточки открыть двери комнат, которые он обслуживает. Менеджер отеля с помощью своей карточки имеет доступ ко всем комнатам отеля. Все события об открытии закрытии дверей определенным лицом записывается на карточку (максимум 100 событий).
1) Построить диаграмму вариантов использования для этой задачи.
2) Построить диаграмму классов для этой задачи
3) Построить диаграмму последовательности для одного из вариантов использования
2. Смоделировать процесс формирования выполняемого (. exe) файла на основе файлов с исходными кодами на языке С++. Использовать подходящие диаграммы языка UML.
3. Смоделировать работу лифта с помощью диаграмм UML.
Контрольная работа #2
Вариант 1
1. Дан следующий код:
Файл: Date. cpp
#include <iostream>
#include <Date. h>
const int Date:: dys [] ={31,28,31,30,31,30,31,31,30,31,30,31};
void Date:: SetDate (int mo, int da, int yr)
{
if (mo < 1 || mo > 12 || yr < 1) {
ndays = 0; // invalid month or year or null date
return;
}
// compute days thru last year
ndays = (yr-1) * 365 + (yr-1) / 4 - (yr-1) / 1000;
for (int i = 0; i < mo; i++) {
int dy = dys [i];
if (i == 1 && IsLeapYear (yr))
dy++; // make Feb's days 29 if leap year
if (i < mo-1) // add in all but this month's days
ndays += dy;
else if (da > dy) {
ndays = 0; // invalid day
return;
}
}
ndays += da; // add in this month's days
}
void Date:: GetDate (int& mo, int& da, int& yr) const
{
da = ndays;
if (ndays == 0) {
yr = mo = 0;
return;
}
for (yr = 1;; yr++) {
int daysthisyear = IsLeapYear (yr)? 366: 365;
if (da <= daysthisyear)
break;
da - = daysthisyear;
}
for (mo = 1; mo < 13; mo++) {
int dy = dys [mo-1];
if (mo == 2 && IsLeapYear (yr))
dy++; // make Feb's days 29 if leap year
if (da <= dy)
break;
da - = dy;
}
}
int Date:: GetMonth () const
{
int mo, da, yr;
GetDate (mo, da, yr);
return mo;
}
int Date:: GetDay () const
{
int mo, da, yr;
GetDate (mo, da, yr);
return da;
}
int Date:: GetYear () const
{
int mo, da, yr;
GetDate (mo, da, yr);
return yr;
}
std:: ostream& operator<< (std:: ostream& os, const Date& dt)
{
os << dt. GetMonth () << '/'
<< dt. GetDay () << '/'
<< dt. GetYear ();
return os;
}
std:: istream& operator>> (std:: istream& is, Date& dt)
{
int mo, da, yr;
is >> mo >> da >> yr;
dt. SetDate (mo, da, yr);
return is;
}
Файл: Ssn. cpp
#include <ssn. h>
SSN:: SSN (long unsigned int sn): ssn (sn)
{
if (ssn > 999999999L)
ssn = 0;
}
std:: ostream& operator<< (std:: ostream& os, const SSN& sn)
Подобные документы
Эффективные средства разработки программного обеспечения. Технология визуального проектирования и событийного программирования. Конструирование диалоговых окон и функций обработки событий. Словесный алгоритм и процедуры программы Borland Delphi 7 Studio.
дипломная работа [660,2 K], добавлен 21.05.2012Разложение функции в ряд Тейлора, алгоритм работы программного интерфейса сокетов, исходный текст программ с комментариями. Возможности языка программирования Си и среда разработки приложений в ОС Linux. Виртуальная среда VMWare Player и VirtualBox.
лабораторная работа [1,8 M], добавлен 02.09.2014Основные этапы разработки программного обеспечения (пакета программ), анализ требований к системе. Метод пошаговой детализации. Языки программирования низкого уровня и высокого уровня (императивные, объектно-ориентированные, функциональные, логические).
презентация [41,4 K], добавлен 13.10.2013Функциональные возможности веб-сайтов и их применение. Сравнительный анализ языков программирования для веб-разработки. Методические аспекты разработки образовательного веб-сайта. Определение трудозатрат на разработку и отладку программного продукта.
дипломная работа [2,8 M], добавлен 03.09.2021Языки среды программирования Visual Studio. Стартовая страница интегрированной среды разработки. Окно New Project. Вкладка разработки формы. Перемещение и изменение размера кнопки. Прибавление программного кода к кнопке. Запуск и сохранение проекта.
презентация [1,4 M], добавлен 29.04.2014Языки программирования низкого и высокого уровней и среды реализации. Особенности процедурных, логических, объектно-ориентированных языков. Состав системы программирования: трансляторы, библиотеки и отладчик программ, компоновщик, средства редактирования.
презентация [11,9 K], добавлен 23.10.2013Технологии разработки программного обеспечения. Процедура постановки задачи, определения требований. Последовательность действий логической, разветвленной и циклической структуры. Терминология программирования. Этапы создания программного продукта.
презентация [793,8 K], добавлен 15.11.2010Требования к пользовательскому интерфейсу программного продукта. Выбор инструментальных средств разработки программы. Описание функциональной схемы, модульной структуры, структурной схемы. Технология разработки справочной системы программного продукта.
дипломная работа [2,7 M], добавлен 12.05.2016Системы визуального объектно-ориентированного программирования. Среда разработки Delphi. Microsoft Access как система управления базами данных реляционного типа. Структурированный язык запросов SQL. Программирование базы данных Библиотечного фонда.
курсовая работа [2,5 M], добавлен 08.01.2012Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.
курсовая работа [1,3 M], добавлен 25.11.2014