48725

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

Курсовая

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

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

Русский

2013-12-26

172.5 KB

3 чел.

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

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

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

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

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

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

Вариант №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.


 

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

54831. Видатні педагоги про збереження здоров’я дитини 269.5 KB
  Але для того щоби насолоджуватися скарбами природи людина має бути здоровою сильною та розумною. Павлов Зміцнити здоровя людини в дитинстві не допустити щоб дитина вступила в юність кволою і млявою це означало дати їй усю повноту життєвих радощів В. Особливого значення набуває формування гармонійно розвиненої суспільно активної фізично досконалої здорової особистості.
54832. Современные педагогические инновации и их реализация 117 KB
  Философское понимание содержания инноваций лежит в создании нового продукта деятельности человека которая имеет общественную значимость и характеризуется двумя признаками: преобразованием явлений вещей процессов и др. обучение не только способствует образования но и формирует личность человека. Как важно в наше нелегкое время время разрушения всех идеалов и принципов сотворить из наших воспитанников человека. Рефреном звучат слова великого украинского педагога: В воспитании самого себя главное – это воля самого человека...
54833. Психологічний супровід учня при переході до школи ІІ ступеня 71.5 KB
  Мета: визначення ознак дезадаптації дітей у перехідний період; взаємодія та взаємне прийняття індивідуальних станів учителів початкової та середньої ланки; вміння формування здорового психологічного клімату у дитячому колективі; навчатися організаційних прийомів навчальних стратегій щоб допомогти учням які відчувають труднощі; формувати вміння вчителів злагоджено й ефективно працювати над виконанням творчого завдання. Завдання: визначити особисте бачення педагога відповідальності; визначити...
54834. Апаратне та програмне забезпечення ПЕОМ 1.33 MB
  Розроблена методика проведення сучасного проблемного лекційного заняття з елементами метода проектів ділової гри з використанням комп’ютерних презентацій створених студентами методів: мозкового штурму груповий метод генерації якомога більшої кількості можливих способів розв’язань особистої аналогії стратегія вирішення проблеми запропонована Гордоном де студент уявляє себе безпосереднім учасником проблеми що досліджується.Левченко ПЛАН ЗАНЯТТЯ Тема заняття: Апаратне та програмне забезпечення ПЕОМ Мета заняття: Дидактична: освоїти...
54835. WHAT SORT OF PEOPLE ARE WE? 66 KB
  We live on the planet called the Earth. Does our planet differ from other planets of our Solar system? It certainly does. There is life on it and it is inhabited by human beings called people. Can we say that all people are alike? Of course, no. We are all so different. And it is quite impossible to find two similar persons.
54836. Life of a Society. People Make History 52.5 KB
  Specific: to teach students to take responsibility for their own learning to summarize the topical material to practise filling in questionnaire to teach students to think in detail about what they have learnt Materials: questionnaires, list of prominent people
54837. ПЕРЕБУДОВА В РАДЯНСЬКОМУ СОЮЗІ І УКРАЇНА 191 KB
  МЕТА: ознайомити учнів з процесами які відбувалися в період 80х рр. в Радянському Союзі та їх вплив на розвиток України; розвивати вміння учнів вести самостійну дослідницьку діяльність вміти систематизувати здобутий матеріал та вміти виділяти головне; формувати почуття толерантності та вміння аргументувати власну позицію робити висновки; виховувати громадянську свідомість та повагу до історичного минулого своєї держави. І вид роботи: 12 учнів виконують тестування на комп’ютерах 18 запитань. Прослухати для відновлення запис...
54839. Подвигу народу жити у віках 838.5 KB
  Поки ще живі свідки тих часів її учасники ми покликані залишити у свідомості студентів жах тих днів розкрити звірства фашистів показати приклади героїзму українського народу в діючій армії в тилу ворога Рух Опору та самовіддану працю мирного населення в евакуації. Студент: Гитлер составил план уничтожения славянских народов в первую очередь русского украинского и белорусского. Студент: Мы знаем что ныне лежит на весах И что совершается ныне. Ахматова Студент: В...