
- •1 Изучить теоретический материал и дать ответы на контрольные вопросы.
- •3 Выполнить программу на компьютере.
- •1 Базовый уровень
- •1 Изучить теоретический материал и дать ответы на контрольные вопросы.
- •3 Выполнить программу на компьютере.
- •1 Базовый уровень
- •1 Изучить теоретический материал и дать ответы на контрольные вопросы.
- •3 Выполнить программу на компьютере.
- •1 Базовый уровень
- •1 Изучить теоретический материал и дать ответы на контрольные вопросы.
- •3 Выполнить программу на компьютере.
Практическая работа № 7.
Программирование создания классов и их объектов
Цель работы. Изучить элементы объектно-ориентированного программирования: понятия класса, объекта, инкапсуляции, конструктора и деструктора; научиться составлять и выполнять на компьютере программы с классами и их объектами.
Контрольные вопросы
1. В чем сходны и чем отличаются в C++ понятия структуры и класса?
2. Что такое инкапсуляция?
3. Что называется классом?
4. Можно ли описать метод класса вне класса?
5. Как соотносятся между собой понятия объекта и класса?
6. Для чего нужен раздел private в объявлении класса? Приведите при-
меры данных или методов, которые целесообразно помещать в этот раздел.
7. Для чего нужен раздел public в объявлении класса?
8. Что такое конструктор и когда он вызывается?
9. Может ли класс иметь несколько конструкторов?
10. Что такое конструктор по умолчанию и когда он вызывается?
11. Что такое конструктор копирования и когда он вызывается?
12. Что такое деструктор и когда он вызывается?
13. Может ли в классе быть несколько деструкторов?
Ход работы:
1 Изучить теоретический материал и дать ответы на контрольные вопросы.
2 Составить программу на языке С++ в соответствии с индивидуальным заданием для базового, среднего и высокого уровней.
3 Выполнить программу на компьютере.
1 Базовый уровень
Для всех вариантов заданий создать класс с указанными полями и тремя методами:
− конструктор для инициализации объекта;
− функция формирования строки с информацией об объекте;
− функция обработки значений полей по индивидуальному варианту.
В основной программе вводить значения полей каждого объекта и выводить результаты.
1 Денежные купюры: номинал (1, 2, 5, 10 и т.д.) и количество. Вычислить сумму купюр.
2 Монеты: номинал(1, 2, 5, 10 и т.д.) и количество. Вычислить сумму монет.
3 Товар: цена и количество. Вычислить общую стоимость товара.
4 Продукты питания: калорийность 100 г и вес продукта в граммах. Вычислить общую калорийность продукта.
5 Диапазон вещественных чисел: левая и правая границы диапазона. Квадрат длины диапазона.
6 Время: минуты и секунды. Вычислить общее количество секунд.
7 Время: часы и минуты. Вычислить общее количество минут.
8 Катеты прямоугольного прямоугольника: вещественные числа к1 и к2. Вычислить площадь прямоугольного треугольника.
9 Параметры движения: скорость движения (м/cек) и время движения в минутах. Вычислить пройденное расстояние (в метрах).
10 Катеты прямоугольного прямоугольника: вещественные числа а1 и а2. Вычислить длину гипотенузы прямоугольного треугольника.
11 Параметры трапеции: верхнее и нижнее основание трапеции. Вычислить полусумму оснований трапеции.
12 Катеты прямоугольного прямоугольника: вещественные числа р1 и р2. Вычислить тангенс угла α, противолежащего второму катету прямоугольного треугольника.
13 Пара вещественных чисел: z1 и z2 Вычислить полуразность чисел.
14 Пара вещественных чисел: р1 и р2 Вычислить корень квадратный из произведения чисел.
15 Пара целых чисел: x и y. Вычислить целую часть от деления х на y.
17 Пара целых чисел: n и m. Вычислить куб большего из чисел.
18 Телефонный разговор: продолжительность телефонного разговора в минутах и стоимость одной минуты разговора. Вычислить общую стоимость разговора.
19 Точка на плоскости: координаты точки на плоскости (по горизонтали и вертикали). Определить периметр прямоугольника, ограниченного координатами точки и
осями Ox и Oy.
20 Два вещественных числа: a и b Вычислить разность квадратов чисел a2 – b2.
2 Средний уровень
Создать класс с полями, указанными в индивидуальном задании.
Реализовать в классе методы:
- конструктор по умолчанию;
- конструктор перезагрузки с параметрами;
- деструктор для освобождения памяти (с сообщением об уничтожении объекта);
- функции-методы обработки данных, указанные в индивидуальном задании;
- функцию формирования строки информации об объекте.
Создать проект для демонстрации работы: сформировать объекты со значениями-константами и с введенными значениями полей объекта.
1 Дата (три числа): день, месяц, год. Определить, является ли год високосным
(кратным 4). Увеличить дату на 5 дней.
2 Дата (три числа): день, месяц, год. Увеличить год на 1 Уменьшить дату на 2 дня
3 Дата (три числа): день, месяц, год. Определить, совпадают ли номер месяца и число дня Увеличить дату на один месяц
4 Время (три числа): часы, минуты, секунды Вычислить количество секунд в указанном
времени Увеличить время на 5 секунд
5 Время (три числа): часы, минуты, секунды Вычислить количество полных минут в ука
занном времени Уменьшить время на 10 минут
6 Время (три числа): часы, минуты, секунды Определить количество минут до полуночи
(24:00:00) Увеличить время на 100 минут
7 Правильная дробь: числитель, знаменатель Выразить значение дроби в процентах
Найти сумму цифр значения знаменателя
8 Комплексное число: действительная (a1) и мнимая (b1) части числа Вычислить модуль комплексного числа Найти комплексное число, обратное заданному
9 Комплексное число: действительная и мнимая часть числа Вычислить произведение комплексного числа на число, вводимое пользователем Вычислить аргумент комплексного числа в градусах
10 Книга: название, количество страниц, цена. Вычислить среднюю стоимость одной страницы. Увеличить цену книги в два раза, если название начинается со слова «Программирование»
11 Работник: фамилия, оклад, год поступления на работу. Вычислить стаж работы
работника на данном предприятии. Сколько дней прошло после года поступления
на работу
12 Работник: фамилия, оклад, год рождения. Вычислить возраст работника. Сколько календарных дней до исполнения работнику 50 лет
13 Вектор на плоскости: координаты вектора на плоскости (x1, y1, x2, y2). Вычислить координаты середины вектора. Равен ли угол наклона вектора 45 градусов?
14 Вектор на плоскости: координаты вектора на плоскости (x1, y1, x2, y2). Вычислить координаты вектора, удвоенной длины. Вычислить площадь прямоугольного треугольника, образованного заданным вектором и прямыми, параллельными
осям Оx, Оy.
3 Высокий уровень
Реализовать в классе методы:
- конструктор по умолчанию;
- конструктор перезагрузки с параметрами;
- деструктор для освобождения памяти (с сообщением об уничтожении объекта);
- функции-методы обработки данных, указанные в индивидуальном задании;
- функцию формирования строки информации об объекте.
Создать проект для демонстрации работы: сформировать объекты со значениями-константами и с введенными значениями полей объекта.
Задание
1 Создать класс вектор, задаваемый тройкой координат (x, y, z). Реализовать функции: сложения и вычитания векторов, скалярное произведение векторов, вычисление длины вектора.
2 Создать класс деньги для работы с денежными суммами. Число должно быть представлено двумя полями: long для гривни и unsigned char для копеек. Дробная часть (копейки) при выводе должна быть отделена от целой части (гривни) запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число (для пересчета в другие денежные единицы по заданному курсу).
3 Создать класс треугольник для вычисления его числовых характеристик. Поля данных должны включать стороны. Реализовать функции: вычисления периметра, площади, всех углов и высот треугольника; определения вида треугольника (равносторонний, равнобедренный, прямоугольный).
4 Создать класс два угла для работы с углами на плоскости, которые задаются в градусах с минутами. Реализовать функции: перевод значений углов из минут с секундами в радианы, приведение к диапазону 0-360, сложение и вычитание углов, получение синуса и тангенса угла.
5 Создать класс комплексные числа, которые представляются парой вещественных чисел (a,b) и (c,d), где a, c – действительная часть чисел, b,d − мнимая часть чисел. Реализовать функции: сложения, вычитания, умножения, деления чисел; формирования сопряженного комплексного числа и проверки двух комплексных чисел на равенство.
6 Создать класс рациональные дроби, которые представлены парой чисел (a,b) и (c,d), где a, c − числители, b,d − знаменатель. Реализовать функции: сложения, вычитания, умножения, деления и сокращения дробей; сравнения значений дробей (меньше, равны или больше).
7 Создать класс дата, которое представляется тремя полями типа unsigned int для года, месяца и дня. Дата должна инициализироваться двумя конструкторами в форматах строки «год.месяц.день» и трех целых чисел. Реализовать функции: вычисление даты через заданное количество дней или месяцев, вычитание заданного количества дней из даты, выделение из даты отдельных её частей (года, месяца, дня).
8 Создать класс время, которое представляется тремя полями типа unsigned int для часов, минут и секунд. Время должно инициализироваться двумя конструкторами в форматах строки «часы.минуты.секунды» и трех целых чисел. Реализовать функции: вычисление времени через заданное количество минут или секунд, вычитание заданного количества минут из времени, выделение из времени отдельных его частей (часы,
минуты, секунды).
9 Релизовать класс нечеткие числа, которые представляются тройками чисел: A=(A−al, A, A+ar) B=(B−bl, b, B+br). Реализовать функции:
- сложения A+B =(A+B−al −bl, A+B, A+ B +ar+br);
- вычитания A−B =(A−B−al −bl, A−B, A− B +ar+br);
- умножения A х B= (A х B−B х al −A х bl+ al х bl, A х B, A х B+B х ar +A х br+ ar х br);
- обратное нечеткое числоA-1= (1/(A+ar), 1/A,1/(A−al)), A>0;
- A/B=((A−al)/(B+br),A/B,(A+ar)/(B−bl), B>0.
10 Создать класс товар с полями: наименование товара, дата получения, цена товара, количество единиц товара, номер накладной, по которой товар поступил на склад. Реализовать функции: изменения цены товара, изменения количества товара, вычисления стоимости товара, определения количества дней, месяцев и лет от получения товара.
11 Создать класс BitString для работы с 64-битовыми строками. Битовая строка должна быть представлена двумя полями типа unsigned long. Реализовать функции для операций с битами: and, or, xor, not. Реализовать сдвиг влево и сдвиг вправо на заданное количество битов.
12 Создать класс LongLong для работы с целыми числами из 64-бит. Число должно быть представлено двумя полями: long − старшая часть, unsigned long − младшая часть. Реализовать функции для операций с числами: сложение, вычитание, умножение, деление, деление нацело, остаток от деления.
13 Создать класс зарплата с полями: фамилия, имя, отчество, оклад, дата поступления на работу, процент подоходного налога, количество рабочих дней в месяце. Реализовать функции: вычисления подоходного налога, стажа работы на предприятии, надбавок за стаж, зарплаты (суммы, выдаваемой на руки работнику). Надбавки за стаж составляют 10% оклада при стаже от 5 до 10 лет, 20% − при стаже более 10 лет. Из оклада удерживается подоходный налог и отчисления в пенсионный фонд в размере 1% оклада.
14 Создать класс банковский счет с полями: фамилия и инициалы, номер счета, процент начисления, сумма на счету в гривне. Реализовать функции: смены владельца счета, снять сумму со счета, добавить сумму на счет, начислить проценты, перевести сумму в доллары, перевести сумму в евро, записать сумму прописью (словами).
СРС. Потоки ввода-вывода. Обработка прерываний.
Цель работы. Изучить реализацию потоков ввода-вывода. Изучить обработку прерываний. Реализовать приложение, использующее класс, реализующий запись данных в файл и обработку вводимых данных с помощью прерываний.
Контрольные вопросы
1. С помощью какого класса реализуется организация потоков ввода-вывода?
2. Каким образом создать поток ввода данных из файла?
3. Каким образом организовать поток вывода данных в файл?
4. Что такое обработка прерываний?
5. Для чего нужно использовать обработку прерываний?
6. С помощью какого оператора можно организовать обработку прерываний?
7. Синтаксис этого оператора ?
8. Какие виды прерываний вам известны?
9. Как организовать и «отловить» прерывание?
10. Где в классе целесообразно использовать обработчик прерываний?
Ход работы:
1 Изучить теоретический материал и дать ответы на контрольные вопросы.
2 Составить программу на языке С++ в соответствии с индивидуальным заданием для базового, среднего и высокого уровней.
3 Выполнить программу на компьютере.
1 Базовый уровень
Для всех вариантов заданий создать класс с указанными полями и тремя методами:
− конструктор для инициализации объекта;
− функция формирования строки с информацией об объекте;
− функция обработки значений полей по индивидуальному варианту.
Выполнить обработку исключительных ситуаций.
Создать метод для сохранения полученных данных в файл.
В основной программе вводить значения полей каждого объекта и выводить результаты.
1 Денежные купюры: номинал (1, 2, 5, 10 и т.д.) и количество. Вычислить сумму купюр.
2 Монеты: номинал(1, 2, 5, 10 и т.д.) и количество. Вычислить сумму монет.
3 Товар: цена и количество. Вычислить общую стоимость товара.
4 Продукты питания: калорийность 100 г и вес продукта в граммах. Вычислить общую калорийность продукта.
5 Диапазон вещественных чисел: левая и правая границы диапазона. Квадрат длины диапазона.
6 Время: минуты и секунды. Вычислить общее количество секунд.
7 Время: часы и минуты. Вычислить общее количество минут.
8 Катеты прямоугольного прямоугольника: вещественные числа к1 и к2. Вычислить площадь прямоугольного треугольника.
9 Параметры движения: скорость движения (м/cек) и время движения в минутах. Вычислить пройденное расстояние (в метрах).
10 Катеты прямоугольного прямоугольника: вещественные числа а1 и а2. Вычислить длину гипотенузы прямоугольного треугольника.
11 Параметры трапеции: верхнее и нижнее основание трапеции. Вычислить полусумму оснований трапеции.
12 Катеты прямоугольного прямоугольника: вещественные числа р1 и р2. Вычислить тангенс угла α, противолежащего второму катету прямоугольного треугольника.
13 Пара вещественных чисел: z1 и z2 Вычислить полуразность чисел.
14 Пара вещественных чисел: р1 и р2 Вычислить корень квадратный из произведения чисел.
15 Пара целых чисел: x и y. Вычислить целую часть от деления х на y.
17 Пара целых чисел: n и m. Вычислить куб большего из чисел.
18 Телефонный разговор: продолжительность телефонного разговора в минутах и стоимость одной минуты разговора. Вычислить общую стоимость разговора.
19 Точка на плоскости: координаты точки на плоскости (по горизонтали и вертикали). Определить периметр прямоугольника, ограниченного координатами точки и
осями Ox и Oy.
20 Два вещественных числа: a и b Вычислить разность квадратов чисел a2 – b2.
2 Средний уровень
Создать класс с полями, указанными в индивидуальном задании.
Реализовать в классе методы:
- конструктор по умолчанию;
- конструктор перезагрузки с параметрами;
- деструктор для освобождения памяти (с сообщением об уничтожении объекта);
- функции-методы обработки данных, указанные в индивидуальном задании;
- функцию формирования строки информации об объекте.
Выполнить обработку исключительных ситуаций.
Создать метод для сохранения полученных данных в файл.
Создать проект для демонстрации работы: сформировать объекты со значениями-константами и с введенными значениями полей объекта.
1 Дата (три числа): день, месяц, год. Определить, является ли год високосным
(кратным 4). Увеличить дату на 5 дней.
2 Дата (три числа): день, месяц, год. Увеличить год на 1 Уменьшить дату на 2 дня
3 Дата (три числа): день, месяц, год. Определить, совпадают ли номер месяца и число дня Увеличить дату на один месяц
4 Время (три числа): часы, минуты, секунды Вычислить количество секунд в указанном
времени Увеличить время на 5 секунд
5 Время (три числа): часы, минуты, секунды Вычислить количество полных минут в ука
занном времени Уменьшить время на 10 минут
6 Время (три числа): часы, минуты, секунды Определить количество минут до полуночи
(24:00:00) Увеличить время на 100 минут
7 Правильная дробь: числитель, знаменатель Выразить значение дроби в процентах
Найти сумму цифр значения знаменателя
8 Комплексное число: действительная (a1) и мнимая (b1) части числа Вычислить модуль комплексного числа Найти комплексное число, обратное заданному
9 Комплексное число: действительная и мнимая часть числа Вычислить произведение комплексного числа на число, вводимое пользователем Вычислить аргумент комплексного числа в градусах
10 Книга: название, количество страниц, цена. Вычислить среднюю стоимость одной страницы. Увеличить цену книги в два раза, если название начинается со слова «Программирование»
11 Работник: фамилия, оклад, год поступления на работу. Вычислить стаж работы
работника на данном предприятии. Сколько дней прошло после года поступления
на работу
12 Работник: фамилия, оклад, год рождения. Вычислить возраст работника. Сколько календарных дней до исполнения работнику 50 лет
13 Вектор на плоскости: координаты вектора на плоскости (x1, y1, x2, y2). Вычислить координаты середины вектора. Равен ли угол наклона вектора 45 градусов?
14 Вектор на плоскости: координаты вектора на плоскости (x1, y1, x2, y2). Вычислить координаты вектора, удвоенной длины. Вычислить площадь прямоугольного треугольника, образованного заданным вектором и прямыми, параллельными
осям Оx, Оy.
3 Высокий уровень
Реализовать в классе методы:
- конструктор по умолчанию;
- конструктор перезагрузки с параметрами;
- деструктор для освобождения памяти (с сообщением об уничтожении объекта);
- функции-методы обработки данных, указанные в индивидуальном задании;
- функцию формирования строки информации об объекте.
Выполнить обработку исключительных ситуаций.
Создать метод для сохранения полученных данных в файл.
Создать проект для демонстрации работы: сформировать объекты со значениями-константами и с введенными значениями полей объекта.
Задание
1 Создать класс вектор, задаваемый тройкой координат (x, y, z). Реализовать функции: сложения и вычитания векторов, скалярное произведение векторов, вычисление длины вектора.
2 Создать класс деньги для работы с денежными суммами. Число должно быть представлено двумя полями: long для гривни и unsigned char для копеек. Дробная часть (копейки) при выводе должна быть отделена от целой части (гривни) запятой. Реализовать сложение, вычитание, деление сумм, деление суммы на дробное число, умножение на дробное число (для пересчета в другие денежные единицы по заданному курсу).
3 Создать класс треугольник для вычисления его числовых характеристик. Поля данных должны включать стороны. Реализовать функции: вычисления периметра, площади, всех углов и высот треугольника; определения вида треугольника (равносторонний, равнобедренный, прямоугольный).
4 Создать класс два угла для работы с углами на плоскости, которые задаются в градусах с минутами. Реализовать функции: перевод значений углов из минут с секундами в радианы, приведение к диапазону 0-360, сложение и вычитание углов, получение синуса и тангенса угла.
5 Создать класс комплексные числа, которые представляются парой вещественных чисел (a,b) и (c,d), где a, c – действительная часть чисел, b,d − мнимая часть чисел. Реализовать функции: сложения, вычитания, умножения, деления чисел; формирования сопряженного комплексного числа и проверки двух комплексных чисел на равенство.
6 Создать класс рациональные дроби, которые представлены парой чисел (a,b) и (c,d), где a, c − числители, b,d − знаменатель. Реализовать функции: сложения, вычитания, умножения, деления и сокращения дробей; сравнения значений дробей (меньше, равны или больше).
7 Создать класс дата, которое представляется тремя полями типа unsigned int для года, месяца и дня. Дата должна инициализироваться двумя конструкторами в форматах строки «год.месяц.день» и трех целых чисел. Реализовать функции: вычисление даты через заданное количество дней или месяцев, вычитание заданного количества дней из даты, выделение из даты отдельных её частей (года, месяца, дня).
8 Создать класс время, которое представляется тремя полями типа unsigned int для часов, минут и секунд. Время должно инициализироваться двумя конструкторами в форматах строки «часы.минуты.секунды» и трех целых чисел. Реализовать функции: вычисление времени через заданное количество минут или секунд, вычитание заданного количества минут из времени, выделение из времени отдельных его частей (часы,
минуты, секунды).
9 Релизовать класс нечеткие числа, которые представляются тройками чисел: A=(A−al, A, A+ar) B=(B−bl, b, B+br). Реализовать функции:
- сложения A+B =(A+B−al −bl, A+B, A+ B +ar+br);
- вычитания A−B =(A−B−al −bl, A−B, A− B +ar+br);
- умножения A х B= (A х B−B х al −A х bl+ al х bl, A х B, A х B+B х ar +A х br+ ar х br);
- обратное нечеткое числоA-1= (1/(A+ar), 1/A,1/(A−al)), A>0;
- A/B=((A−al)/(B+br),A/B,(A+ar)/(B−bl), B>0.
10 Создать класс товар с полями: наименование товара, дата получения, цена товара, количество единиц товара, номер накладной, по которой товар поступил на склад. Реализовать функции: изменения цены товара, изменения количества товара, вычисления стоимости товара, определения количества дней, месяцев и лет от получения товара.
11 Создать класс BitString для работы с 64-битовыми строками. Битовая строка должна быть представлена двумя полями типа unsigned long. Реализовать функции для операций с битами: and, or, xor, not. Реализовать сдвиг влево и сдвиг вправо на заданное количество битов.
12 Создать класс LongLong для работы с целыми числами из 64-бит. Число должно быть представлено двумя полями: long − старшая часть, unsigned long − младшая часть. Реализовать функции для операций с числами: сложение, вычитание, умножение, деление, деление нацело, остаток от деления.
13 Создать класс зарплата с полями: фамилия, имя, отчество, оклад, дата поступления на работу, процент подоходного налога, количество рабочих дней в месяце. Реализовать функции: вычисления подоходного налога, стажа работы на предприятии, надбавок за стаж, зарплаты (суммы, выдаваемой на руки работнику). Надбавки за стаж составляют 10% оклада при стаже от 5 до 10 лет, 20% − при стаже более 10 лет. Из оклада удерживается подоходный налог и отчисления в пенсионный фонд в размере 1% оклада.
14 Создать класс банковский счет с полями: фамилия и инициалы, номер счета, процент начисления, сумма на счету в гривне. Реализовать функции: смены владельца счета, снять сумму со счета, добавить сумму на счет, начислить проценты, перевести сумму в доллары, перевести сумму в евро, записать сумму прописью (словами).
Практическая работа № 8.
Статические поля и методы класса. Дружественные функции. Перегрузка операторов.
Цель работы. Изучить статические элементы класса. Реализовать дружественные функции и перегруженные операторы.
Контрольные вопросы
1. Предназначение статических полей класса?
2. Правила использования статических полей?
3. Что называется статическим методом класса и его предназначение?
4. Что такое дружественная функция и дружественный класс?
5. Для чего нужны друзья класса?
6. Где реализуются дружественные функции?
7. Синтаксис и объявление дружественных функций?
8. Что такое перегрузка операторов?
9. Синтаксис перегруженного оператора?
10. Предназначение перегруженных операторов?
11. Какими бывают перегруженные операторы и чем они отличаются друг от друга?
12. Использование перегруженных операторов?
Ход работы: