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

Курсовая работа


Курсовая работа состоит из одного задания. Вид графического объекта, движение которого надо будет реализовать в работе, выбирается согласно своему варианту (см. далее таблицу вариантов).

Задание: есть 2 варианта задания, можете выбрать любой из них

Вариант 1.
Написать программу, используя объектно-ориентированный подход, которая двигает по экрану изображение заданного графического объекта.
Допускается: замена некоторых элементов графического объекта, изменение его цветовой гаммы.
Реализовать два вида движения: случайное и по нажатию на клавиши со стрелками. Предусмотреть для пользователя возможность выбора одного из двух режимов движения.
Описание классов желательно оформить в виде отдельного модуля. Иерархия классов должна включать минимум четыре класса, один из которых – абстрактный.
Язык и среда программирования – Ваш выбор. Можете выполнять работы на языке Паскаль, С++, С# или Java.

Вариант 2.
Написать программу, используя объектно-ориентированный подход. Тему выбираете самостоятельно. Описание классов желательно оформить в виде отдельного модуля. Иерархия классов должна включать минимум четыре класса, один из которых – абстрактный.
Язык и среда программирования – Ваш выбор. Можете выполнять работы на языке Паскаль, С++, С# или Java.
Рекомендации см. для варианта 1.
Предлагаю следующие темы задания:

1. Реализовать игру «морской бой». (графический режим)
2. Редактор формул в графическом режиме (скобки, дроби, возведение в степень, сложение, вычитание, умножение, деление, элементарные функции). (могут выполнять до двух человек в группе)
3. Создать систему объектов, представляющую контингенты студентов учебного заведения. Программа осуществляет выбор заданного контингента из общего списка.
4. Визуальная реализация состояния двусвязного списка и кругового списка.
5. Англо-русский словарь с использованием АВЛ-дерева. Дерево должно быть описано как потомок объекта Двоичное дерево. В качестве методов должны быть описаны функция вычисления высоты, поиск заданного элемента, вставка и удаление узла.
6. П. 5. с использованием ДБ-дерева.
7. Смоделировать движение планет вокруг Солнца. Планеты имеют различные размеры, цвет, скорость, траектории (эллипсы).
8. Круговое движение с вращением составного графического объекта.
9. Круговое движение с вращением произвольного составного графического объекта.
10. Движение составного графического объекта, управляемого с клавиатуры с помощью стрелок.
11. Реализовать игру «крестики-нолики» в графическом режиме.
12. Реализовать игру рэндзю, реверси, или го в графическом режиме.
13. Реализовать игру «Тетрис» в текстовом или в графическом режиме.
14. Отобразить базу данных на экран в виде таблицы 20 строк на 5столбцов. Осуществляется навигация кнопками стрелки, PgUp, PgDn, Home, End, 1,2,3,4,5 (выбрать столбец для сортировки), поиск записи по заданному ключу.
15. Написать программу ввода записи в базу данных. В качестве объектов должны быть поля базы данных с методами ввода и отображения информации.
16. Разработать объект «змейка». «Змейка» состоит из последовательности символов. Управление головой «змейки» должно осуществляться нажатием клавиш со стрелками. Движение прекращается, если голова упирается в хвост.
17. Игра «змейка» для двух человек. Проигрывает тот, у кого «змейка» остановится первая. Желательно сделать несколько раундов в игре. (см. п. 13)
18. Разработать иерархию диалоговых полей ввода строки, целого числа, вещественного числа и т.д. Сделать выбор строки (значения) из заданного множества.
19. С помощью ООП разработать возможную реализацию некоторого компьютерного мира. Обитатели такого мира могут иметь различную форму, быть подвижными и неподвижными, быстрыми и медленными, могут размножаться, скрещиваться, нападать и защищаться и т.д. (выполнять могут до трех человек в группе)
20. Нарисовать АВЛ-дерево.
21. Нарисовать ДБ-дерево.
22. Нарисовать двоичное дерево.
23. Разработать объект «Меню», управляемый с помощью кнопок.
24. Нарисовать круговую диаграмму по вводимым данным.
25. Смоделировать битву двух противников.
26. Смоделировать движение шариков в замкнутом сосуде (форма сосуда может быть различной). Шарики двигаются прямолинейно с отражением от стенок сосуда и от других шариков.
27. Описать объект строка, инкапсулирующий методы для работы со строками.
28. Создать простейший векторный графический редактор для рисования линий, различных геометрический фигур, заливки и т.д.

=============================================

Лабораторная работа №1

Тема: Принцип инкапсуляции. Описание класса.

Задание:
Часть 1. Описать класс tPoint, инкапсулирующий основные свойства и методы точки на плоскости. При написании программы на С++ или С# инициализировать поля с помощью конструктора (объявить два конструктора: по умолчанию и с параметрами). Создать массив из 100 точек. Нарисовать точки случайным образом случайным цветом на экране.
Часть 2. Сделать защиту полей класса (т.е. работать с полями в основной программе не напрямую, а используя соответствующие методы записи в поле и чтения из поля). Добавить методы движения точек: случайное движение, движение по нажатию клавиш со стрелками.

Лабораторная работа №2

Тема: Принцип наследования. Статические методы.

Задание:
Создать иерархию графических классов в соответствии с рисунком (или использовать свой вариант). Описания классов желательно оформить в отдельном модуле.

ТОЧКА ОКРУЖНОСТЬ ЭЛЛИПС

ОТРЕЗОК ТРЕУГОЛЬНИК

ПРЯМОУГОЛЬНИК

Добавить методы движения фигур (в каждый класс). Использовать статические методы.
Написать программу, позволяющую выбирать фигуру для движения и вид движения: случайный или с помощью стрелок. Подключить к этой программе созданный модуль с описанием графических классов (если классы были выделены в отдельный модуль).

Лабораторная работа №3

Тема: Принцип полиморфизма. Использование виртуальных методов.

Задание:
Внести следующие изменения в программу, разработанную в лабораторной работе №2:
Использовать общий метод движения фигур, описанный в родительском классе самого верхнего уровня иерархии (т.е. описание самого метода движения Move убрать из всех классов, кроме самого верхнего родительского).
Использовать виртуальные методы для корректной работы программы после внесенных изменений.
!!! Номер варианта определяется по двум последним цифрам пароля
Обсудим вашу работу?
При заказе дарим онлайн-тест!
Заполните форму
и мы свяжемся с вами за 2 часа