Отношения между классами: агрегация, обобщение, зависимость (Лабораторная работа № 4)

Страницы работы

Содержание работы

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

ГОУ ВПО

НГТУ

Лабораторная работа №4

Отношения между классами: агрегация, обобщение, зависимость

Факультет: ПМИ

Группа: ПМ-55

Студент: Быданов А.А.

Преподаватель: Еланцева И.Л

Дата сдачи:

Новосибирск 2006г.


1. Постановка задачи

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

– абстрактный класс «Фигура», содержащий чисто виртуальные функции;

– класс «Закрашенный», позволяющий задать параметры закраски и осуществить закраску;

– класс «Фигура-контур» потомок класса «Фигура» (на основе класса, разработанного в лабораторной работе №2);

– класс «Закрашенная фигура» потомок класса «Фигура-контур». Класс «Закрашенный» при этом использовать либо как второго родителя (множественное наследование), либо как часть класса «Закрашенная фигура» (агрегация);

– класс «Комбинированная фигура», реализующий две вложенные фигуры, с закраской между ними.

Фигура – трапеция.

2. Описание классов

Figure

Figure()- конструктор

 ~Figure() - деструктор

 virtual draw() - рисует фигуру(ромб)

 calculation() - считает координаты вершин ромба

 enter(int x,int y,int lx,int ly,int alf) – ввод данных – координаты точки

пересечения диагоналей, их длины, угол наклона почасовой стрелке

Color

Color()- конструктор

 ~Color()- деструктор

options(int gm) – установка графических опций (для заливки +толщина и цвет

линии)

filling(int x,int y) – заливка, x,y – координаты заливки

Figcont

Figcont()- конструктор

~Figcont()- деструктор

draw() - рисует контур ромба

options(int gm) – устанавливает графические опции (для линий)

Colorfig

Colorfig() - конструктор

 ~Colorfig() - деструктор

 draw() – рисует закрашенный ромб

Dupfig

Dupfig();- конструктор

~Dupfig();- деструктор

void draw() {Figure::draw();Color::filling(xo,yo);} – рисует закрашенный ромб

(внешний)

void draw2() – рисует внутренний ромб

void dup(int x,int y,int lx,int ly,int alf) – рисует два вложенных ромба,

требуется ввести параметры внутреннего ромба


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

Файл: multclas.cpp

#include <graphics.h>

#include <stdlib.h>

#include <stdio.h>

#include <conio.h>

#include <math.h>

//---Figura

class Figure

{public:

 int xo,yo,dx,dy,angle,x[4],y[4];

 Figure();

 ~Figure();

 virtual void draw();

 void calculation();

 void enter(int x,int y,int lx,int ly,int alf);

};

 Figure::Figure()

 {};

 Figure::~Figure()

 {};

void Figure::enter(int x,int y,int lx,int ly,int alf)

{xo=x;

 yo=y;

 dx=lx;

 dy=ly;

 angle=alf;

 calculation();

}

void Figure::calculation()

{float cx, sx, cy, sy;

 cx=dx*cos(angle*0.0175);

 sx=dx*sin(angle*0.0175);

 sy=dy*sin(angle*0.0175);

 cy=dy*cos(angle*0.0175);

 x[1]=xo-cx;

 y[1]=yo-sx;

 x[2]=xo+sy;

 y[2]=yo-cy;

 x[3]=xo+cx;

 y[3]=yo+sx;

 x[4]=xo-sy;

 y[4]=yo+cy;

}

void Figure::draw()

{line (x[1],y[1],x[2],y[2]);

 line (x[2],y[2],x[3],y[3]);

 line (x[3],y[3],x[4],y[4]);

 line (x[4],y[4],x[1],y[1]);

};

//---Zalivka

class Color

{public:

 int  fl,cl,tf,cf;

 Color();

 ~Color();

 void options(int gm);

 void filling(int x,int y);

};

Color::Color()

{fl=1;

 cl=7;

 tf=1;

 cf=15;

 setcolor(cl);

 setlinestyle(0,0,fl);

};

Color::~Color()

{};

void Color::options(int gm)

{int a;

 restorecrtmode();

 do{

 clrscr();

 printf ("LINE:\n 1 - Fat (1 or 3)\n 2 - Color\n\nFILL:\n 3 - Type\n 4 - Color\n\n 0 - Back\n");

 scanf ("%d",&a);

 switch (a)

 {case 1: clrscr();printf ("1 or 3\n\n");

            scanf ("%d",&fl); break;

case 2: clrscr();printf ("1 - Blue\n2 - Green\n3 - Gray\n4 - Red\n5 - Magenta\n6 - Brown\n7 - LightGray\n8 - DarkGray\n9 - LightBlue\n10 - LightGreen\n11 - LightCyan\n12 - LightRed\n13 - LightMagenta\n14 - Yellow\n15 - White\n\n");

            scanf ("%d",&cl); break;

case 3: clrscr();printf ("1 -- Solid fill\n2 -- Line fill -- ||\n3 -- LtSlash -- //\n4 -- Slash -- ///\n5 -- BkSlash -- \\\ \n6 -- LtBkSlash -- \\ \n7 -- Hatch fill -- +\n8 -- XHatch fill -- x\n9 -- InterLeave fill\n10 - Wide Dot fill - ..\n11 - Close Dot fill - ::\n\n");

            scanf ("%d",&tf); break;

Похожие материалы

Информация о работе