Главная » Просмотр файлов » Лабораторные работы МИРЭА 2014

Лабораторные работы МИРЭА 2014 (1017113), страница 11

Файл №1017113 Лабораторные работы МИРЭА 2014 (Лабораторные работы МИРЭА 2014) 11 страницаЛабораторные работы МИРЭА 2014 (1017113) страница 112017-07-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 11)

int x;/* к этим данным имеют доступ только методы данного класса и производных*/

int y;

public:

int a;

int b;

int f1(int x,int y)/* метод класса*/

{

return (x-y);

}

};

class B:A //это объявляется класс, производный от А, при этом наследуются члены классы А

{

public:

int f2(int x)/* метод класса*/

{

/*Здесь могут использоваться члены-данные базового

класса из секции protected.

Так как имя аргумента метода f2() совпадает с именем

поля х из класса А, унаследованного классом В,

то чтобы различить, какая переменная к какому классу

относится, потребовалось уточнить с помощью

спецификатора ::.

Показано, что в теле метода х берется тот, что

унаследован от А, и собственный аргумент х самого

метода f2():*/

A::x=20;

return (x+A::x);

}

};

int main()

{

system("chcp 1251");

cout<<"Здравствуй, мир!";

A min; //создание экземпляров классов А,В

B max;

min.a=10; // Работа с элементами класса А из секции public

min.b=20;

int x1=min.f1(min.a,min.b);

int x2=max.f2(10);//Работа с элементами класса В

cout<<endl<<"x1="<<x1<<" X2="<<x2;

_getch();

//return 0;

}

Пример_2:

#include <iostream.h>

#include <conio.h>

class A

{

protected:

int x;

int y;

public:

int a;

int b;

int f1(int x,int y)

{

return (x-y);

}

};

class B:A

{

public:

int f2(int x)

{

A::x=20;

return (x+A::x);

}

};

int main()

{

system("chcp 1251");

cout<<"Здравствуй, мир!";

A *min=(A *) new A();

B *max=(B *) new B();

min->a=10;

min->b=20;

int x1=min->f1(min->a,min->b);

int x2=max->f2(10);

cout<<endl<<"x1="<<x1<<" X2="<<x2;

_getch();

delete min;

delete max;

}

Пример_3:

/*Новый класс должен будет задавать дополнительную характеристику изделия - его форму*/

#include <iostream.h> //for printf()

#include <conio.h> // for _getch()

//детали изделия в качестве объектов (экземпляров класса)

class produce //начало определения класса

{

private:

int modelnumber; // номер изделия

int partnumber; // номер детали

float cost; // стоимость детали

public:

// установка данных

// функция-член класса

// присваивает данным класса значения своих параметров

void setpart(int mn, int pn, float c)

{

modelnumber=mn;

partnumber=pn;

cost=c;

}

void show() // вывод данных

{

system("chcp 1251");

cout<< endl<<"Номер модели: " << modelnumber;

cout<< endl<<"Номер детали: " << partnumber;

cout<< endl<<"Цена единицы: " << cost;

}

};//конец описания класса

//Объявление класса-наследника с новыми членами:

class MoreProduce:public produce

{

public:

char *ProduceForm; //описание формы изделия

void FormDecl(char *s)

{

ProduceForm=s;

}

void show1()

{

cout<< endl << "Форма изделия: " << ProduceForm;

}

};

// обработка класса в головной программе

int main()

{

MoreProduce newizd;

newizd.setpart(100,200,250.5);

newizd.FormDecl("Square");

newizd.show();

newizd.show1();

_getch();

}

Задания для самостоятельной работы

При выполнении задания к данной лабораторной работе необходимо написать программу, демонстрирующую работу наследования согласно варианту задания.

Варианты лабораторных заданий.

Вариант 1

Создать базовый класс Car (машина), характеризуемый торговой маркой (строка), числом цилиндров, мощностью. Определить методы переназначения и изменения мощности. Создать производный класс Lorry (грузовик), характеризуемый также грузоподъемностью кузова. Определить функции переназначения марки и изменения грузоподъемности.

Вариант 2

Создать класс Pair (пара чисел); определить методы изменения полей и сравнения пар: пара p1 больше пары р2, если (first.pl > first.р2) или (first.pl > first.р2) и (second.pl > second.р2). Определить класс−наследник Fraction с полями: целая часть числа и дробная часть числа. Определить полный набор методов сравнения.

Вариант 3

Создать класс Liquid (жидкость), имеющий поля названия и плотности. Определить методы переназначения и изменения плотности. Создать производный класс Alcohol (спирт), имеющий крепость. Определить методы переназначения и изменения крепости.

Вариант 4

Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс Rectangle (прямоугольник) с полями−сторонами. Определить методы вычисления периметра и площади прямоугольника.

Вариант 5

Создать класс Man (человек), с полями: имя, возраст, пол и вес. Определить методы переназначения имени, изменения возраста и изменения веса. Создать производный класс Student, имеющий поле года обучения. Определить методы переназначения и увеличения года обучения.

Вариант 6

Создать класс Triad (тройка чисел); определить методы изменения полей и вычисления суммы чисел. Определить производный класс Triangle с полями−сторонами. Определить методы вычисления углов и площади треугольника.

Вариант 7

Создать класс Triangle с полями−сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс Equilateral (равносторонний), имеющий поле площади. Определить метод вычисления площади.

Вариант 8

Создать класс Triangle с полями−сторонами. Определить методы изменения сторон, вычисления углов, вычисления периметра. Создать производный класс RightAngled (прямоугольный), имеющий поле площади. Определить метод вычисления площади.

Вариант 9

Создать класс Pair (пара чисел); определить методы изменения полей и вычисления произведения чисел. Определить производный класс RightAngled с полями−катетами. Определить методы вычисления гипотенузы и площади треугольника.

Вариант 10

Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс Date с полями: год, месяц и день. Определить полный набор методов сравнения дат.

Вариант 11

Создать класс Triad (тройка чисел); определить метод сравнения триад. Определить производный класс Time с полями: час, минута и секунда. Определить полный набор методов сравнения моментов времени.

Вариант 12

Реализовать класс−оболочку Number для числового типа float. Реализовать методы сложения и деления. Создать производный класс Real, в котором реализовать метод возведения в произвольную степень, и метод для вычисления логарифма числа.

Вариант 13

Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить производный класс Date с полями: год, месяц и день. Переопределить методы увеличения полей на 1 и определить метод увеличения даты на п дней.

Вариант 14

Реализовать класс−оболочку Number для числового типа double. Реализовать методы умножения и вычитания. Создать производный класс Real, в котором реализовать метод, вычисляющий корень произвольной степени, и метод для вычисления числа π в данной степени.

Вариант 15

Создать класс Triad (тройка чисел); определить методы увеличения полей на 1. Определить класс−наследник Time с данными−член: час, минута, секунда. Переопределить методы увеличения полей на 1 и определить методы увеличения на п секунд и минут.

Вариант 16

Создать базовый класс Pair (пара целых чисел) с операциями проверки на равенство и перемножения полей. Реализовать операцию вычитания пар по формуле (а, b) − (с, d) = (а − b, с − d). Создать производный класс Rational; определить новые операции сложения (a, b) + (c,d) = (ad + bd, bd) и деления (a,b) / (с,d) = (a/d, b/d); переопределить операцию вычитания (а,b) − (c,d) = (a − b,c − d).

Вариант 17

Создать класс Pair (пара чисел); определить метод перемножения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить производный класс Complex с полями: действительная и мнимая части числа. Определить методы умножения (a, b) ×(c,d) = (ас × bd, ad × be) и вычитания (а,b) − (c,d) = (a − b,c − d).

Вариант 18

Создать класс Pair (пара целых чисел); определить методы изменения полей и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить класс−наследник Long с полями: старшая часть числа и младшая часть числа. Переопределить операцию сложения и определить методы умножения и вычитания.

Вариант 19

Создать базовый класс Triad (тройка чисел) с операциями сложения с числом, умножения на число, проверки на равенство. Создать производный класс vector3D, задаваемый тройкой координат. Должны быть реализованы: операция сложения векторов, скалярное произведение векторов.

Вариант 20

Создать класс Pair (пара целых чисел); определить метод умножения на число и операцию сложения пар (а, b) + (с, d) = (а + b, с + d). Определить класс−наследник Money с полями: рубли и копейки. Переопределить операцию сложения и определить методы вычитания и деления денежных сумм.

Контрольные вопросы:

  1. Дайте определение понятию виртуальная функция?

  2. Что такое чистая виртуальная функция? Если в объявлении класса имеется чистая виртуальная функция, как называется такой класс и какие ограничения налагаются на его использование?

  3. Как создать виртуальный конструктор−копировщик?

  4. Как вызвать функцию базового класса из объекта производного класса, если в производном классе эта функция была замешена?

  5. Как вызвать функцию базового класса из объекта производного класса, если в производном классе эта функция не была замешена?

  6. Если в базовом классе функция объявлена как виртуальная, а в производном классе виртуальность функции указана не была, сохранится ли функция как виртуальная в следующем произведенном классе?

  7. С какой целью используется ключевое слово protected?

  8. Динамический полиморфизм достигается посредством использования _ функций и указателей _ класса. (Вставьте пропущенные слова.)

  9. Если при наличии иерархии классов в производном классе опушена перегрузка (не чистой) виртуальной функции, что происходит, когда объект этого производного класса вызывает такую функцию?

  10. Что производный класс наследует из базового класса?

  11. Что производный класс не наследует из базового класса?

  12. В каком порядке вызываются конструкторы и деструкторы класса при создании и удалении объекта производного класса?

  13. Требуются ли конструкторы производному классу, если он не добавляет к базовому классу элементы данных?

  14. Почему лучше передавать объект по ссылке, а не по значению?

Лабораторная работа №7

ПОТОКИ И ИСКЛЮЧЕНИЯ

Цель работы: получить практические навыки решения задач с использованием текстовых файлов на языке С++..

Характеристики

Тип файла
Документ
Размер
3,06 Mb
Тип материала
Высшее учебное заведение

Список файлов лабораторной работы

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее