Лабораторная работа
Объектно-ориентированное программирование (ООП). ЛР1, ЛР2. Вариант 24. ЦВЕТОК
тип — char, дата — int, сумма — float
в среде программирования Visual C++ .NET 2019 (Си++)
Программа

Среда программирования: Visual C++ .NET 2019
Название работы: Объектно-ориентированное программирование (ООП). ЛР1, ЛР2. Вариант 24. ЦВЕТОК тип — char, дата — int, сумма — float
Вид работы: Лабораторная работа
Тематика работы: Алгоритмы
Объем программы: 4 (по десятибалльной шкале)
Уровень сложности: 4 (по десятибалльной шкале)
Разработчик (автор): Программист сайта kursovik.com (письмо автору)
Ключевые слова: ООП, Объектно-ориентированное программирование, класс, уровень доступа, конструктор, объект, метод, объект, память, поток, ввод-вывод, класс Flower, консольный проект, динамический массив объектов, функция, оператор, деструктор
Функции программы:
Лабораторная работа №1 по дисциплине «Объектно-ориентированное программирование».
Классы. Открытые и закрытые уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки ввода-вывода.
1. Создать проект с именем LAB1
2. Создать заголовочный файл и файл исходного кода main.h и main.cpp
3. Описать структуру класса Flower
4. Описать конструкторы с параметрами и по умолчанию.
5. Описать функцию заполнения данными объекта с клавиатуры
6. Описать деструктор
7. Реализовать функцию конструкторов в файле main.cpp
8. Реализовать функцию вывода на экран в файле main.cpp
9. Реализовать функцию ввода данных с клавиатуры для заполнения полей объекта в файле main.cpp
10. Реализовать функционал деструктора в файле main.cpp
Вариант №24. ЦВЕТОК
тип — char
дата — int
сумма — float
Лабораторная работа №2 по дисциплине «Объектно-ориентированное программирование».
Создание динамического массива объектов. Деструктор объекта. Два типа полиморфизма: принудительное приведение типа, перегрузка функций и перегрузка операторов (унарных и бинарных).
1. В среде программирования на С++ создайте консольный проект с именем LAB2 в каталоге LAB2.
2. Переименуйте файл main.h из предыдущей лабораторной в person.h. Создайте файл person.cpp и включите в проект эти два файла. Переместите конструктор и функции объекта Person из main.cpp в файл person.cpp. Таким образом, файл person.h содержит описание объекта Person, а файл person.cpp — реализацию объекта Person.
3. Включите в проект файл main.cpp и очистите тело функции main().
4. Определим объект Group, который будет содержать динамический массив объектов Person. Создайте два файла group.h и group.cpp и включите их в проект.
5. В файле group.h определите с помощью ключевого слова class объект Group.
Данные объекта:
• размер массива (целый тип)
• указатель на массив (тип Person*).
Пусть данные имеют закрытый уровень доступа (private).
6. Опишите конструктор объекта с одним аргументом — размер массива (целый тип) и деструктор объекта.
7. Откройте файл group.cpp. С помощью директивы #include включите необходимые заголовочные файлы.
8. Опишите конструктор объекта с одним аргументом — размер массива (целый тип) и деструктор объекта.
9. Определите конструктор объекта Group. В теле конструктора проинициализируйте данные объекта, т.е. проинициализируйте размер массива значением аргумента конструктора и выделите динамическую память под массив с помощью строки кода:
указатель на массив = new Person[размер массива].
10. В деструкторе объекта освободите память, занимаемую массивом, с помощью строки кода delete [] указатель на массив.
11. Определим открытые (public) методы для объекта Group. Напишите функцию void Group::Print(), которая выводит в цикле for все записи массива на экран. В теле цикла примените ранее написанную функцию Print() для объекта Person.
12. Напишите функцию int Group::Size(), которая возвращает размер массива.
13. Напишите функции void PutPerson(int i, Person& man); и Person& GetPerson(int i);, первая функция заносит объект man типа Person в i-й элемент массива, вторая функция возвращает объект типа Person из i-го элемента массива.
14. Заполните массив данными и затем выведите их на экран. Для этого в теле функции int main() сначала определите массив имен, которые будут заносится в поле ФИО объекта Person, например, char names[5][25] = {"A", "B", "C", "D", "E"};.
Затем создайте объект с именем group типа Group размером пять записей, т.е. Group group(5);.
15. Ниже с помощью цикла for заполните массив данными. Для этого в теле цикла создайте объект Person, проинициализировав все его данные, и с помощью функции PutPerson занесите объект в массив.
16. Выведите массив на экран с помощью строки кода: group.Print();.
17. В этой части лабораторной работы изучим первые два типа полиморфизма — это а) принудительное приведение типа; б) перегрузка функций и операторов.
18. Напишите функцию приведения типа. Для этого с помощью ключевого слова operator напишите функцию объекта Person, которая преобразует тип Person в double. Пусть функция возвращает возраст человека, например, Person::operator double() { return this->Age; }.
19. Проверьте функцию преобразования типа. В функции int main() далее определите переменную double и присвойте ей объект Person, например: double age = group.GetPerson(2);. То есть совершается неявное преобразование из типа Person в тип double при обращении к объекту. Выведите значение переменной на экран.
20. Перегруженные функции имеют одинаковое название, но разный возвращаемый тип или/и разный список аргументов. Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);. Первая функция пусть возвращает средний возраст группы людей, а вторая функция пусть возвращает средний возраст людей в группе, возраст которых не больше некоторого граничного значения limit. Функции отличаются списком аргументов.
21. Проверьте работу перегруженных функций, отобразив на экране подсчитанные два значения среднего возраста.
22. Перегрузите оператор индексирования. В объекте Group с помощью ключевого слова operator определите оператор индексирования, например: Person& Group::operator[](int i). В теле оператора напишите код, возвращающий i-ый элемент массива, т.е. объект Person.
23. Выведите на экран с помощью оператора индексирования любой один элемент массива group, например третий.
24. Перегрузим бинарный оператор, например оператор сложения (+), для объекта Person. Пусть оператор сложения будет возвращать суммарный возраст двух человек. Опишем в объекте Person данный оператор как дружественную функцию с помощью ключевого слова friend, например: friend double operator+(Person& p1, Person& p2);
В файле person.cpp определите оператор сложения, например: double operator + (Person& p1, Person& p2) { return (p1.Age + p2.Age); } Здесь мы напрямую обращаемся к закрытому полю Age объекта Person.
25. Проверим работу оператора с помощью следующих строк кода: double sum = group[1] + group[3]; cout << sum << endl;
+ 0 руб
+ 0 руб
+ 0.00 Бел.руб
+ 0.00 Бел.руб
+ 0.00 тенге
+ 0.00 тенге
Описание (отчет): Есть на 15 страниц, посмотреть оглавление
На данный момент (19 июня 2025) на выполнении находится 28 заказов.
Количество программистов, занятых выполнением текущих заказов: 12.
В текущем месяце (июнь 2025) нами уже выполнено 32 заказа.
В текущем году (2025) нами уже выполнено 357 заказов.
В прошлом году (2024) нами было выполнено 763 заказа.
В позапрошлом году (2023) нами было выполнено 777 заказов.
Количество активных программистов на сайте: 62.
Загруженность отдела заказами: 29%.
Размер архива 219 Кб, все фaйлы прoверены aнтивирусом Кaсперского. Скачать





















К программе прилагается:
Перед покупкой готовой работы не забудьте проверить её оригинальность. Запросить у администратора проверку текущей оригинальности работы по версии системы Антиплагиат.РУ
ВНИМАНИЕ ! Если данный отчет Вам не подходит, то Вы можете заказать написание нового отчета (согласно Вашему оглавлению) автору данной программы. Чтобы узнать цену, нажмите на эту ссылку.

Лабораторная работа №1 по дисциплине «Объектно-ориентированное программирование». Классы . Открытые и закрытые уровни доступа . Конструкторы . Инициализация данных объекта . Определение методов . Создание объекта в памяти . Стандартные потоки ввода-вывода . 1 . Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 2 . Краткая теория . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 3 . Ход выполнения работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 4 . Результаты работы программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5 5 . Список литературы . . . . . . .