Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
готовый отчет курсовая 2011.doc
Скачиваний:
6
Добавлен:
05.12.2018
Размер:
1.18 Mб
Скачать

Проектирование программы

1. Общая схема программы

Программа состоит из следующих файлов:

  • NEW_KURS.exe – исполняемый файл;

  • NEW_KURS.cpp – файл, содержащий исходный текст программы;

  • Egavga.bgi, Graphics.h, Graphics.lib – файлы графических модулей, предназначены для поддержки графического режима программы;

В данной программе были созданы базовые классы: kletka_pust, pair, common. Класс kletka_pust является базовым классом для наследников или производных классов kletka_cross и kletka_nolik. Класс common по своей структуре является самым важным и основным для всей программы.

Назначение данных классов представлено в таблице 1.1.

Название класса

Назначение класса

Класс common

Является «скелетом» программы, состоящий из пятнадцати методов. Методы описывают как графический интерфейс, так и алгоритмы программы. Взаимодействие класса с главной функцией осуществляется посредством объекта tic, созданного в ней.

Класс kletka_pust

Предназначен для отрисовки крестиков и ноликов. Класс содержит метод paint, который наследуют его потомки.

Класс kletka_cross

Является наследником класса kletka_pust и предназначен для отрисовки крестиков. Взаимодействие этого класса в методе game класса common осуществляется с помощью объекта cr.

Класс kletka_nolik

Является наследником от базового класса kletka_pust и предназначен для отрисовки ноликов. Взаимодействие этого класса в методе game класса common осуществляется с помощью объекта kr.

Класс pair

Специально созданный класс для переопределения стандартной операции инкремента (++). Взаимодействует c главной функции main через объект ob.

Таблица 1.1. Функции классов

2. Наследование класса kletka_pust

Наследование, представленное в программе относиться к простому наследованию, когда существуют один базовый класс и несколько потомков. Класс kletka_pust являеться базовым для классов kletka_cross и kletka_nolik. Рассмотрим подробно структуру:

class kletka_pust

{

protected:

int fieldsX,fieldsY;

int s;

public:

kletka_pust(){}; // конструктор по умолчанию

kletka_pust(int x1,int y1)

// инициализация членов класса в конструкторе

{

fieldsX=x1;

fieldsY=y1;

}

~kletka_pust(void) // деструктор по умолчанию

{

}

virtual void paint(int g,int h,int iSizeFl) // виртуальный метод

{

}

};

Члены класса fieldsX, fieldsY, s объявлены как protected, то есть как защищенные элементы, которые доступны базовому классу и его потомкам. Члены класса, объявленные в конструкторе kletka_pust, имеют общий доступ public. Это необходимо для доступа этих элементов в других классах этой программы. Метод класса paint является виртуальным (virtual), что означает, что он переопределяется в классах-наследниках kletka_cross и kletka_nolik. И не обязательно знать точный тип объекта для работы с ним через виртуальный метод: достаточно лишь знать, что объект принадлежит классу или наследнику класса, в котором метод объявлен.

Виртуальный метод paint представляет собой одну из форм полиморфизма. Таким образом, создается общий код, который позволяет работать как с объектами базового класса kletka_pust, так и с объектами его классов-наследников kletka_cross и kletka_nolik.

Базовый класс kletka_pust определяет способ работы с объектами, и его наследники kletka_cross и kletka_nolik предоставляют свою реализацию этого метода.

В классе kletka_cross метод paint реализует отрисовку крестиков и через объект, созданный в методе game класса common используется, когда необходимо нарисовать крестик.

В классе kletka_nolik метод paint реализует отрисовку ноликов и через объект, созданный в методе game класса common используется, когда необходимо нарисовать нолик.