Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №4,№5.pdf
Скачиваний:
102
Добавлен:
11.02.2015
Размер:
1.13 Mб
Скачать

Основы создания программ в Си

Page 33 of 58

представляют собой сумму, начисленную за отработанные дни, и надбавки, то есть доли от первой суммы. Удержания представляют собой отчисления в пенсионный фонд (1 % от начисленной суммы) и подоходный налог. Подоходный налог составляет 13 % от начисленной суммы без отчислений в пенсионный фонд.

40. Реализовать класс Cursor. Полями являются координаты курсора по горизонтали и вертикали

целые положительные числа, вид курсора — горизонтальный или вертикальный, размер курсора — целое от 1 до 15. Реализовать методы изменения координат курсора, изменения вида курсора, изменения размера курсора, метод гашения и восстановления курсора.

Требования к отчетам по лабораторной работе №4

Отчет должен содержать описание решения всех индивидуальных заданий в следующем виде:

1.Текст задания;

2.Блок схема выполнения программы с использованием реализованных классов;

3.Код программы;

4.Текст результата выполнения.

5.Проект среды разработки Visual Studio 2005 (со всеми папками и файлами структуры проекта)

Отчеты принимаются либо в электронном виде в документе не старше Word 2003.

Либо в рукописном варианте.

Лабораторная работа.5.

Конструкторы

и

перегрузка

операций

 

 

 

Лабораторная работа посвящена изучению техники программирования перегруженных операций как внешними функции, так и методами класса. Рассматриваются функции-друзья класса. Изучается техника программирования конструкторов. Дополнительно изучаются статические элементы класса, поля-массивы и константные поля.

Общее задание для проведения лабораторной работы:

Представленные в описании тем примеры 5.1-5.7 объявления и использования структур, классов, операторов и функций должны быть собраны в один проект Ms VisualStudio 2005, скомпилированы и продемонстрированы в работоспособном варианте.

Сведения по теме

В C++ разрешено перегружать встроенные операции — это одно из проявлений полиморфизма. Перегрузка операций не является обязательной в объектно-ориентированном программировании

Основы создания программ в Си

Page 34 of 58

— в языках Java и С# она отсутствует. Однако наличие перегрузки операций в C++ обеспечивает дополнительный уровень удобства при использовании новых типов данных.

При программировании нового типа данных желательно объявлять объекты нового типа аналогично встроенным — формы инициализации не должны отличаться от форм инициализации объектов встроенного типа. Эти возможности обеспечивают конструкторы.

Перегрузка операций

При перегрузке операции нужно учитывать следующие ограничения.

1.Запрещена перегрузка следующих операций:

sizeof() — определение размера аргумента;

. (точка) — селектор компонента объекта;

?: — условная операция;

:: — указание области видимости;

.* — выбор компонента класса через указатель;

# и ## — операции препроцессора.

2.Операции можно перегружать только для нового типа данных — нельзя перегрузить операцию для встроенного типа. В C++ новый тип данных можно образовать с помощью конструкций enum, union, struct и class.

3.Нельзя изменить приоритет перегружаемой операции и количество операндов. Унарная операция обязана иметь один операнд (операции ++ инкремента и – декремента являются исключением), бинарная — два операнда; не разрешается использовать параметры по умолчанию. Единственная операция, которая не имеет фиксированного количества операндов, — это операция вызова функции (). Операции «+», «-», «*», «&» допускается перегружать и как унарные, и как бинарные.

4.Операции можно перегружать либо как независимые внешние функции (только такой способ перегрузки допустим для enum), либо как методы класса. Четыре операции:

присваивания =;

вызова функции ();

индексирования [ ];

доступа по указателю ->;

допускается перегружать только как методы класса. Эти операции в принципе нельзя перегрузить для конструкции enum.

5. Если операция перегружается как метод класса, то левым (или единственным) аргументом обязательно будет объект класса, для которого перегружается операция.

Прототип функции-операции выглядит следующим образом: