Министерство Образования Российской Федерации
Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»
Кафедра МО ЭВМ
Предмет Объектно ориентированное программирование.
Лабораторная работа №2
Выполнил: студент группы №3341 Факультета КТИ
Волков А.Н.
Проверил:
Санкт-Петербург
2006 год.
Постановка задачи.
Содержательная постановка задачи.
Реализовать минимальный необходимый набор классов для работы с какой-нибудь геометрической фигурой и со списком произвольного типа. Разработать программу, позволяющую тестировать созданные классы.
Уточнение постановки задачи.
В качестве основного объекта выбран квадрат, задающийся левой верхней точкой и стороной. В программе решено реализовать циклический список.
Сценарий диалога с пользователем.
Тестирующая программа выполняет необходимые действия по тестированию методов классов и выводит текущие результаты на экран.
Разработка программы.
Разработка классов
Были разработаны необходимые для реализации Квадрата класс точка и класс квадрат.
Для них были заданы стандартные действия над геометрическими фигурами.
Для реализации списка были использованы шаблоны для списка и его элемента.
Шаблоны были использованы для упрощения пользования классами списка, который необходим и применим для разных классов.
Это упрощает дальнейшее их использование.
Описание программы. Классовая структура.
В программе разработаны 4 класса:
-
класс «cPoint» - реализация точки
-
класс «cFig» - реализация квадрата
-
класс «cLEl» - реализация элемента списка
-
класс «cList1» - реализация циклического списка
cPoint |
|||
члены-данные |
члены-функции |
||
double x |
Декартова абсцисса |
void inv |
Инвариант |
double y |
Декартова ордината |
void GetXY |
Селектор |
Int quantity |
Кол-во объектов |
void SetXY |
Модификатор |
|
|
void Move |
Перемещение точки |
|
|
void Rotate |
Поворот точки |
|
|
void Mirror |
Зеркальное отображение |
|
|
double GetX |
Селектор абсциссы |
|
|
double GetY |
Селектор ординаты |
|
|
Int getquantity |
Селектор кол-ва объектов |
ListEl |
|||
члены-данные |
члены-функции |
||
Typer Date |
Данные |
Void GetFig |
Селектор данных |
ListEl* Next |
Ссылка на след. |
ListEl* GetNext |
Селектор ссылки на следующий |
|
|
void GetNext |
Селектор ссылки на следующий |
|
|
void SetDate |
Модификатор данных |
|
|
void SetNext |
Модификатор ссылки на след. |
List |
|||
члены-данные |
члены-функции |
||
ListEl* First |
Указатель на первый |
void move |
Перемещение по списку |
ListEl* current |
Указатель на текущий |
Void add |
Добавление элемента |
|
|
Void del |
Удаление элемента |
|
|
Void out |
Вывод списка на экран |
|
|
void GetCur |
Извлечение текущего |
|
|
void GetInf |
Селектор |
|
|
Void tobegin |
Возвращение в начало списка |
|
|
int Empty |
Проверка на пустоту списка |
cFig |
|||
члены-данные |
члены-функции |
||
cPoint |
Точка, задающая квадрат |
float GetX |
Селектор абсциссы |
double |
Сторона квадрата |
float GetY |
Селектор ординаты |
|
|
void Move |
Перемещение треугольника |
|
|
void Rotate |
Поворот треугольника |
|
|
void Scale |
Масштабирование треугольника |
|
|
void Set |
модификатор |