LAB5PPPO (Лабораторная работа №5)
Описание файла
Файл "LAB5PPPO" внутри архива находится в следующих папках: Лабораторная работа №5, лаба 5, 1. Документ из архива "Лабораторная работа №5", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.
Онлайн просмотр документа "LAB5PPPO"
Текст из документа "LAB5PPPO"
4
ПППО – Большаков С.А. 2007Требования к ЛР № 4 по курсу ПППО
(3 курс ИУ5 6 семестр 2007 г.)
“Перегрузка функций и операций”
-
Цель работы
Целью лабораторной работы является изучение механизмов перегрузки функций и операций при объектно-ориентированном программировании на языке С++. Студенты должны освоить основные способы перегрузки и их особенности, продемонстрировать навыки и знания по перегрузке одноместных и двухместных операция и показать на примере простых собственных классов использование этих возможностей с помощью демонстрационного примера.
-
Изучаемые вопросы
В процессе лабораторной работы (она рассчитана на 4 часа) необходимо изучить и выполнить:
-
Перегрузку функций для простой функции
-
Изучить и продемонстрировать использование шаблонов функций
-
Продемонстрировать задание параметров функции по умолчанию в описании функции
-
Для нового класса (Test) перегрузку одноместной операции как внутренний метод (++)
-
Для нового класса (Test) перегрузку двуместной операции как внутренний метод (+)
-
Для нового класса (Test1) перегрузку одноместной операции как внешнюю функцию (как friend) (++)
-
Для нового класса (Test1)перегрузку двуместной операции как внешнюю функцию (как friend) (+)
-
Перегрузить операцию вывода переменной класса (<<) как внешнюю функцию (как friend) для ранее созданных классов (Test ,Test1)
-
Порядок работы
Для выполнения лабораторной работы в полном объеме студенты должны выполнить следующие действия и пункты:
-
Перегрузку функций
-
Использование шаблонов функций
-
Задание параметров по умолчанию в прототипе и описании функции
-
Перегрузку одноместной операции внутреннюю (++)
-
Перегрузку двуместной операции внутреннюю (+)
-
Перегрузку одноместной операции внешнюю (++)
-
Перегрузку двуместной операции внешнюю (+)
-
Перегрузить операцию вывода переменной (<<) как внешнюю
-
Перегрузить операцию вывода переменной (<<) как внутреннюю
-
Создать и грамотно настроить проектный файл для программы ЛР
-
Отладить программу с помощью отладчика с просмотром объектов классов
-
Сформировать листинг программы и листинг результатов.
-
Оформить отчет по ЛР.
-
Требования к работе
В лабораторной работе в изложенном ниже порядке должны быть отражены следующие требования:
-
Описание классов и функций в отдельном файле (lab5.hpp)
-
Все задания должны быть оформлены в виде наглядного вывода (в cout), например, для демонстрации перегрузки функций вывод может быть таким:
// Перегрузка функций
cout << "Перегрузка функций"<< endl;
cout << "Сумма = "<< Sum (2 , 2) <<endl;
cout << "Сумма = "<< Sum (2.1f , 2.1f) <<endl;
cout << "Сумма = "<< Sum (2.0 , 2.1 ) <<endl;
cout << "Сумма = "<< Sum ('c' , '\1' ) <<endl;
getch();
-
При перегрузке функций тип простой функции выбирается из списка вариантов (см. ниже). Во всех функциях задаются 2 параметра однотипные, для выполнения операций (сложения, вычитания, деления и умножения). Перегрузка выполняется для типов параметров указанных в списке вариантов (int , char, long, double, float).
-
При демонстрации шаблонов необходимо указать шаблон для типа функции, определенной номером варианта (см. ниже). Иллюстрация вывода результата выполняется аналогично (см. выше) – типы - ( int , char, long, double, float) для всех.
-
При демонстрации функции с параметрами по-умолчанию, задается функции Summ, которая складывает три параметра (тип int). Нужно показать четыре случая вызова функции (нет параметров, один, два и три). Иллюстрация вывода результата выполняется аналогично (см. выше).
-
Перегрузка внутренней одноместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test.
-
Перегрузка внутренней двухместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test.
-
Перегрузка внешней одноместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test1.
-
Перегрузка внешней двухместной операции выполняется в новом простом классе (типы: int, float , long). Тип и обозначение операции определяется с вариантом. Класс называется Test1.
-
Перегрузка операции вывода выполняется внешней (friend) функцией для классов Test и Test1.
-
Оформление отчета
В отчет по ЛР должно быть включено:
-
Титульный лист, цель и порядок работы
-
Перечень ошибок при отладке
-
Листинг программы и листинг результатов
-
Варианты (см. таблицу вариантов)
Для индивидуализации задания студента введены вариантные требования, смысл которых раскрывается ниже. Окончательный вариант задания выделен в таблице.
int , double, float
Вариантные требования:
-
Перегрузка функций с двумя параметрами (1)
-
Функции суммирования (1.1)
-
Функции вычитания (1.2)
-
Функции умножения (1.3)
-
Функции деления (1.4)
-
Типы параметров и возврата для перегрузки функций(2)
-
int , char, long (2.1)
-
long, double, float (2.2)
-
char, long, double (2.3)
-
int , double, float (2.4)
-
Демонстрация шаблонов – тип функции (3)
-
Функция определения максимума из двух (3.1)
-
Функция определения минимума из двух (3.2)
-
Функция определения среднего из двух (3.3)
-
-
Типы переменных в классе для выполнения перегрузок (4)
-
Тип int (4.1)
-
Тип float (4.2)
-
Тип char (4.3)
-
Варианты | 7,8,11,13,14,17,19,24,25,29 * | 1,2,5,6,9,12,16,20, 21,27 * | 3,4,10,15,18,22,23,26, 28, 30 * |
ИУ5- 61 | 1.1, 2.1, 3.1, 4.2 | 1.1, 2.2, 3.1, 4.1 | 1.1, 2.2, 3.1, 4.1 |
ИУ5- 62 | 1.2, 2.1, 3.3, 4.1 | 1.4, 2.3, 3.1, 4.2 | 1.2, 2.3, 3.1, 4.3 |
ИУ5- 63 | 1.3, 2.1, 3.1, 4.3 | 1.1, 2.1, 3.1, 4.1 | 1.1, 2.1, 3.1, 4.1 |
ИУ5- 64 | 1.4, 2.1, 3.3, 4.1 | 1.2, 2.3, 3.1, 4.3 | 1.4, 2.3, 3.1, 4.2 |
* - номер в списке.
Примечание: Комбинация - 1.1, 2.1, 3.2, 4.2 – означает:
-
Перегрузку функции суммирования – 1.1
-
Для типов переменных int , char, long – 2.1
-
Для демонстрации шаблонов используется функция минимума – 3.2
-
Классы Test и Test1 содержат переменную типа float для операций перегрузки – 4.2.
-
Контрольные вопросы к ЛР №5
-
Поясните понятие перегрузки функций?
-
Поясните понятие перегрузки операций?
-
Поясните назначение шаблонов функций?
-
Поясните понятие параметров функций по умолчанию?
-
Приоритет параметров по умолчанию имеет описание или прототип функции?
-
Какие виды перегрузки операций Вы знаете?
-
В чем особенность внешней перегрузки?
-
В чем особенность внутренней перегрузки?
-
В чем особенность перегрузки одноместной операции?
-
Какие операции С++ нельзя перегрузить?
-
Почему нельзя сделать внутреннюю перегрузку вывода в cout?
-
Можно ли перегрузить трехместную операцию для своего класса?
-
В чем особенность перегрузки двухместной операции?
-
Какие меры нужно предпринять, чтобы при двуместной внутренней перегрузке значение базовой переменной было сохранено?
-
В каких случаях можно передавать переменную через стек, а каких посредством указателя?
-
Каково назначение перегрузки функций с точки зрения программиста?
-
Каково назначение перегрузки операций с точки зрения программиста?
-
Какие ограничения перегрузки операций Вы знаете?
-
Какие операции перегружены в классах потокового ввода-вывода?
-
Какие операции перегружены в классах LISTITERATOR и ARRAYITERATOR?
Срок сдачи ЛР № 5 - 13-я неделя семестра.