Объектно-ориентированное программирование. Лабораторная работа №2. Вариант №14. АВТОМОБИЛЬ марка — char* мощность — int стоимость — float
Лабораторная работа
в среде программирования С++ Visual Studio
Среда программирования: С++ Visual Studio
Название работы: Объектно-ориентированное программирование. Лабораторная работа №2. Вариант №14. АВТОМОБИЛЬ марка — char* мощность — int стоимость — float
Вид работы: Лабораторная работа
Описание: Объектно-ориентированное программирование
Лабораторная работа №2
Вариант №14
1. Вариант задания
14. АВТОМОБИЛЬ
марка — 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. Определите конструктор объекта Group. В теле конструктора проинициализируйте данные объекта, т.е. проинициализируйте размер массива значением аргумента конструктора и выделите динамическую память под массив с помощью строки кода:
указатель на массив = new Person[размер массива].
9. В деструкторе объекта освободите память, занимаемую массивом, с помощью строки кода
delete [] указатель на массив.
10. Определим открытые (public) методы для объекта Group. Напишите функцию void Group::Print(), которая выводит в цикле for все записи массива на экран. В теле цикла примените ранее написанную функцию Print() для объекта Person.
11. Напишите функцию int Group::Size(), которая возвращает размер массива.
12. Напишите функции void PutPerson(int i, Person& man); и Person& GetPerson(int i);, первая функция заносит объект man типа Person в i-й элемент массива, вторая функция возвращает объект типа Person из i-го элемента массива.
13. Заполните массив данными и затем выведите их на экран. Для этого в теле функции int main() сначала определите массив имен, которые будут заносится в поле ФИО объекта Person, например,
char names[5][25] = {"A", "B", "C", "D", "E"};.
Затем создайте объект с именем group типа Group размером пять записей, т.е. Group group(5);.
14. Ниже с помощью цикла for заполните массив данными. Для этого в теле цикла создайте объект Person, проинициализировав все его данные, и с помощью функции PutPerson занесите объект в массив.
15. Выведите массив на экран с помощью строки кода: group.Print();.
16. В этой части лабораторной работы изучим первые два типа полиморфизма — это а) принудительное приведение типа; б) перегрузка функций и операторов.
17. Напишите функцию приведения типа. Для этого с помощью ключевого слова operator напишите функцию объекта Person, которая преобразует тип Person в double. Пусть функция возвращает возраст человека, например, Person::operator double() { return this->Age; }.
18. Проверьте функцию преобразования типа. В функции int main() далее определите переменную double и присвойте ей объект Person, например:
double age = group.GetPerson(2);.
То есть совершается неявное преобразование из типа Person в тип double при обращении к объекту. Выведите значение переменной на экран.
19. Перегруженные функции имеют одинаковое название, но разный возвращаемый тип или/и разный список аргументов. Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);. Первая функция пусть возвращает средний возраст группы людей, а вторая функция пусть возвращает средний возраст людей в группе, возраст которых не больше некоторого граничного значения limit. Функции отличаются списком аргументов.
20. Проверьте работу перегруженных функций, отобразив на экране подсчитанные два значения среднего возраста.
21. Перегрузите оператор индексирования.
В объекте Group с помощью ключевого слова operator определите оператор индексирования, например:
Person& Group::operator[](int i).
В теле оператора напишите код, возвращающий i-ый элемент массива, т.е. объект Person.
22. Выведите на экран с помощью оператора индексирования любой один элемент массива group, например третий.
23. Перегрузим бинарный оператор, например оператор сложения (+), для объекта 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.
24. Проверим работу оператора с помощью следующих строк кода.
Год: 2023
Данный заказ (лабораторная работа) выполнялся нашим сайтом в 2023-м году, в рамках этого заказа была разработана программа в среде программирования С++ Visual Studio. Если у Вас похожее задание на программу, которую нужно написать на С++ Visual Studio, либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2023-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Viber:
+79374242235
Telegram: kursovikcom ВКонтакте: kursovikcom WhatsApp +79374242235 E-mail: info@kursovik.com Skype: kursovik.com |