13 авг. 2010 г.

Включение Логотип

Задание

Создать класс Logo7 фигуры, вид которой показан на рисунке. В конструкторе класса Logo7 задается начальное положение и размер фигуры. Объекты этого класса должны отображаться на экране при вызове метода draw и перемещаться при вызове метода move_to. Использовать отношение агрегации между классом Logo7 и классами элементарных фигур (окружность, эллипс, линия, треугольник, точка). Создать объекты класса Logo7 (различных размеров и положений), переместить их на экране и прочертить. 


Скриншот 1

Немного о включении

В программировании под агрегированием (так же называемым композицией и включением) подразумевают методику создания нового класса из уже существующих классов. Об агрегировании также часто говорят как об «отношении принадлежности» по принципу «у машины есть корпус, колеса и двигатель».
Вложенные объекты нового класса обычно объявляются закрытыми, что делает их недоступными для прикладных программистов, работающих с классом. С другой стороны, создатель класса может изменять эти объекты, не нарушая работы существующего клиентского кода. Кроме того, замена вложенных объектов на стадии выполнения программы позволяет динамически изменять её поведение. Механизм наследования такой гибкостью не обладает, поскольку для производных классов устанавливаются ограничения, проверяемые на стадии компиляции.
На базе агрегирования реализуется методика делегирования, когда поставленная перед внешним объектом задача перепоручается внутреннему объекту, специализирующемуся на решении задач такого рода.

Class Logo7 и дополнительные возможности

Главный класс в программе выглядит следующим образом:
1class Logo7:public figure{
2public:
3    Logo7(int cx, int cy);
4    void ResizeTo(int cx, int cy);
5    virtual void draw(HDC)const;
6protected:
7    triangle tr_left, tr_right;//включение классов треугольников
8    ellipse el;//включение класса эллипс
9};
Функция ResizeTo() дает возможность перерисовать заного объект, т.е изменять его размер. В процессе перерисовки также изменяется режим рисования. Результат работы даной функции можно увидить на рисунке ниже.

Содержание архива:

  • файл проэкта и все необходимые .cpp файлы
  • отчет в формате .doc
  • .exe файл в папке debug
Проект разработан в: visual studio 2008