Компания ALT Linux
Опубликован: 07.03.2015 | Доступ: свободный | Студентов: 2194 / 528 | Длительность: 24:14:00
Лекция 10:

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

10.8 Задачи для самостоятельного решения

10.8.1 Иерархия классов

Определить иерархию наследования из двух классов в соответствии с номером задания. Каждый класс снабдить свойствами и методами в соответствии с предметной областью, указанной в варианте задания. В базовом классе предусмотреть метод info(), выводящий на экран информацию об объекте. Предусмотреть конструкторы, инициализирующие свойства объектов переданными данными либо значениями по умолчанию. Написать демонстрационную программу, создающую 4-5 объектов и выводящую на экран информацию о них. Варианты классов:

  1. "Водный транспорт", "Грузовое судно"
  2. "Летательный аппарат", "Дирижабль"
  3. "Здание", "Коттедж"
  4. "Двигатель", "Двигатель внутреннего сгорания"
  5. "Устройство печати", "Струйный принтер"
  6. "Устройство ввода", "Цифровая камера"
  7. "Растровое изображение", "Репродукция картины"
  8. "Млекопитающее", "Собака"
  9. "Транспортное средство", "Легковой автомобиль"
  10. "Печатное издание", "Номер журнала"
  11. "Документ", "Квитанция об оплате"
  12. "Пищевой продукт", "Йогурт"
  13. "Корпусная мебель", "Книжный шкаф"
  14. "Проверка знаний", "Экзамен"
  15. "Носитель информации", "Компакт-диск"
  16. "Аудиозапись", "файл в формате MP3"
  17. "Видеозапись", "Художественный фильм"
  18. "Транспортное средство", "Маршрутный автобус"
  19. "Средство связи", "Сотовый телефон"
  20. "Человек", "Член клуба"
  21. "Птица", "Почтовый голубь"
  22. "Электронная карта", "Абонемент на проезд"
  23. "Дата", "День рождения"
  24. "Удостоверение", "Паспорт"
  25. "Сотрудник компании", "Начальник отдела"

10.8.2 Перегрузка операторов

Реализовать класс, содержащий коллекцию объектов, методы для включения и удаления элементов, вывода содержимого коллекции на экран, а также перегруженный в соответствии с заданием оператор. Написать программу, заполняющую коллекцию несколькими элементами и демонстрирующую пользователю работу перегруженного оператора для элементов коллекции:

  1. "–" (вычитание одной коллекции из другой), класс "множество символов"
  2. "+" (объединение коллекций), класс "множество целых чисел"
  3. "*" (пересечение коллекций), класс "множество целых чисел"
  4. "!=" (сравнение коллекций на неравенство), класс "неупорядоченный массив вещественных чисел"
  5. "==" (сравнение коллекций на неравенство), класс "упорядоченный массив символов"
  6. "[]" (получение элемента по его номеру в коллекции), класс "неупорядоченный массив целых чисел"
  7. "[]" (получение элемента по его номеру в коллекции), класс "упорядоченный массив вещественных чисел"
  8. "%" (проверка элемента на принадлежность коллекции), класс "множество целых чисел"
  9. "%" (проверка элемента на принадлежность коллекции), класс "упорядоченный массив символов"
  10. "<<" (удаление элемента из коллекции с его выводом на экран), класс "множество целых чисел"
  11. ">>" (добавление введённого с клавиатуры элемента в коллекцию), класс "множество символов"
  12. ">=" (проверка на включение коллекции, заданной вторым аргументом, в начальную часть коллекции, заданной первым аргументом), класс "упорядоченный массив символов"
  13. "<=" (проверка на включение коллекции, заданной первым аргументом, в начальную часть коллекции, заданной вторым аргументом), класс "неупорядоченный массив символов"
  14. "++" (добавление элемента со значением, на единицу больше последнего добавленного элемента), класс "упорядоченный массив целых чисел"
  15. "++" (добавление элемента со значением, на единицу больше последнего добавленного элемента), класс "стек целых чисел"
  16. "--" (удаление последнего добавленного элемента), класс "упорядоченный массив целых чисел"
  17. "--" (удаление элемента), класс "очередь вещественных чисел"
  18. "--" (опустошение коллекции), класс "множество вещественных чисел"
  19. ">>" (добавление введённого с клавиатуры элемента в коллекцию), класс "очередь целых чисел"
  20. "<<" (удаление элемента из коллекции с его выводом на экран), класс "очередь вещественных чисел"
  21. ">>" (добавление введённого с клавиатуры элемента в коллекцию), класс "стек символов"
  22. "<<" (удаление элемента из коллекции с его выводом на экран), класс "стек целых чисел"
  23. "*" (умножение всех элементов коллекции на заданное число), класс "неупорядоченный массив вещественных чисел"
  24. "/" (деление всех элементов коллекции на заданное число), класс "множество вещественных чисел"
  25. "˜" (смена регистра), класс "множество символов"

10.8.3 Обработка исключительных ситуаций

Снабдить класс из задания п. 10.8.1 проверкой на допустимость значений, передаваемых конструктору. В случае передачи недопустимых значений генерировать исключительную ситуацию. Предусмотреть не менее двух различных классов-индикаторов исключения, позволяющих передать обработчику необходимую информацию. Расширить демонстрационную программу показом обработки некорректной инициализации объектов.

Сергей Радыгин
Сергей Радыгин

Символы кириллицы выводит некорректно. Как сделать чтобы выводился читабельный текст на русском языке?

Тип приложения - не Qt,

Qt Creator 4.5.0 основан на Qt 5.10.0. Win7.

 

Юрий Герко
Юрий Герко

Кому удалось собрать пример из раздела 13.2 Компоновка (Layouts)? Если создавать проект по изложенному алгоритму, автоматически не создается  файл mainwindow.cpp. Если создавать этот файл вручную и добавлять в проект, сборка не получается - компилятор сообщает об отсутствии класса MainWindow. Как правильно выполнить пример?