Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
met_OOP_4s_2010.doc
Скачиваний:
1
Добавлен:
10.11.2019
Размер:
894 Кб
Скачать
☆

*Задание к программе 2.4

Упражнения:

  1. Вставьте отладочную печать в конструктор, конструктор копирования и деструктор. Подсчитайте число их вызовов и объясните результат.

  2. Закомментируйте прототип и определение конструктора копии и запустите программу на исполнение, объясните результат.

  3. Проверьте, работает ли перегруженная операция для трех массивов (d=a+b+c;).

Задание (общее)

  1. Разработайте перегруженную операцию вычитания массивов.

  2. Разработайте перегруженную операцию вычисления скалярного произведения векторов (компонентами вектора являются элементы массива).

  3. Разработайте дружественную перегруженную операцию суммирования массивов.

2. Контрольные вопросы к лабораторной работе №2

  1. Перечислите, по крайней мере, три причины необходимости применения дружественных функций.

  2. В чем отличие дружественной функции-члена класса от дружественной функции, не являющейся членом класса?

  3. В каком месте определения класса можно объявлять дружественность функции? Привести пример.

  4. Можно ли создавать перегруженные дружественные функции? Привести пример.

  5. Как сделать предварительное объявление класса и для чего это необходимо?

  6. Как обеспечивается доступ к элементам класса в дружественных функциях?

  7. Приведите собственные примеры перегрузки операций.

  8. Перечислить операции языка С++ которые нельзя сделать перегруженными.

  9. *Приведите пример определения и инициализировать статический член класса.

  10. *Дайте определение ссылки. В чем отличие ссылки от указателя?

  11. *Дайте определение конструктора копирования.

Объектно-ориентированное программирование Лабораторная работа №3 Наследование

Цель работы – изучить простейшие элементы наследования в языке С++, научиться создавать производные классы с множественным наследованием.

1. Задание к лабораторной работе

Программа 3.1. Программа демонстрирует назначение и синтаксис оформления простого наследования и множественного наследования классов. Ниже приведена схема иерархии наследования. Для наглядности исходного текста программы, она разбита на несколько модулей. При компиляции и линковке удобно все модули поместить в один каталог. Для предотвращения возможного включения текста заголовочных файлов в программу более одного раза применяются директивы #ifndef (если не определен), #define, #endif.

Рис.1. Иерархия наследования классов

//Файл univer.h ***Класс УНИВЕРСИТЕТ***

#ifndef _UNIVER_H

#define _UNIVER_H

#include <iostream.h>

class University{

char nameUniversity[40]; //Наименование

public:

void set_University();

void show_University() {cout<<nameUniversity;}

char *get_University() {return nameUniversity;}

};

void University::set_University()

{

cout<<"Введите название университета: ";

cin>>nameUniversity;

}

#endif

//Файл faculty.h ***Класс ФАКУЛЬТЕТ***

#ifndef _FACULTY_H

#define _FACULTY_H

#include <iostream.h>

#include "univer.h"

class Faculty: public University{

char nameFaculty[40];

public:

void set_Faculty();

void show_Faculty() {cout<<nameFaculty;}

char *get_Faculty() {return nameFaculty;}

};

void Faculty::set_Faculty()

{

cout<<"Введите название факультета: ";

cin>>nameFaculty;

}

#endif

//Файл group.h ***Класс ГРУППА***

#ifndef _GROUP_H

#define _GROUP_H

#include <iostream.h>

#include "faculty.h"

class Group: public Faculty{

int numberGroup;

public:

void set_Group();

int get_Group() {return numberGroup;}

};

void Group::set_Group()

{

cout<<"Введите номер группы: ";

cin>>numberGroup;

}

#endif

//Файл lab3.cpp

#include <iostream.h>

#include "group.h"

class Man{ //класс "ЧЕЛОВЕК"

char name[40]; //Имя

int age; //Возраст

char sex; //Пол

public:

void set_nameMan() {cout<<"Введите фамилию: "; cin>>name;}

char *get_nameMan() {return name;}

void set_dataMan();

void show_dataMan();

};

class Student: public Man, public Group{

int year; //Год обучения

long number; //Номер зачетной книжки

public:

void set_dataStudent();

void show_dataStudent();

};

void Man::set_dataMan()

{

set_nameMan();

cout<<"возраст: "; cin>>age;

cout<<"пол (м/ж): "; cin>>sex;

}

void Man::show_dataMan()

{

cout<<get_nameMan()<<" "<<age<<" "<<sex<<endl;

}

void Student::set_dataStudent()

{

set_University();

set_Faculty();

set_Group();

set_dataMan();

cout<<"Введите год обучения :"; cin>>year;

cout<<"номер зачетной книжки: "; cin>>number;

}

void Student::show_dataStudent()

{

cout<<endl;

cout<<get_University()<<" Факультет "<<get_Faculty()<<endl;

cout<<"Группа "<<get_Group()<<" "<<year<<" курс "<<endl;

show_dataMan();

cout<<"Номер зачетной книжки "<<number<<endl;

}

int main()

{

Student st;

st.set_dataStudent();

st.show_dataStudent();

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]