Лабораторная работа №4. Классы
Согласно варианту описать указанные классы (варианты распределяются преподавателем лично). Написать программу, использующую описанные классы: инициализация переменных (ввод пользователя), выполнение действий с экземплярами класса (в зависимости от дальнейшего ввода пользователя).
Описания и реализация должны находиться в разных файлах. Доступ к полям класса – только через методы. Внешние функции для работы с данными класса не допускаются. Перегрузка стандартных арифметических операций для класса (только в виде методов класса) – в зависимости от задания и здравого смысла (уместна консультация с преподавателем практики).
Дополнительно оценивается, если меню программы будет реализовано с помощью класса. Также возможно использование такого класса «меню» другого студента с указанием его авторства (использование чужого «меню», естественно, дополнительно не оценивается).
Всюду под «выводом на экран» подразумевается вывод необходимой информации об объекте в текстовом виде. Например:
Для комплексного числа: 5.67 – 2.34i
Для квадратного многочлена: 3.0 x^2 – 2.5 x + 7.0
Для вектора в R3: (5.5, –2.6, 1.0)
Примечания для преподавателей, ведущих лабораторные работы: по возможности, распределяйте задания между студентами, согласно успеваемости: некоторые варианты сложнее, некоторые – проще. Возможно комбинирование вариантов (несколько вариантов для одного студента).
№ | Класс | Примечание | Конструкторы | Функциональность |
Комплексное число | По умолчанию. Комплексное число. Вещественное число. | Умножение комплексного числа на вещественное число. Сложение двух комплексных чисел. Умножение двух комплексных чисел. Длина комплексного числа. Вывод на экран. | ||
Стек целых чисел. | Максимальная глубина стека задается при инициализации и не может быть изменена позднее. | По умолчанию. Максимальная глубина. Стек. | Добавление элемента. Изъятие элемента. Количество элементов. Пустота стека. Просмотр верхнего элемента. Вывод на экран. | |
Вектор в R3 | По умолчанию. Три вещественных числа. Вектор. | Сложение и вычитание векторов. Длина вектора. Угол с другим вектором. Вывод на экран (в любом виде). | ||
Квадратный многочлен. | ax2+bx+c | По умолчанию. Три вещественных числа. Квадратный многочлен. | Вычисления значения в заданной точке. Нахождения количества корней. Нахождение корней. Поиск минимума/максимума. Вывод на экран. | |
Очередь строк. | Максимальная длина очереди задается при инициализации и не может быть изменена позднее. Каждая строка ограничена по длине 255 символами. | По умолчанию. Максимальная длина. Очередь строк. | Длина очереди. Добавление строки в очередь. Изъятие строки из очереди. Просмотр последнего элемента. Просмотр первого элемента. Вывод на экран. | |
Подмножество целых чисел. | Максимальный размер множества задается при инициализации. | По умолчанию. Максимальный размер. | Проверка на содержание во множестве элемента. Добавление элемента во множество. Изъятие элемента из множества. Вычисление пересечения с другим множеством. Вычисление объединения с другим множеством. Добавление/изъятие всех элементов, содержащихся в другом множестве. Вывод на экран. | |
Текстовый файловый «поток» для чтения. | Некоторые методы должны сигнализировать об ошибке или об успешном выполнении. | По умолчанию. Имя файла. | Открытие файла. Закрытие файла. Получение имени файла. Проверка, открыт ли файл. Проверка, не закончился ли файл. Получение из файла следующей строки. Получение из файла следующего слова. | |
Текстовый файловый «поток» для записи. | Некоторые методы должны сигнализировать об ошибке или об успешном выполнении. | По умолчанию. Имя файла. | Открытие файла. Закрытие файла. Получение имени файла. Проверка, открыт ли файл. Запись в файл строки. Запись в файл целого числа. Запись в файл вещественного числа. | |
Анализатор строки. | Разбивает строку на подстроки, согласно разделительным символам (их может быть несколько). | По умолчанию. Строка. | Добавление символа разделителя. Удаление всех символов-разделителей. Получение следующей подстроки. Индикация окончания анализа. |