//## end Diskr_analiz::operator==%470F79570399_eq.body
}
int Diskr_analiz::operator!=(const Diskr_analiz &right) const
{
//## begin Diskr_analiz::operator!=%470F79570399_neq.body preserve=yes
//## end Diskr_analiz::operator!=%470F79570399_neq.body
}
//## Other Operations (implementation)
void Diskr_analiz::Vector_DF ()
{
//## begin Diskr_analiz::Vector_DF%470F7D1003D8.body preserve=yes
//## end Diskr_analiz::Vector_DF%470F7D1003D8.body
}
void Diskr_analiz::Vector_zn_DF ()
{
//## begin Diskr_analiz::Vector_zn_DF%470F7FB703A9.body preserve=yes
//## end Diskr_analiz::Vector_zn_DF%470F7FB703A9.body
}
void Diskr_analiz::Const_diskr ()
{
//## begin Diskr_analiz::Const_diskr%470F800F037A.body preserve=yes
//## end Diskr_analiz::Const_diskr%470F800F037A.body
}
void Diskr_analiz::Rasch_zn_DF ()
{
//## begin Diskr_analiz::Rasch_zn_DF%470F802C005D.body preserve=yes
//## end Diskr_analiz::Rasch_zn_DF%470F802C005D.body
}
// Additional Declarations
//## begin Diskr_analiz%470F79570399.declarations preserve=yes
//## end Diskr_analiz%470F79570399.declarations
//## begin module%470F79570399.epilog preserve=yes
//## end module%470F79570399.epilog
{Class Kovar_matrix}
//## begin module%1.5%.codegen_version preserve=yes
// Read the documentation to learn more about C++ code generator
// versioning.
//## end module%1.5%.codegen_version
//## begin module%470F792B01A5.cm preserve=no
// %X% %Q% %Z% %W%
//## end module%470F792B01A5.cm
//## begin module%470F792B01A5.cp preserve=no
//## end module%470F792B01A5.cp
//## Module: Kovar_matrix%470F792B01A5; Pseudo Package body
//## Source file: C:\Program Files\Rational\Rose\C++\source\Kovar_matrix.cpp
//## begin module%470F792B01A5.additionalIncludes preserve=no
//## end module%470F792B01A5.additionalIncludes
//## begin module%470F792B01A5.includes preserve=yes
//## end module%470F792B01A5.includes
// Kovar_matrix
#include "Kovar_matrix.h"
//## begin module%470F792B01A5.additionalDeclarations preserve=yes
//## end module%470F792B01A5.additionalDeclarations
// Class Kovar_matrix
Kovar_matrix::Kovar_matrix()
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.hasinit preserve=no
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.hasinit
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.initialization preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.initialization
{
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_const.body preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_const.body
}
Kovar_matrix::Kovar_matrix(const Kovar_matrix &right)
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.hasinit preserve=no
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.hasinit
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.initialization preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.initialization
{
//## begin Kovar_matrix::Kovar_matrix%470F792B01A5_copy.body preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F792B01A5_copy.body
}
Kovar_matrix::Kovar_matrix ()
//## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.hasinit preserve=no
//## end Kovar_matrix::Kovar_matrix%470F7A3501C5.hasinit
//## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.initialization preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F7A3501C5.initialization
{
//## begin Kovar_matrix::Kovar_matrix%470F7A3501C5.body preserve=yes
//## end Kovar_matrix::Kovar_matrix%470F7A3501C5.body
}
Kovar_matrix::~Kovar_matrix()
{
//## begin Kovar_matrix::~Kovar_matrix%470F792B01A5_dest.body preserve=yes
//## end Kovar_matrix::~Kovar_matrix%470F792B01A5_dest.body
}
Kovar_matrix & Kovar_matrix::operator=(const Kovar_matrix &right)
{
//## begin Kovar_matrix::operator=%470F792B01A5_assign.body preserve=yes
//## end Kovar_matrix::operator=%470F792B01A5_assign.body
}
int Kovar_matrix::operator==(const Kovar_matrix &right) const
{
//## begin Kovar_matrix::operator==%470F792B01A5_eq.body preserve=yes
//## end Kovar_matrix::operator==%470F792B01A5_eq.body
}
int Kovar_matrix::operator!=(const Kovar_matrix &right) const
{
//## begin Kovar_matrix::operator!=%470F792B01A5_neq.body preserve=yes
//## end Kovar_matrix::operator!=%470F792B01A5_neq.body
}
//## Other Operations (implementation)
void Kovar_matrix::Sovm_kov_matrix ()
{
//## begin Kovar_matrix::Sovm_kov_matrix%470F7A5E02EE.body preserve=yes
//## end Kovar_matrix::Sovm_kov_matrix%470F7A5E02EE.body
}
// Additional Declarations
//## begin Kovar_matrix%470F792B01A5.declarations preserve=yes
//## end Kovar_matrix%470F792B01A5.declarations
//## begin module%470F792B01A5.epilog preserve=yes
//## end module%470F792B01A5.epilog
{Class_Matrix}
//## begin module%1.5%.codegen_version preserve=yes
// Read the documentation to learn more about C++ code generator
// versioning.
//## end module%1.5%.codegen_version
//## begin module%470F762F032C.cm preserve=no
// %X% %Q% %Z% %W%
//## end module%470F762F032C.cm
//## begin module%470F762F032C.cp preserve=no
//## end module%470F762F032C.cp
//## Module: Matrix%470F762F032C; Pseudo Package body
//## Source file: C:\Program Files\Rational\Rose\C++\source\Matrix.cpp
//## begin module%470F762F032C.additionalIncludes preserve=no
//## end module%470F762F032C.additionalIncludes
//## begin module%470F762F032C.includes preserve=yes
//## end module%470F762F032C.includes
// Matrix
#include "Matrix.h"
//## begin module%470F762F032C.additionalDeclarations preserve=yes
//## end module%470F762F032C.additionalDeclarations
// Class Matrix
Matrix::Matrix()
//## begin Matrix::Matrix%470F762F032C_const.hasinit preserve=no
//## end Matrix::Matrix%470F762F032C_const.hasinit
//## begin Matrix::Matrix%470F762F032C_const.initialization preserve=yes
//## end Matrix::Matrix%470F762F032C_const.initialization
{
//## begin Matrix::Matrix%470F762F032C_const.body preserve=yes
//## end Matrix::Matrix%470F762F032C_const.body
}
Matrix::Matrix(const Matrix &right)
//## begin Matrix::Matrix%470F762F032C_copy.hasinit preserve=no
//## end Matrix::Matrix%470F762F032C_copy.hasinit
//## begin Matrix::Matrix%470F762F032C_copy.initialization preserve=yes
//## end Matrix::Matrix%470F762F032C_copy.initialization
{
//## begin Matrix::Matrix%470F762F032C_copy.body preserve=yes
//## end Matrix::Matrix%470F762F032C_copy.body
}
Matrix::~Matrix()
{
//## begin Matrix::~Matrix%470F762F032C_dest.body preserve=yes
//## end Matrix::~Matrix%470F762F032C_dest.body
}
Matrix & Matrix::operator=(const Matrix &right)
{
//## begin Matrix::operator=%470F762F032C_assign.body preserve=yes
//## end Matrix::operator=%470F762F032C_assign.body
}
int Matrix::operator==(const Matrix &right) const
{
//## begin Matrix::operator==%470F762F032C_eq.body preserve=yes
//## end Matrix::operator==%470F762F032C_eq.body
}
int Matrix::operator!=(const Matrix &right) const
{
//## begin Matrix::operator!=%470F762F032C_neq.body preserve=yes
//## end Matrix::operator!=%470F762F032C_neq.body
}
//## Other Operations (implementation)
void Matrix::Proizv ()
{
//## begin Matrix::Proizv%470F7891009C.body preserve=yes
//## end Matrix::Proizv%470F7891009C.body
}
void Matrix::Standart ()
{
//## begin Matrix::Standart%470F78AC0242.body preserve=yes
//## end Matrix::Standart%470F78AC0242.body
}
void Matrix::Obratn ()
{
//## begin Matrix::Obratn%470F78C3006D.body preserve=yes
//## end Matrix::Obratn%470F78C3006D.body
}
void Matrix::Transp ()
{
//## begin Matrix::Transp%470F78D00177.body preserve=yes
//## end Matrix::Transp%470F78D00177.body
}
// Additional Declarations
//## begin Matrix%470F762F032C.declarations preserve=yes
//## end Matrix%470F762F032C.declarations
//## begin module%470F762F032C.epilog preserve=yes
//## end module%470F762F032C.epilog
4 Задание на лабораторное занятие
1. Сгенерировать программный код на С++ для диаграммы классов, разработанной вами в предыдущей лабораторной работе.
5 Содержание отчета
- титульный лист;
- постановка задачи;
- листинг сгенерированного кода;
- вывод.
6 Контрольные вопросы
1. Какие диаграммы необходимо предварительно разработать, чтобы выполнить кодогенерацию?
2. Как посмотреть исходный код?
3. Какие установки свойств доступны на вкладке C++?
4. Какова структура создаваемого кода?
5. Что необходимо добавить в шаблоны классов для получения работоспособного приложения?
6. Какие шаги нужно предпринять для обновления модели по исходному коду?
7. Какие основные этапы кодогенерации вы знаете? Расскажите кратко о каждом из них?
Тема: «Отладка и тестирование проектируемого программного обеспечения»
Цель работы:
1) отладка разработанного программного средства;
2) тестирование разработанного программного средства.
- уметь отлаживать программные средства;
- знать методику тестирования ПС.
Отладка ПС - это деятельность, направленная на обнаружение и исправление ошибок в ПС с использованием процессов выполнения его программ. Тестирование ПС - это процесс выполнения его программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Таким образом, отладку можно представить в виде многократного повторения трех процессов: тестирования, в результате которого может быть констатировано наличие в ПС ошибки, поиска места ошибки в программах и документации ПС и редактирования программ и документации с целью устранения обнаруженной ошибки.
Отладка программного средства невозможна без представления физической структуры. На этом этапе проектирования необходимо разработать диаграмму компонентов.
Диаграммой компонентов (Component diagram) называется диаграмма UML, на которой показаны компоненты системы и зависимости между ними.
Компонентом называется физический модуль кода. Компонентами бывают как библиотеки исходного кода, так и исполняемые файлы. Например, .h и .cpp и .exe - будут отдельными компонентами.
2.1 Особенности разработки диаграмм компонентов в среде IBM Rational Rose 2003
Диаграмма компонентов служит частью физического представления модели, играет важную роль в процессе ООАП и является необходимой для генерации программного кода. Для разработки диаграмм компонентов в браузере проекта предназначено отдельное представление компонентов (Component View), в котором уже содержится диаграмма компонентов с пустым содержанием и именем по умолчанию Main (Главная).
Активизация диаграммы компонентов может быть выполнена одним из следующих способов:
Щелкнуть на кнопке с изображением диаграммы компонентов на стандартной панели инструментов.
Раскрыть представление компонентов в браузере (Component View) и дважды щелкнуть на пиктограмме Main (Главная).
Через пункт меню Browse
Component Diagram (Браузер Диаграмма компонентов).В результате выполнения этих действий появляется новое окно с чистым рабочим листом диаграммы компонентов и специальная панель инструментов, содержащая кнопки с изображением графических примитивов, необходимых для разработки диаграммы компонентов (табл. 6.1).
Таблица 6.1 - Назначение кнопок специальной панели инструментов диаграммы компонентов
Графическое изображение | Всплывающая подсказка | Назначение кнопки |
Selection Tool | Превращает изображение курсора в форму стрелки для последующего выделения элементов на диаграмме | |
Text Box | Добавляет на диаграмму текстовую область | |
Note | Добавляет на диаграмму примечание | |
Anchor Note to Item | Добавляет на диаграмму связь примечания с соответствующим графическим элементом диаграммы | |
Component | Добавляет на диаграмму компонент | |
Package | Добавляет на диаграмму пакет | |
Dependency | Добавляет на диаграмму отношение зависимости | |
Subprogram Specification | Добавляет на диаграмму спецификацию подпрограммы | |
Subprogram Body | Добавляет на диаграмму тело подпрограммы | |
Main Program | Добавляет на диаграмму главную программу | |
Package Specification | Добавляет на диаграмму спецификацию пакета | |
Package Body | Добавляет на диаграмму тело пакета | |
Task Specification | Добавляет на диаграмму спецификацию задачи | |
Task Body | Добавляет на диаграмму тело задачи | |
Generic Subprogram | Добавляет на диаграмму типовую подпрограммы(по умолчанию отсутствует) | |
Generic Package | Добавляет на диаграмму типовой пакет (по умолчанию отсутствует) | |
Database | Добавляет на диаграмму базу данных (по умолчанию отсутствует) |
Программа IBM Rational Rose 2003 не поддерживает следующие графические стереотипы. Графическое изображение этих стереотипов и их краткая характеристика приводятся в следующей таблице (табл. 6.2). При этом каждому из компонентов, как правило, соответствует отдельный файл исходной сборки программного приложения.