рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Работа № 2

Работа № 2 - раздел Программирование, ИЗУЧЕНИЕ СРЕДЫ РАЗРАБОТКИ VISUAL C++ Тема:Создание Динамического Массива Объектов. Деструктор ...

Тема:Создание динамического массива объектов. Деструктор объекта. Два типа полиморфизма: принудительное приведение типа, перегрузка функций и перегрузка операторов (унарных и бинарных).

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 [] указатель на массив.

 

Таким образом, мы создали объект Group, который содержит массив объектов Person.

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; }.

Что означает ключевое слово this?

18. Проверьте функцию преобразования типа. В функции int main() далее определите переменную double и присвойте ей объект Person, например,

double age = group.GetPerson(2);.

 

Т.е. совершается неявное преобразование из типа Person в тип double при обращении к объекту. Выведите значение переменной на экран.

19. Перегруженные функции имеют одинаковое название, но разный возвращаемый тип или/и разный список аргументов. Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(intlimit);. Первая функция пусть возвращает средний возраст группы людей, а вторая функция пусть возвращает средний возраст людей в группе, возраст которых не больше некоторого граничного значения limit. Функции отличаются списком аргументов.

20. Проверьте работу перегруженных функций, отобразив на экране подсчитанные два значения среднего возраста.

21. Перегрузите оператор индексирования. Если раньше, чтобы обратиться к элементу массива, нам необходимо было вызывать функцию GetPerson, то, определив оператор индексирования, мы будем использовать только квадратные скобки. Сравните две строки кода:

Person man = group.GetPerson(2);

Person man = group[2];

В объекте 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. Проверим работу оператора с помощью следующих строк кода:

double sum = group[1] + group[3];

cout << sum << endl;


– Конец работы –

Эта тема принадлежит разделу:

ИЗУЧЕНИЕ СРЕДЫ РАЗРАБОТКИ VISUAL C++

На сайте allrefs.net читайте: "ИЗУЧЕНИЕ СРЕДЫ РАЗРАБОТКИ VISUAL C++"

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Работа № 2

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Пользовательский интерфейс
  На рис. 1 приведен внешний вид окна рабочего пространства среды Visual C++ 6.0. Рабочая область разделена на две части: окно рабочей области и окно редактирования. Для граф

Меню и панели инструментов
  Среда разработки Visual C++ обладает набором меню, позволяющим управлять файлами и рабочими областями проектов, настраивать саму среду, а также обращаться к справочной системе, прог

Настройка параметров среды
  Выбрав в меню Tools пункт Options можно вызвать диалоговое окно Options. В этом окне настраиваются параметры Вашей рабочей среды, от которых зависят вид и возможности встроенных в н

Параметры конфигурации проекта
  При работе над проектом в некоторых случаях возникает необходимость изменения параметров конфигурации проекта. Для этого вызовите окно Project Settings, выбрав в ме

Типы мастеров проектов
  В среде Visual C++ можно строить различные типы проектов. Такие проекты после их создания можно компилировать и запускать на исполнение. Фирма Microsoft разработала специальный инст

Выбор типа проекта
Итак, для написания программы нам необходимо создать проект (рабочее пространство). Для этого необходимо запустить Microsoft Visual C++ 6.0. После чего выполняем команду: File – New или нажимаем со

Добавление файлов и классов в проект
  На данном этапе мы рассмотрим добавление файлов в проект, а так же добавление классов. В среде Visual C++ при добавлении классов при помощи встроенного «конструктора» для каждого кл

Создание классов посредством мастера
  В этой главе мы рассмотрим создание классов при помощи мастера. Для этого мы создадим новый пустой консольный проект с именем WizardProject (как создавать проект, я надеюсь, Вы уже

Добавление полей и методов мастеров
  В этой части мы рассмотрим добавление полей данных и методов к нашему проекту, созданному на прошлом шаге, посредством мастера. Для этого откроем проект WizardProject. Доба

Работа № 1
Тема:Классы. Открытые и закрытые уровни доступа. Конструкторы. Инициализация данных объекта. Определение методов. Создание объекта в памяти. Стандартные потоки ввода-вывода.

Глава 4. ПРАВИЛА ОФОРМЛЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
  а) Лабораторная работа состоит в выполнении задания, описания материала в формате MS WORD и подготовке файлов проекта (файлы *.ехе, *.cpp, *.h). Выполнение задания может быть выполн

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги