Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба №2 МОЭВМ.doc
Скачиваний:
14
Добавлен:
01.05.2014
Размер:
293.38 Кб
Скачать

1.3. Построение системы объектов

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

Таким образом структура и взаимосвязь объектов будет выглядеть следующим образом:

1) Объект «Точка» предназначен для описания объектов «Отрезок», «Голова», «Тело» и «Остриё».

Атрибуты:

floatx,y– координаты точки;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CPoint(const float x, const float y) – говорящий конструктор

~CPoint()– говорящий деструктор

void SetXY(const float x, const float y) – установить координаты;

void GetXY(float &x, float &y) – получить координаты;

void MoveTodXdY (const float dx, const float dy) – передвинуть точку на dx и dy.

2) Объект «Отрезок» необходим для представления объекта «Тело».

Атрибуты:

СPointP1,P2 – Точки начала и конца;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CPiece (const CPoint P1, const CPoint P2); - говорящий конструктор

~CPiece() – говорящий деструктор

void SetPoint1 (const CPoint P0) – задать точку Р1;

void SetPoint2 (const CPoint P0) – задать точку Р2;

CPoint GetPoint1 ( ) const – получить точку Р1;

CPoint GetPoint2 ( ) const – получить точку Р2;

void MoveTodXdY (const float dx, const float dy) – передвинуть отрезок на dx и dy.

3) Объект «Головка» необходим для представления объекта «Изображение».

Атрибуты:

floatR– значение радиуса центра;

CPointP– координаты центра

CShlicshlic– шлиц;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CHead (const CPoint P, const CShlic S, const float R); - говорящий конструктор

~CHead() – говорящий деструктор

void SetR(const float x) – установить координаты;

void SetP(const CPoint x) – установить радиус;

void SetShlic(const CShlic &p) – установить шлиц

voidGetR(float&x) – получить радиус;

CPoint GetP() – получить центр;

CShlicGetShilc() – получить шлиц

voidMoveTodXdY(constfloatdx,constfloatdy) – передвинуть головку наdxиdy.

4) Объект «Шлиц» необходим для представления объекта «Головка».

Атрибуты:

СPointP1,P2 – Точки начала и конца;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CShlic (const CPoint P1, const CPoint P2); - говорящий конструктор

~CShlic() – говорящий деструктор

void SetPoint1 (const CPoint P0) – задать точку Р1;

void SetPoint2 (const CPoint P0) – задать точку Р2;

CPoint GetPoint1 ( ) const – получить точку Р1;

CPoint GetPoint2 ( ) const – получить точку Р2;

void MoveTodXdY (const float dx, const float dy) – передвинуть шлиц на dx и dy.

5) Объект «Тело» необходим для представления объекта «Изображение».

Атрибуты:

floatHt– значение высоты прямоугольника тела;

floatW– значение ширины;

floatN; - количество резьбовых рисок на тележ

CPointP– координаты середины верхней стороны;

CListL– список, содержащий отрезки резьбы;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CBody (const CPoint P, const float Ht, const float W, const float N); - говорящий конструктор

~CBody() – говорящий деструктор

void SetPoint (const CPoint P0) – задать точку Р;

void SetHeight (const float x) – задать высоту тела;

void Set Width (const float x) – задать ширину тела;

CPoint GetPoint ( ) const – получить точку Р;

float x GetHeight ( ) const – получить высоту;

float x Get Width ( ) const – получить ширину;

CList*GetList( )const– получить копию списка отрезков резьбы;

void MoveTodXdY (const float dx, const float dy) – передвинуть тело на dx и dy.

6) Объект «Остриё» необходим для представления объекта «Изображение».

Атрибуты:

СPiece P– отрезок основания острия;

float Ho – высота острия

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CEdge (const CPiece P0, const float Ho); - говорящий конструктор

~CEdge() – говорящий деструктор

void SetP (const CPiece P) – задать отрезок P;

void SetHeight (const CPoint P) – задать точку Рoint;

CPointGetP( )const– получить точку Р;

floatxGetHeight( )const– получить значение высоты;

void MoveTodXdY (const float dx, const float dy) – передвинуть остриё на dx и dy.

7) Объект «Элемент списка» был разработан в лабораторной работе №1. Так как в качестве проблемной части может выступать как отрезок, так и изображение, то целесообразно ввести шаблон класса, что и было сделано.

Data*data– указатель на проблемную часть;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

8) Объект «Линейный список» служит для описания объектов «Тело» и «Изображение».

Атрибуты:

CElem*first– указатель на первый “элемент списка”;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CList (); - говорящий конструктор

~CList() – говорящий деструктор

Add_back(CElem*p_elem) – вставить элемент в список;

Erase( ) – очистить список;

9) Объект «Изображение» является основным объектом.

Атрибуты:

СHead head – головка;

CBody body – тело;

CEdge edge – острие;

BOOLIsTwisted– признак того, вкручен шуруп или нет;

CListPoints– список характерных точек шурупа;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CImage (); - говорящий конструктор

~CImage() – говорящий деструктор

voidSetHead(constСHead&h) – установить головку изображения шурупа

void SetBody(const CBody &b) – установить тело

void SetEdge(const CEdge &e) – установить острие

СHeadGetHead() – получить головку

CBodyGetBody() – получить тело

CEdgeGetEdge() – полчить остриё

void MoveTodXdY (const float dx, const float dy) – передвинуть шуруп

vaidAddPointToList(CPoint&P) – добавить точку в список

void Twirl () – вкрутить шуруп

void Unscrew () – выкрутить шуруп

PrintImage( ) – вывести изображение на экран.

10) Объект «Набор изображений» является основным объектом.

Атрибуты:

CMListmlist– Мультисписок набора шурупов, содержащий в себе поднаборы

вкрученных и невкрученных шурупов;

const unsigned int id – идентификатор объекта;

static unsigned int counter – счетчик “живых” объектов;

static unsigned int counter_all – счетчик всех объектов.

Методы:

CNImage (); - говорящий конструктор

~CNImage() – говорящий деструктор

Add_back(CElem*p_elem) – вставить элемент в список;

ClrImage( ) – очистить список;

voidMoveTodXdY(constfloatdx,constfloatdy) – передвинуть все изображения набора

PrintImage( ) – вывести список изображений на экран.