Лабораторная работа 4. «Круги на форме»
Общие требования ко всем лабораторным работам.
- Программные требования:
- обязательны комментарии к коду, стиль отступов, именований переменных и функций (любой стиль PEP 7 или подобный)
- отладочный вывод в консоль в большинстве методов (Л.Р.1,3,5)
Лабораторная работа 1. «Объекты и Классы»
Тип приложения: консольное; язык: c++.
Определение и реализация тестовых классов, и написание программы, иллюстрирующей их использование (код, делающий нечто, и при этом обязательный отладочный вывод в консоль, для контроля того, какие методы вызываются).
Лабораторная работа должна включать несколько программ, не стоит пытаться писать все сразу в одну программу и строго последовательно. Например, сначала стоит написать определение и реализацию простого объекта, создать его статически и динамически, проверить вызов атрибутов и методов. Затем определить конструкторы и деструкторы и проверить их работу. Затем научиться определять классы-наследники. Затем научиться перекрывать методы и создавать виртуальные методы и проверить их использование, и так далее.
- Определения
- классов
- атрибутов, методов
- классов-наследников
- конструкторов (обязательно несколько: без параметров, с параметрами, с параметром-объектом того же класса), деструкторов
- доступности атрибутов и методов (показать, как влияют модификаторы private, protected, public)
- Реализация
- методов объектов
- реализация методов сразу в определении или после определения
- конструкторов, деструкторов
- Создание и использование (обращение к атрибутам, вызов методов)
- статически создаваемых объектов («MyClass obj;»)
- динамически создаваемых объектов («MyClass *obj = new MyClass();»)
- объектов с помощью различных конструкторов
- помещение объектов в переменные различных типов
- объектов классов-наследников (проверить и продемонстрировать, какие конструкторы классов при этом вызываются)
- композиция объектов (атрибутом одного объекта класса A является другой объект класса B, создаваемый в конструкторе класса A и уничтожаемый в деструкторе класса A)
- Уничтожение
- статически созданных объектов
- динамически созданных объектов
- объектов классов-наследников (проверить и продемонстрировать, какие деструкторы классов при этом вызываются)
В рамках лабораторной работы необходимо написать достаточно примеров, чтобы разобраться и понимать, например, суть того, что будет, если:
- в классе-предке есть конструктор и деструктор, а в классе-потомке нет ни того, ни того; что происходит при создании предка, при создании потомка?
- в классе-предке и в классе потомке есть и конструкторы и деструкторы: в каком порядке они вызываются при создании и удалении объекта?
- в переменную-указатель на базовый класс поместить объект-потомок: какие методы можно вызывать, какие нет?
Лабораторная работа 2. «Кнопки и Формы»
Тип приложения: GUI; язык: без ограничений.
Создание простейшего приложения с графическим интерфейсом пользователя (GUI) в любой среде (Visual Studio - Windows Forms Application; C++ Builder - VCL Application).
- Создание простейшего приложения с GUI
- форма
- меню, пункты меню
- добавлять на форму разнообразные стандартные объекты и изучать их свойства, влияющие на внешний вид и поведение
- Управление простейшими событиями (при происходящих событиях должна появляться какая-либо реакция приложения, позволяющая понять, что событие произошло)
- нажатие мыши
- выбор пункта меню
- нажатие клавиши
- перерисовка
- Управление событиями, влияние объектов друг на друга (при каком-либо событии, связанным с одним объектом, должно что-то меняться в другом объекте)
- Динамическое создание и уничтожение объектов интерфейса:
- создание элементов интерфейса как реакция на события: при нажатии мышкой на любое место на форме, должен создаваться объект любого типового класса (например, кнопка).
В рамках лабораторной работы необходимо изучить (знать, для каких целей используются и как работают) все стандартные элементы управления:
- В случае Visual Studio - Windows Forms Application: все компоненты с закладок «Стандартные элементы управления», «Контейнеры».
- В случае C++ Builder - VCL Application: все компоненты с закладок «Standard», «Additional», «Win32», «System».
Лабораторная работа 3. «Хранилище»
Тип приложения: консольное; язык: без ограничений.
Определение и реализация класса хранилища разнообразных объектов (принадлежащих различным классам, имеющим общего предка), и написание программы, иллюстрирующей использование хранилища.
- Функции хранилища объектов
- добавление объектов
- удаление объектов
- переход по объектам (текущий, предыдущий, последующий, проверка наличия)
- получение очередного объекта из хранилища
- поочередное обращение к каждому объекту хранилища; вызов функций, реализуемых всеми классами объектов хранилища
Хранилище должно представлять собой объект, создаваемый и используемый в основной программе. Хранилище должно вести себя или как массив, или как список (на выбор студента). Основная программа должна демонстрировать использование основных функций хранилища.
Если хранилище представляет собой массив, то работа с ним в основной программе должна выглядеть примерно так:
// создаем хранилище
MyStorage storage(10);
// добавляем в него объекты
for (int i=0; i<storage.getCount(); i++)
storage.setObject(i, new SomeObject());
// обращаемся поочередно ко всем
for (int i=0; i<storage.getCount(); i++)
storage.getObject(i).someMethod();
Если хранилище представляет собой список, то работа с ним в основной программе должна выглядеть примерно так:
// создаем хранилище
MyStorage storage();
// добавляем в него объекты
for (int i=0; i<10; i++)
storage.add(new SomeObject());
// обращаемся поочередно ко всем
for (storage.first();!storage.eol(); storage.next())
storage.getObject().someMethod();
Хранилище должно позволять добавлять, удалять объекты в случайной последовательности, корректно обрабатывать подсчет текущего количества объектов в хранилище (с учетом возможных «пустых мест» после удаления каких-то объектов) и динамически увеличивать свой размер, если добавляется больше объектов, чем было предусмотрено изначально.
Лабораторная работа 4. «Круги на форме»
Тип приложения: GUI; язык: без ограничений.
- Создать простейшее приложение с GUI, содержащее:
- определение простейшего класса CCircle с координатами и постоянным радиусом;
- хранилище из Л.Р.3 для хранения объектов класса CCircle;
- форму с объектом для рисования (например, PaintBox)
- Реализовать следующее поведение:
- при нажатии мышкой на форме создается новый объект CCircle с координатами нажатия и помещается в хранилище;
- при событии OnPaint должны отрисовываться на форме все объекты из хранилища
- при нажатии мышкой на какой-либо объект CCircle на форме, он становится «выделенным» и отрисовывается отлично от других объектов
- факультативно: выделенных объектов может быть много, при повторном нажатии на выделенный объект он перестает быть выделенным
Воспользуйтесь поиском по сайту: