Разработка приложения в среде С++ с использованием паттерна Factory Method

Автор работы: Пользователь скрыл имя, 17 Января 2011 в 10:06, курсовая работа

Краткое описание

Цель: создать объектно – Ориентированное приложение с использованием паттерна Factory Method(Фабричный метод).


Описание приложения: данное приложение выполняет отрисовку графических примитивов: сферы и куба с использованием методов OpenGL.

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

1.Краткое описание приложения.............................................................................
2.Исходный код
программы...............................................................................

3.Заключение..............................................................................

Содержимое работы - 1 файл

Пояснительная записка.doc

— 52.00 Кб (Скачать файл)

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Федеральное государственное  бюджетное образовательное  учреждение

высшего профессионального  образования

«Национальный исследовательский  ядерный университет  «МИФИ»

Технологический институт-филиал НИЯУ МИФИ 

КАФЕДРА

Информационных технологий и прикладной математики

 
 
Руководитель:  Артамкин C.Н.

____________

(подпись,  дата)

 
КУРСОВАЯ  РАБОТА

по дисциплине

Объектно-ориентированное  программирование

Тема:

«Разработка приложения в среде  С++ с использованием паттерна Factory Method».
 
 

(обозначение  документа) 
 

Студент________________ Кошевников Е.А.

      (подпись)

Группа 3АУ-38Д 

Лесной 2010

Оглавление.

  1. Краткое описание приложения.............................................................................
  2. Исходный код

         программы...............................................................................

  1. Заключение..............................................................................
 
 

 

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.1415926535897932384626433832795f;

 

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(Size, 25, 25); 

      glRotatef(Angle, 1.0f, 0.0f, 0.0f);

    Product *product2 = creators[1]->factoryMethod();

      product2->InitObject(60.0f, 0, 0); 

      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