Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Лабораторная работа 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 на форме, он становится «выделенным» и отрисовывается отлично от других объектов
    • факультативно: выделенных объектов может быть много, при повторном нажатии на выделенный объект он перестает быть выделенным

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...