Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Рабочая программа дисциплины.docx
Скачиваний:
3
Добавлен:
01.10.2024
Размер:
144.95 Кб
Скачать

3 Семестр

Индивидуальное домашнее задание «Разработка графического редактора на языке С++ с использованием механизмов ООП»

Содержание работы:

  1. Разработка графического интерфейса для создания графического изображения.

  2. Проектирование и разработка внутренних структур данных для отображения элементов схемы.

  3. Реализация перемещения объектов с использованием мыши.

  4. Реализация сохранения / загрузки созданной схемы в файл / из файла.

Примерные темы для реализации графического редактора:

1. Редактор принципиальных схем;

2. Графический векторный редактор;

3. Редактор выкроек;

4. Редактор производственных схем;

5. Редактор блок-схем;

6. Редактор схемы ЛВС;

7. Редактор инфологических схем;

8. Планировка кухни;

9. Планировка спальни;

10. Планировка гостиной;

11. Редактор классовых диаграмм;

12. Редактор позиций на шахматной доске;

13. Редактор позиций игроков на футбольном поле;

14. Редактор позиций игроков на хоккейной площадке;

15. Планировка магазина;

16. Планировка вокзала;

17. Планировка микрорайона.

Содержание расчетно-пояснительной записки

  1. Титульный лист.

  2. Задание кафедры.

  3. Аннотация.

  4. Оглавление.

  5. Введение.

  6. Диаграмма классов.

  7. Описание программы.

  8. Описание применения.

  9. Руководство оператора.

  10. Описание контрольного примера.

  11. Заключение.

  12. Приложение: текст программы.

Диаграмма классов сопровождается спецификацией свойств и методов классов и отношений между ними. Содержание разделов 7-9 определяется стандартами ЕСПД соответствующих наименований, раздела 10 – ГОСТ 24.207-80 «Требования к содержанию документов по программному обеспечению».

Вопросы к экзамену

  1. Особенности объектно-ориентированной парадигмы.

  2. Понятие класса в объектно-ориентированной парадигме.

  3. Понятие и назначение свойств и методов классов, специфический указатель this.

  4. Уровни доступа к свойствам и методам классов, понятие абстрактного класса.

  5. Виды отношений между классами.

  6. Изображение отношений между классами на диаграмме классов.

  7. Виды, назначение, ситуации вызовов конструкторов и деструктора.

  8. Порядок вызовов конструкторов и деструкторов.

  9. Основные понятия объектно-ориентированной парадигмы: инкапсуляция, наследование, полиморфизм.

  10. Понятие и способы перегрузки операторов.

  11. Понятие дружественных классов и функций.

  12. Написание и использование статических свойств и методов.

  13. Понятие события и обработчика события.

  14. Назначение и использование параметризованных классов.

  15. Понятие и основы работы динамического полиморфизма с использованием виртуальных функций.

  16. Вызов конструктора базового класса в C++.

  17. Абстрактный метод.

  18. Абстрактный класс.

  19. Статический метод и его использование.

  20. Постоянный метод и его использование.

  21. Деструктор и его назначение.

  22. Выделение и освобождение памяти под/из-под объекта в куче.

  23. Создание объектов в сегменте данных.

  24. Конструктор и его назначение.

  25. Виды конструкторов.

  26. Уровни доступа к переменным класса.

  27. Неявный аргумент нестатических методов.

  28. Виды блоков исключений.

  29. Переопределение методов, функций.

  30. Переопределение операций.

  31. Значение переменной по умолчанию.

  32. Порядок вызова конструкторов при наследовании.

  33. Порядок вызова деструкторов при наследовании.

  34. Отличие между классом и объектом класса.

  35. Виды памяти с точки зрения программиста.

  36. Конструктор по умолчанию, моменты вызова.

  37. Конструктор копирования, моменты вызова.

  38. Виды наследования.

  39. Дружественные классы.

  40. Дружественные функции.

  41. Генерация исключения.

  42. Испытание на исключения.

  43. Финальный блок исключения.

  44. Шаблон класса.

  45. Шаблон функции.

  46. Оператор присваивания, моменты вызова.

  47. Инициализация статической переменной класса.

  48. Полное имя метода и переменной.

  49. Передача переменной класса в функцию.

  50. Выход из функции, содержащей переменные класса.

  51. Возврат переменной класса из функции.

  52. Порядок вызова метода при статическом и динамическом связывании.

  53. Отличия динамического связывания и динамического метода.

  54. Динамический метод и его использование.

  55. Виртуальное наследование.

  56. Обработка исключения.

  57. Создание переменных классов в стеке.

  58. Снятие переменных классов со стека.

  59. A c=a+b, где a и b – переменные класса A. Каково количество вызовов конструктора копирования (в зависимости от способа переопределения оператора +)?

  60. Каковы последствия отсутствия конструктора копирования для классов, содержащих объекты, размещенные в динамической памяти (при передаче в качестве параметра или возвращаемого значения)?

  61. Реализация механизма счетчика ссылок.

Примерные задачи к экзамену

  1. Реализовать класс "Множество", в который можно добавить элемент одной строкой A += a.

  2. Реализовать класс "Множество", который можно инициализировать при создании другим экземпляром класса "Множество".

  3. Реализовать класс "Множество", которому можно присвоить после создания другой экземпляр класса "Множество".

  4. Реализовать иерархию классов (минимум 3 уровня), содержащую информацию о произвольной предметной области.

  5. Построить классовую диаграмму произвольной предметной области, отобразив на ней основные виды отношений между классами.

  6. Реализовать класс "Множество", элементами которого могут быть данные любого типа.

  7. Реализовать класс "Counter", генерирующий событие, когда значение счетчика достигает 53. Данное событие должен отслеживать класс "Messanger", который выведет сообщение на экран.

  8. Реализовать классы "Треугольник", "Прямоугольник", "Круг", площадь которых рассчитывается с использованием единого интерфейса класса "Фигура".

  9. Реализовать класс "Множество", который можно создать только с использованием статического метода. Организовать процедуру подсчета экземпляров класса "Множество" с сохранением принципа инкапсуляции.

  10. Реализовать класс "Exception" для обработки собственных исключений. Реализовать класс "Матрица", в котором обрабатывается ситуация разного размера матриц при их сложении.