Автор работы: Пользователь скрыл имя, 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