Автор работы: Пользователь скрыл имя, 17 Января 2011 в 10:06, курсовая работа
Цель: создать объектно – Ориентированное приложение с использованием паттерна Factory Method(Фабричный метод).
Описание приложения: данное приложение выполняет отрисовку графических примитивов: сферы и куба с использованием методов OpenGL.
1.Краткое описание приложения.............................................................................
2.Исходный код
программы...............................................................................
3.Заключение..............................................................................
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Национальный исследовательский ядерный университет «МИФИ»
Технологический
институт-филиал НИЯУ
МИФИ
КАФЕДРА
Информационных технологий и прикладной математики
Руководитель: Артамкин C.Н.
____________
(подпись, дата)
КУРСОВАЯ
РАБОТА
по дисциплине
Объектно-ориентированное программирование
Тема:
«Разработка приложения в среде С++ с использованием паттерна Factory Method». |
(обозначение
документа)
Студент________________ Кошевников Е.А.
(подпись)
Группа 3АУ-38Д
Лесной 2010
Оглавление.
программы.....................
1.Краткое описание приложения
Цель: создать
объектно – Ориентированное приложение
с использованием паттерна Factory Method(Фабричный
метод).
Описание приложения:
данное приложение выполняет отрисовку
графических примитивов: сферы и
куба с использованием методов OpenGL.
2.Исходный код программы
//Курсовой проект с использованием паттерна фабричный метод
//Разработан
студентом 3АУ-38Д
#include "stdafx.h"
#include "windows.h"
#include "math.h"
#include "gl/gl.h"
#include "gl/glu.h"
#include "gl/glut.h"
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glut32.lib")
const float M_PI = 3.
static int w = 0, h = 0;
static float Angle = 0.0f;
static float Change = 0.0f;
static float Size = 0.0f;
// Абстрактны продукт
class Product {
public:
virtual void InitObject(float r, float num_polygon1, float num_polygon2) = 0;
};
//Конкретный продукт - сфера
class ConcreteProductA : public Product {
public:
void InitObject(float r, float num_polygon1, float num_polygon2){
glutWireSphere(r, num_polygon1, num_polygon2);
}
};
//Конкретный продукт - куб
class ConcreteProductB : public Product {
public:
void InitObject(float r, float num_polygon1, float num_polygon2){
glutWireCube(r);
}
};
//Абстрактный создатель
class Creator {
public:
virtual Product* factoryMethod() = 0;
};
//Конкретный создатель сферы
class ConcreteCreatorA : public Creator {
public:
Product* factoryMethod() {
return new ConcreteProductA();
}
};
//Конкретный создатель куба
class ConcreteCreatorB : public Creator {
public:
Product* factoryMethod() {
return new ConcreteProductB();
}
};
void Init(void) {
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
}
void Update(void) {
Creator* creators[2];
creators[0] = new ConcreteCreatorA();//новая сфера
creators[1]
= new ConcreteCreatorB();//новый куб
Angle += 0.5f;
Change
+= M_PI/200;
Size
= 30 * sin(Change);
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity();
gluLookAt(100.0f, 100.0f, 100.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f);
glRotatef(Angle, 0.0f, 1.0f, 0.0f);
Product *product1 = creators[0]->factoryMethod();
product1->InitObject(
glRotatef(Angle, 1.0f, 0.0f, 0.0f);
Product *product2 = creators[1]->factoryMethod();
product2->InitObject(60.
glFlush();
glutSwapBuffers();
delete creators[0];//удаляем объект сферу
delete creators[1];//удаляем объект куб
}
void Reshape(int width, int height) {
w = width;
h = height;
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
if(h == 0){
h = 1;
};
gluPerspective(65.0f,
w/h, 1.0f, 1000.0f);
glMatrixMode(GL_MODELVIEW);
}
int main(int argc, char *argv[]) {
glutInit(&argc, argv);
glutInitWindowSize(800, 600);
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
glutCreateWindow("Factory Method On OpenGL");
glutIdleFunc(Update);
glutDisplayFunc(Update);
glutReshapeFunc(Reshape);
Init();
glutMainLoop();
return 0;
}
3.Заключение
Цель работы
достигнута, поставленная задача выполнена.
Информация о работе Разработка приложения в среде С++ с использованием паттерна Factory Method