Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабораторная работа 2 / Sketcher02 / shapes / Shape
.h// Copyright (C) 1991 - 1999 Rational Software Corporation
#if defined (_MSC_VER) && (_MSC_VER >= 1000)
#pragma once
#endif
#ifndef _INC_SHAPE_46F50BDC00BB_INCLUDED
#define _INC_SHAPE_46F50BDC00BB_INCLUDED
//////////////////////////////////////////////////////////////////////////
class ostream;
#include "..\Elements.h"
//////////////////////////////////////////////////////////////////////////
//обобщенная фигура
class Shape
: public CElement
{
private:
//счетчик объектов
static int _counter;
//идентификатор объекта
int _id;
protected:
//абсцисса фигуры. все фигуры по умолчанию появляются в начале координат
float _x;
//ордината фигуры. все фигуры по умолчанию появляются в начале координат
float _y;
Shape(float x, float y);
//вывести состояние фигуры в поток
virtual std::ostream& speak(std::ostream& os) const;
public:
//идентификатор типа объекта
virtual int getType() const = 0;
//идентификатор фигуры используется при сериализации документа
const int get__id() const;
Shape();
virtual void Serialize(CArchive& ar);
//рисует идентификатор фигуры
void drawID(CDC* pDC, bool isIdVisible = true) const;
//изменяет размер фигуры
virtual void resize(CPoint Start, CPoint End);
virtual void Move(CSize& aSize);
virtual ~Shape();
//получить ординату фигуры
const float get__y() const;
//задать ординату фигуры
void set__y(float value);
//получить абсциссу фигуры
const float get__x() const;
//задать абциссу фигуры
void set__x(float value);
//оператор вывода в поток
friend std::ostream& operator<<(std::ostream& o, const Shape& rhs);
virtual bool operator==(const Shape& rhs) const;
//перенести фигуру в заданную точку
void moveToPoint(float x_pos, float y_pos);
//вычисляет площадь фигуры
virtual float Area() const = 0;
};
//////////////////////////////////////////////////////////////////////////
#endif /* _INC_SHAPE_46F50BDC00BB_INCLUDED */
Соседние файлы в папке shapes