48725

Cложная система с использованием объектно-ориентированного подхода

Курсовая

Коммуникация, связь, радиоэлектроника и цифровые приборы

Моделирование поведения стада животных. На территории леса в хаотичном порядке расположены деревья и животные. На одном из краёв леса находится корм для животных. Во время движения на животных действуют два стимула: достижение корма и стремление быть близко друг к другу.

Русский

2013-12-26

172.5 KB

2 чел.

Министерство общего и профессионального

образования Российской Федерации

Владимирский государственный университет

Кафедра Информатики и Вычислительной Техники

Курсовая работа

по дисциплине : « Технологии программирования ».

Вариант №12

Выплнил: студент группы ИВТ-397

   Мурлыкин Н.Н.

              Принял:   Дубов И.Р.

Владимир 1999

АННОТАЦИЯ

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

Задание

 Моделирование поведения стада животных. На территории леса в хаотичном порядке расположены деревья и животные. На одном из краёв леса находится корм для животных. Во время движения на животных действуют два стимула: достижение корма и стремление быть близко друг к другу. Если животные оказываются ближе друг к другу определённого комфортного расстояния, то они стремятся разойтись. Если животное приближается к дереву, то у него возникает желание отодвинуться от препятствия. Необходимо выполнить имитацию движения стада к корму.

Содержание

1 . ОСНОВНАЯ ЧАСТЬ___________________________________________

1.1. Введение________________________________________________

1.2 Системный анализ ________________________________________

2. ПРОЕКТИРОВАНИЕ___________________________________________

2.1 Идентификация классов и объектов__________________________

2.2 Идентификация содержания классов _________________________

2.3 Идентификация связей между классами и объектами ___________

2.4 Реализация классов и объектов______________________________

3.ПРОГРАММИРОВАНИЕ_______________________________________

4.ТЕСТИРОВАНИЕ _____________________________________________

4.1. Тесты ____________________________________________________

5.ЗАКЛЮЧЕНИЕ _______________________________________________

Приложение 1. Текст программы ___________________________________

Приложение 2. Текст программы драйвера ___________________________

Приложение 3. Результаты тестов___________________________________

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

1 . ОСНОВНАЯ ЧАСТЬ

1.1. Введение

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

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

  •  системный анализ ;
  •  проектирование ;
  •  программирование ;
  •  тестирование .

1. 2 Системный анализ

Составление словаря предметной области и идентификация классов и  объектов могут быть выполнены в соответствии со следующей формальной  процедурой:

1. Перечислить факты, которые характеризуют предметную область,  выделяя их из постановки задачи.

2. Перечислить все объекты (существительные) и приписать им те  факты, в которых они упоминаются.

3. Разделить факты для каждого объекта на три группы: первая -  "атрибуты", вторая - "поведение", третья - "сообщения другим  объектам".

В результате выполнения указанной процедуры получаем следующий  словарь предметной области:

  •  Лес (Forest)
  •  Атрибуты

Координаты углов леса

Состояние леса

  •  Действия:

Начать работу леса(StartGame)

Приостановить работу леса(PauseGame)

  •  Деревья (Trees)
  •  Атрибуты:

Размеры деревьев

Цвет деревьев

Массив координат деревьев

  •  Действия:

Случайно расставить деревья (GenerateTrees)

     Показать деревья(ShowTrees)

 

  •  Пища (Food)
  •  Атрибуты:

Координаты (X,Y);

Размер

  •  Действия:

Разместить пищу(PlaceFood)

    Нарисовать пищу(DrawFood)   

  •  Лоси (Losi)
  •     Атрибуты:

Координаты (X,Y);

Скорость

Курс

Состояние

Размер

  •  Действия:

Нарисовать лосей(DrawLos)

Спрятать лосей(HideLos)

Двигать лосей(MoveLos)

Проверить лосей(CheckLos)

Результатом системного анализа является техническое задание на  проектирование, составленное с использованием словаря предметной  области и сопровождаемое диаграммой классов (рис. 1), диаграмой  объектов (рис. 2).  Техническое задание содержит следующие требования.

Эксплутационные требования:

  •  Технические средства- ПЭВМ IBM PC
  •  Операционная система MSDOS
  •  Процесс управления операционной системой осуществляется одним оператором

Функции системы:

  •  Управление моделированием осуществить с помощью команд

Space – начать моделирование с начала

Esc – выход

  •  Необходимо графически отобразить описанные выше объекты, осуществить передвижение стада к корму.

Для этого:

  •  Необходимо реализовать классы представленные в приложении на диаграмме классов (рис.1).
  •  Создать объекты представленные в приложении на диаграмме объектов (рис.2).В связи с тем, что особенности реализации метода передвижения животных не рассмотрены, на диаграмме объектов отобразим их словом переместить.

Рис.1. Диаграмма классов на стадии анализа

 

Рис.2. Диаграмма объектов на стадии анализа

2. Проектирование

2.1 Идентификация классов и объектов

Для обеспечения свободного доступа классов к атрибутам друг друга на стадии проектирования определим отношения наследования между ними.

Это отношение представлено на рис 3.

         Для обеспечения управляемости системы введем ObrabotkaKlavish класса Losi. Так же в каждый класс добавлены методы изменения атрибутов объектов данных классов, а в класс Forest – метод отображения границ леса.

2.2 Идентификация содержания классов

На этом шаге последовательно рассмотрим все классы, полученные в  процесе выполнения анализа и синтеза.

          Класс Forest.  Границы леса задаются атрибутами LeftX,RightX,UpY,DownY. Границы леса прорисовываются методом DrawForestFrontiers, устанавливаются методом SetForestFrontiers, их цвет устанавливается методом SetForestFrontiersColor и хранится в атрибуте frontiercolor. Статус леса (1-идет моделирование, 0 –нет моделирования) получается методом GetForestStatus и хранится в атрибуте foreststatus.Начало моделирования осуществляется методом StartGame,пауза – методом PauseGame.

Класс Trees.  Расположение деревьев хранится в массиве treearray,начальная инициализация которого производится методом GenerateTrees. Установка атрибутов деревьев производится методом SetTreeAtributes. Размер и цвет деревьев хранится в атрибутах treecolor и treelenght соответственно. Прорисовка деревьев осуществляется методом DrawTrees.

Класс Food.  Атрибутами данного класса являются xfoodcoor и yfoodcoor( координаты x и y  соответственно), foodcolor(цвет еды) и foodlenght(размеры еды). Методами класса являются PlaceFood (разместить еду), SetFoodAttributes(установить атрибуты еды) и DrawFood(нарисовать еду).

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

2.3 Идентификация связей между классами и объектами

В процессе выполнения моделирования движение животных к пище выполняется при помощи метода Moving класса TForest, который вызывается методом Emitate класса TReality. При этом используются методы Show и Hide объектов класса TTree,TFood,TAnimal, а так же методы SetPosition и GetPosition данных классов.

2.4 Реализация классов и объектов

Уточненные диаграммы классов и объектов показаны на рис.3,4.  Описания классов проекта составят модуль animal.h Кроме того, для графического изображения простейших фигур необходимо использовать стандартный модуль графики graphics.h. Головная програма main в данном случае является единственной и содержит инициализацию, выполнение и уничтожение единственного объекта класса TReality. Головная программа собержиться в модуле run.cpp. Вся программная система реализуется одним процессом, поэтому нет необходимости составлять диаграму процессов. Диаграмма модулей разработанной программы приведена на рис.5

Рис.3. Диаграмма классов на стадии проектирования

                                           

                 

       

    

 

Рис.4. Диаграмма объектов на стадии проектирования

        run.cpp         animal cpp             animal.h

      

      graphics.h  

      

Рис.5. Диаграмма модулей разработанной программы

3.ПРОГРАММИРОВАНИЕ.

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

4.ТЕСТИРОВАНИЕ.

Тестирование выполним над методом Moving класса TForest;

4.1. Тесты.

Тесты допустимых входных границ и функциональных границ сведем в таблицу 1.

Таблица 1

Входные данные

Выходные  данные

1

В списке одно животное

Animal->X=100

Animal->Y=100

Food->X=10

Food->Y=10

TDir  D=1;

2

В списке одно животное

Animal->X=100

Animal->Y=100

Food->X=110

Food->Y=10

TDir  D=2;

3

В списке одно животное

Animal->X=100

Animal->Y=100

Food->X=110

Food->Y=110

TDir  D=3;

4

В списке одно животное

Animal->X=100

Animal->Y=100

Food->X=10

Food->Y=110

TDir  D=4;

5

В списке два животных

Animal1->X=100

Animal1->Y=100

Food->X=10

Food->Y=10
An
imal2->X=100

Animal2->Y=100

Food->X=110

Food->Y=10

TDir D1=1

TDir D2=2

Введем обозначения для ветвлений:

A: (Food->X<Animal->X) && (Food->Y<=Animal->Y);

B: (Food->X>=Animal->X) && (Food->Y<Animal->Y);

C: (Food->X>Animal->X) && (Food->Y>=Animal->Y);

D: (Food->X<=Animal->X) && (Food->Y>Animal->Y);

Построим диаграмму управления (см. рис.6) и, руководствуясь ею, составим матрицу учета ветвей (см. табл.2).

 Таблица 2

Условия

1

2

3

4

5

A

(Food->X<Animal->X) && (Food->Y<=Animal->Y);

T

X

X   

F

X

X

X

B

(Food->X>=Animal->X) && (Food->Y<Animal->Y);

T

X

X

F

X

X

X

C

(Food->X>Animal->X) && (Food->Y>=Animal->Y);

T

X

F

X

X

X

X

D

(Food->X<=Animal->X) && (Food->Y>Animal->Y);

T

X

F

X

X

X

X

Из матрицы учета ветвей видно, что предусмотренные тесты охватывают все ситуации.

Составим матрицу учета циклов (см. табл.3). Так как  всегда при-сутствует хотя бы одно животное и одно дерево, то циклы не могут выполняться ноль раз.

             Таблица 3

Цикл

1

2

3

4

5

Цикл выполняется 1 раз

X

X

X

X

Цикл выполняется n раз

X

Рис.6 Диаграмма управления для тестирования.

Так как в процедуре нет сложных вычислений над данными, то нет необходимости составлять тесты на устойчивость к данным. Драйвер для выполнения тестов и результаты тестирования приводятся в приложениях 2 и 3

5.ЗАКЛЮЧЕНИЕ.

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

Приложение 1

Текст программы

//=====================figures.h=====================

#include <math.h>

#ifndef FIGURES_H

#define FIGURES_H

class TPoint

{

public:

 float X,Y;

 float DistanceTo(TPoint *aPoint)

 {

   float X2=X-aPoint->X;

   float Y2=Y-aPoint->Y;

   float a=fabs(X2*X2+Y2*Y2);

   if(a!=0)

     return(sqrt(a));

   else return (0);

 };

};

class TFigure

{

public:

 TPoint TheCenter;

 TFigure(TPoint &aPoint);

};

#endif

//====================figures.cpp=======================

#include "figures.h"

TFigure::TFigure(TPoint &aPoint)

{

TheCenter=aPoint;

};

//======================main.h=========================

#include "figures.h"

#ifndef MAIN_H

#define MAIN_H

#define RADIUSANIMAL 10

#define RADIUSTREE 7

#define RADIUSFORAGE 100

#define COLORANIMAL 7

#define COLORTREE 3

#define COLORFORAGE 9

class TTree:public TFigure

{

public:

 TTree *link;

 TTree(TPoint aCenter);

 void Show();

};

class TAnimal:public TFigure

{

public:

 TAnimal *link;

 TAnimal(TPoint aCenter);

 int HitOnAnimal(TAnimal *aAnimal);

 int HitOnTree(TTree *aTree);

 void Show();

 void Clear();

 void Move(int DeltaX, int DeltaY);

};

class TForage:public TFigure

{

public:

 TForage(TPoint aCenter);

 void Show();

};

class TAnimals

{

public:

 void Moving();

 void Show();

 void Clear();

 void CalculateXY(TAnimal *aAnimal,int *aDeltaX,int *aDeltaY);

 TAnimals(TAnimal *aAnimalPtr,TForage *aForagePtr,TTree *aTreePtr);

 ~TAnimals();

private:

 TAnimal *AnimalPtr;

 TForage *ForagePtr;

 TTree *TreePtr;

};

class TTrees

{

private:

 TTree *TreePtr;

public:

 TTrees(TTree *aTreePtr);

 ~TTrees();

 void Show();

};

class TModel

{

 TAnimals *Animals;

 TTrees *Trees;

 TForage *Forage;

public:

void Go();

void Show();

void Clear();

void Run();

 TModel();

~TModel();

};

#endif

//=====================main.cpp==========================

#include <stdlib.h>

#include <conio.h>

#include <graphics.h>

#include <iostream.h>

#include <time.h>

#include <dos.h>

#include "main.h"

#define RADIUSANIMAL 10

#define RADIUSTREE 7

#define RADIUSFORAGE 100

#define COLORANIMAL 7

#define COLORTREE 3

#define COLORFORAGE 9

//------------TAnimal-----------

TAnimal::TAnimal(TPoint aCenter):TFigure(aCenter)

{

 link=0;

 TheCenter.X=aCenter.X;

 TheCenter.Y=aCenter.Y;

};

int TAnimal::HitOnAnimal(TAnimal *aAnimal)

{

 if (TheCenter.DistanceTo(&aAnimal->TheCenter)<=20)

  {

    return(1);

  }

 return(0);

}

int TAnimal::HitOnTree(TTree *aTree)

{

 if (TheCenter.DistanceTo(&aTree->TheCenter)<=15)

  {

    return(1);

  }

 return(0);

}

void TAnimal::Show()

{

 setcolor(COLORANIMAL);

 circle(TheCenter.X,TheCenter.Y,RADIUSANIMAL);

}

void TAnimal::Clear()

{

 setcolor(0);

 circle(TheCenter.X,TheCenter.Y,RADIUSANIMAL);

}

void TAnimal::Move(int DeltaX, int DeltaY)

{

 TheCenter.X+=DeltaX;

 TheCenter.Y+=DeltaY;

}

//--------------TAnimals----------------

TAnimals::TAnimals(TAnimal *aAnimalsPtr,TForage *aForagePtr,TTree *aTreePtr)

{

 AnimalPtr=aAnimalsPtr;

 ForagePtr=aForagePtr;

 TreePtr=aTreePtr;

}

void TAnimals::Show()

{

 TAnimal *temp;

 temp=AnimalPtr;

 while (temp!=0)

  {

    temp->Show();

    temp=temp->link;

  }

}

void TAnimals::Clear()

{

TAnimal *temp;

temp=AnimalPtr;

while (temp!=0)

{

 temp->Clear();

 temp=temp->link;

}

}

void TAnimals::CalculateXY(TAnimal *aAnimal,int *aDeltaX,int *aDeltaY)

{

TAnimal *temp=aAnimal;

int DeltaX=0, DeltaY=0;

int RAll=0;     //сумма всех расстояний

 TAnimal *tmp=AnimalPtr;

while (tmp!=0)

  {

    int r=tmp->TheCenter.DistanceTo(&temp->TheCenter)*0.01;//рас.до др. жив.

    int dx=tmp->TheCenter.X - temp->TheCenter.X;

    int dy=tmp->TheCenter.Y - temp->TheCenter.Y;

    DeltaX+=r*dx;

    DeltaY+=r*dy;

    RAll+=r;

    tmp=tmp->link;

  }

 int r=ForagePtr->TheCenter.DistanceTo(&temp->TheCenter)*0.055; //расстоян.   //до корма

 int dx=ForagePtr->TheCenter.X - temp->TheCenter.X;

 int dy=ForagePtr->TheCenter.Y - temp->TheCenter.Y;

 DeltaX+=dx*r;

 DeltaY+=dy*r;

 RAll+=r;

 DeltaX=(DeltaX*0.05)/RAll;

 DeltaY=(DeltaY*0.05)/RAll;

*aDeltaX=DeltaX;

*aDeltaY=DeltaY;

}

void TAnimals::Moving()

{

int DeltaX,DeltaY;

TAnimal *temp=AnimalPtr;

while (temp!=0)

{

 CalculateXY(temp,&DeltaX,&DeltaY);

TAnimal *temp2=AnimalPtr;

int Colision=0;  //флаг стокновения

while (temp2!=0)

  {

    if (temp!=temp2)

      {

 TAnimal temp3=*temp;

 temp3.Move(DeltaX,DeltaY);   //эмитируем передвижение

 if (temp3.HitOnAnimal(temp2))//и проверяем на столкнов. с др. жив.

  {

   Colision=1;  //было столкновение с др. животным

   break;

  }

      }

    temp2=temp2->link;

   }

 TTree *TempTree=TreePtr;

 while (TempTree!=0)

   {

      TAnimal temp2=*temp;

      temp2.Move(DeltaX,DeltaY);     //эмитируем передвижение

      if (temp2.HitOnTree(TempTree)) //и проверяем на столкнов. с деревом

{

   Colision=1;                // было столкновение с деревом

   break;

}

      TempTree=TempTree->link;

   }

 if ((!Colision)) temp->Move(DeltaX,DeltaY);

 temp=temp->link;

}

}

void TAnimals::~TAnimals()

{

 TAnimal *temp=AnimalPtr;

 while (temp!=0)

  {

    TAnimal *save=temp->link;

    delete temp;

    temp=save;

  }

}

/////////////TTree/////////////

TTree::TTree(TPoint aCenter):TFigure(aCenter)

{

link=0;

TheCenter=aCenter;

}

void TTree::Show()

{

 setcolor(COLORTREE);

 circle(TheCenter.X,TheCenter.Y,RADIUSTREE);

}

////////////TTrees/////////////

TTrees::TTrees(TTree *aTreesPtr)

{

 TreePtr=aTreesPtr;

}

void TTrees::Show()

{

 TTree *temp;

 temp=TreePtr;

 while (temp!=0)

  {

    temp->Show();

    temp=temp->link;

  }

}

void TTrees::~TTrees()

{

 TTree *temp=TreePtr;

 while (temp!=0)

  {

    TTree *save=temp->link;

    delete temp;

    temp=save;

  }

}

///////////Корм/////////

TForage::TForage(TPoint aCenter):TFigure(aCenter)

{

TheCenter=aCenter;

}

void TForage::Show()

{

 setcolor(COLORFORAGE);

 circle(TheCenter.X,TheCenter.Y,RADIUSFORAGE);

}

//---------------TModel-----------------

TModel::TModel()

{

int g_driver,g_mode;

detectgraph(&g_driver,&g_mode);

initgraph(&g_driver,&g_mode,"c:\\bc\\bgi");

randomize();

//----------Генерирование животных------------

 TAnimal *AnimalPtr, *AnimalTemp, *AnimalTemp2;

TPoint aPoint;

aPoint.X=random(640);

aPoint.Y=random(480);

AnimalTemp=new TAnimal(aPoint);

if (AnimalTemp)

 {

  AnimalPtr=AnimalTemp;

  int MaxAnimal=random(10);

  for (int i=0;i<MaxAnimal;i++)

  {

   aPoint.X=random(640);

   aPoint.Y=random(480);

   AnimalTemp2=new TAnimal(aPoint);

   if (AnimalTemp2==0) break;

   AnimalTemp->link=AnimalTemp2;

   AnimalTemp=AnimalTemp->link;

  }

 }

//---------Генерирование деревьев---------

TTree *TreePtr, *TreeTemp, *TreeTemp2;

aPoint.X=random(640);

aPoint.Y=random(480);

TreeTemp=new TTree(aPoint);

if (TreeTemp)

 {

  TreePtr=TreeTemp;

  int MaxTree=random(15);

  for (int i=0;i<MaxTree;i++)

  {

   aPoint.X=random(640);

   aPoint.Y=random(480);

   TreeTemp2=new TTree(aPoint);

   if (TreeTemp2==0) break;

   TreeTemp->link=TreeTemp2;

   TreeTemp=TreeTemp->link;

  }

  Trees=new TTrees(TreePtr);

 }

//----------Корм----------

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals=new TAnimals(AnimalPtr,Forage,TreePtr);

}

void TModel::Show()

{

Animals->Show();

Trees->Show();

Forage->Show();

}

void TModel::Clear()

{

Animals->Clear();

}

void TModel::Go()

{

Animals->Moving();

}

void TModel::Run()

{

do

{

 Show();

 delay(100);

 Clear();

 Go();

}

while(!kbhit());

}

TModel::~TModel()

{

closegraph();

delete Animals;

delete Trees;

delete Forage;

}

//=====================run.cpp=====================

#include "main.h"

void main()

{

TModel *Model=new TModel();

Model->Run();

delete Model;

}

ПРИЛОЖЕНИЕ 2.

Тексты программы-драйвера.

//--------test.cpp----------

#include "main.h"

#include "figures.h"

#include <graphics.h>

#include <iostream.h>

#include <conio.h>

void OutputNumberTest(int Number)

{cout <<" -------  Тест № " << Number<<"  ---------" << endl;}

//Подпрограмма сравнения результатов

//с ожидаемыми значениями

void OutputResults(TAnimal *aAnimal,TPoint Coor,int True)

{

int flag;

cout<<"Факт: ";

if ((Coor.X==aAnimal->TheCenter.X)&&(Coor.Y==aAnimal->TheCenter.Y))

    {flag=0; cout<<"Передвижения небыло  ";}

 else {flag=1;cout<<"Было передвижение  ";}

 cout<<"Ожидается:";

 if(True) cout<<" Передвижение";

 else cout<<" Нет передвижения";

 if(True!=flag) cout<<"  ОШИБКА !"<<endl<<endl;

else cout<<"     OK !"<<endl<<endl;

}

//Атрибуты животного до выполнения метода Moving

void AtributesOfAnimal(TAnimal *aAnimal)

{

 cout << " Животное:" << endl;

 cout << "    TheCenter.X "

     << aAnimal->TheCenter.X << endl;

cout << "    TheCenter.Y "

     << aAnimal->TheCenter.Y   << endl;

}

//Атрибуты животного после выполнения метода Moving

void NewAtributesOfAnimal(TAnimal *aAnimal)

{

 cout << " Животное :" << endl;

 cout << "    New TheCenter.X "

     << aAnimal->TheCenter.X << endl;

cout << "    New TheCenter.Y "

     << aAnimal->TheCenter.Y   << endl;

}

//Атрибуты дерева

void AtributesOfTree(TTree *aTree)

{

cout << " Дерево:" << endl;

cout << "   TheCenter.X "

     << aTree->TheCenter.X << endl;

cout << "   TheCenter.Y "

     << aTree->TheCenter.Y   << endl;

}

//Головная программа драйвера

int main()

{

TAnimal *AnimalActiv,*AnimalTemp,*AnimalTemp2;

TTree *TreePtr, *TreeTemp, *TreeTemp2;

TTrees *Trees;

TForage *Forage;

TAnimals *Animals;

// установить графический режим для дисплея

 int g_driver,g_mode;

detectgraph(&g_driver,&g_mode);

initgraph(&g_driver,&g_mode,"c:\\bc\\bgi");

 //Реализация тестов

 setcolor(0);

 setbkcolor(15);

TPoint aPoint,Coord;

 //Тест 1

 aPoint.X=240;      //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=300;

aPoint.Y=280;

TreePtr=new TTree(aPoint);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(1);

AtributesOfAnimal(AnimalActiv);

AtributesOfTree(TreePtr);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,1);

delete(Animals);

delete(TreePtr);

delete(Forage);

getch();

//Тест 2

 aPoint.X=240;                   //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=245;

aPoint.Y=280;

TreePtr=new TTree(aPoint);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(2);

AtributesOfAnimal(AnimalActiv);

AtributesOfTree(TreePtr);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,0);

delete(Animals);

delete(TreePtr);

delete(Forage);

getch();

/*

//Тест 3

 aPoint.X=240;            //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=245;            //Пассивное животное

aPoint.Y=285;

AnimalTemp2=new TAnimal(aPoint);

AnimalTemp->link=AnimalTemp2;

AnimalTemp=AnimalTemp->link;

aPoint.X=275;

aPoint.Y=280;

TreePtr=new TTree(aPoint);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(3);

AtributesOfAnimal(AnimalActiv);

AtributesOfAnimal(AnimalTemp);

AtributesOfTree(TreePtr);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,0);

delete(TreePtr);

delete(Animals);

delete(Forage);

getch();

 //Тест 4

 aPoint.X=240;        //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=345;         //Пассивное животное

aPoint.Y=285;

AnimalTemp2=new TAnimal(aPoint);

AnimalTemp->link=AnimalTemp2;

AnimalTemp=AnimalTemp->link;

aPoint.X=245;

aPoint.Y=280;

TreePtr=new TTree(aPoint);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(4);

AtributesOfAnimal(AnimalActiv);

AtributesOfAnimal(AnimalTemp);

AtributesOfTree(TreePtr);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,0);

delete(TreePtr);

delete(Animals);

delete(Forage);

getch();

 //Тест 5

 aPoint.X=540;        //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=345;        //Пассивное животное

aPoint.Y=285;

AnimalTemp2=new TAnimal(aPoint);

AnimalTemp->link=AnimalTemp2;

AnimalTemp=AnimalTemp->link;

aPoint.X=245;

aPoint.Y=280;

TreePtr=new TTree(aPoint);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(5);

AtributesOfAnimal(AnimalActiv);

AtributesOfAnimal(AnimalTemp);

AtributesOfTree(TreePtr);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,1);

delete(TreePtr);

delete(Animals);

delete(Forage);

getch();

 //Тест 6

 aPoint.X=540;      //Активное животное

 aPoint.Y=280;

Coord.X=aPoint.X;

Coord.Y=aPoint.Y;

AnimalTemp=new TAnimal(aPoint);

AnimalActiv=AnimalTemp;

aPoint.X=345;      //Пассивное животное

aPoint.Y=285;

AnimalTemp2=new TAnimal(aPoint);

AnimalTemp->link=AnimalTemp2;

AnimalTemp=AnimalTemp->link;

aPoint.X=345;

aPoint.Y=280;

TreeTemp=new TTree(aPoint);

TreePtr=TreeTemp;

aPoint.X=140;

aPoint.Y=180;

TreeTemp2=new TTree(aPoint);

TreeTemp->link=TreeTemp2;

TreeTemp=TreeTemp->link;

Trees=new TTrees(TreePtr);

aPoint.X=620; aPoint.Y=240;

Forage=new TForage(aPoint);

Animals = new TAnimals(AnimalActiv,Forage,TreePtr);

OutputNumberTest(6);

AtributesOfAnimal(AnimalActiv);

AtributesOfAnimal(AnimalTemp);

AtributesOfTree(TreePtr);

AtributesOfTree(TreeTemp2);

Animals->Moving();

NewAtributesOfAnimal(AnimalActiv);

OutputResults(AnimalActiv,Coord,1);

delete(Trees);

delete(Animals);

delete(Forage);

getch();

return 0;

}

ПРИЛОЖЕНИЕ 3.

Результаты тестов

-------  Тест № 1  ---------

Животное:

   TheCenter.X 240

   TheCenter.Y 280

Дерево:

  TheCenter.X 300

  TheCenter.Y 280

Животное :

   New TheCenter.X 259

   New TheCenter.Y 278

Факт: Было передвижение  Ожидается: Передвижение     OK !

-------  Тест № 2  ---------

Животное:

   TheCenter.X 240

   TheCenter.Y 280

Дерево:

  TheCenter.X 245

  TheCenter.Y 280

Животное :

   New TheCenter.X 240

   New TheCenter.Y 280

Факт: Передвижения небыло  Ожидается: Нет передвижения     OK !

-------  Тест № 3  ---------

Животное:

   TheCenter.X 240

   TheCenter.Y 280

Животное:

   TheCenter.X 245

   TheCenter.Y 285

Дерево:

  TheCenter.X 275

  TheCenter.Y 280

Животное :

   New TheCenter.X 240

   New TheCenter.Y 280

Факт: Передвижения небыло  Ожидается: Нет передвижения     OK !

-------  Тест № 4  ---------

Животное:

   TheCenter.X 240

   TheCenter.Y 280

Животное:

   TheCenter.X 345

   TheCenter.Y 285

Дерево:

  TheCenter.X 245

  TheCenter.Y 280

Животное :

   New TheCenter.X 240

   New TheCenter.Y 280

Факт: Передвижения небыло  Ожидается: Нет передвижения     OK !

-------  Тест № 5  ---------

Животное:

   TheCenter.X 540

   TheCenter.Y 280

Животное:

   TheCenter.X 345

   TheCenter.Y 285

Дерево:

  TheCenter.X 245

  TheCenter.Y 280

Животное :

   New TheCenter.X 541

   New TheCenter.Y 279

Факт: Было передвижение  Ожидается: Передвижение     OK !

-------  Тест № 6  ---------

Животное:

   TheCenter.X 540

   TheCenter.Y 280

Животное:

   TheCenter.X 345

   TheCenter.Y 285

Дерево:

  TheCenter.X 345

  TheCenter.Y 280

Дерево:

  TheCenter.X 140

  TheCenter.Y 180

Животное :

   New TheCenter.X 541

   New TheCenter.Y 279

Факт: Было передвижение  Ожидается: Передвижение     OK !

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.Технология программирования: Метод. Указания к курс. работе./ Владим. гос. университет; Сост.: И. Р. Дубов, В. А. Барков, А.Г. Долинин. Владимир, 1999. 48 с.

2.Герберт Шилд: Программирование на Borland C++. Минск 1998

3.Е.И. Козелл, Л.М. Романовская, Т.В. Русс и др.: От Си к С++. Москва 1993.


 

А также другие работы, которые могут Вас заинтересовать

72319. Интегрированные маркетинговые коммуникации. Эволюция понятия и основные элементы 27.14 KB
  Интегрированные маркетинговые коммуникации концепция совместного использования всех видов маркетинговых коммуникаций исходя из единых целей. Возникает эффект синергии который позволяет добиться эффективности труднодостижимой при использовании отдельных видов маркетинговых коммуникаций.
72320. Изучение удовлетворенности и неудовлетворенности потребителя. Метод изучения восприятия потребителем качества услуг, основанной на теории разрывов 38.85 KB
  Теоретики маркетинга считают, что удовлетворенный потребитель: вероятно, купит товар в следующий раз; будет делиться хорошими отзывами о товаре с другими людьми. Таким образом, потребитель будет выступать в роли личного источника информации, который, как известно, является наиболее эффективным.
72321. Антимонопольное законодательство РФ и иные НПА о защите конкуренции. Предмет и цели Закона о защите конкуренции. Сфера применения Закона о защите конкуренции 18 KB
  В соответствии с Законом о конкуренции на товарных рынках антимонопольное законодательство включает: Конституцию Российской Федерации; федеральные законы; указы Президента РФ; постановления и распоряжения Правительства РФ.
72322. Наука о правовом регулировании отношений в сфере конкуренции и монополий. Конкурентное право как отрасль юридической науки и учбеная дисциплина 15 KB
  Наука конкурентного права включает как деятельность по получению новых знаний так и её результат систему знаний об особенностях правового регулирования конкуренции. Таким образом наука конкурентного права содержит определенные утверждения о состоянии правового регулирования...
72323. Принципы правового регулирования конкуренции и монополий 30 KB
  Правовое регулирование конкуренции пронизывают основополагающие начала, то есть принципы конкурентного права. Они обеспечивают целенаправленное воздействие на конкуренцию и предпринимательскую деятельность её участников. Можно выделить общеправовые и специальные принципы регулирования конкуренции.
72324. Физиологические действия метеорологических условий на человека 15.56 KB
  Температура воздуха влияет на теплообмен. Низкая температура воздуха увеличивая теплоотдачу создает опасность переохлаждения организма возможность простудных заболеваний. Степень насыщения воздуха водяными парами называется влажностью.
72326. Терроризм и его проявления. Экстремальные ситуации социального характера 42.86 KB
  Терроризм -– насилие в отношении физических лиц или организаций а также уничтожение повреждение или угроза уничтожения повреждения имущества и других материальных объектов создающие опасность гибели людей. Если вы находитесь в местах большого скопления агрессивно настроенных людей митинги...
72327. Табачный дым, влияние табачного дыма на человека 13.34 KB
  Из них наиболее известен никотин – одно из самых ядовитых химических веществ из группы алкалоидов. Содержащийся в табаке никотин относится к ядам вызывающим сначала привыкание а затем болезненное влечение - токсикоманию.