Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

OOP / Лаб 2

.docx
Скачиваний:
27
Добавлен:
10.02.2016
Размер:
19.54 Кб
Скачать

Министерство образования и науки Украины

Одесский национальный политехнический университет

Кафедра системного программного обеспечения.

Протокол лабораторной работы № 2

По дисциплине:

Объектно-ориентированное программирование

Вариант 10

Выполнил

студент AC-121

Куценко Дмитрий Сергеевич

Преподаватель Кунгурцев О. Б.

Одесса 2013 (год)

Лабораторная работа №2 „Наследование. Язык С++”

Исходные данные для лабораторной работы

Используютcя исходные данные для лабораторной работы №1. Кроме этого, используются дополнительные характеристики прибора, приведенные в таблице 2.

Таблица 1. Характеристики приборов, реализуемые в варианте задания.

№ варианта

Характеристики прибора

10

1,3,8

1.Наименование прибора.

  1. Габариты: длина, высота, ширина.

  1. Вес.

  2. Стоимость.

  3. Гарантийный срок.

  4. Диапазон температур: tmin, tmax.

  5. Источник питания: напряжение, ток, частота.

  6. Измерения. Имеется несколько измеряемых величин. Каждая характеризуется:

названием измеряемой величины;

нижним пределом;

верхним пределом;

погрешностью.

  1. Покупные изделия. Имеется несколько покупных изделий. Каждое характеризуется:

названием;

количеством;

названием поставщика

  1. Заказчик. Имеется несколько заказчиков. Каждый характеризуется:

Наименованием;

адресом;

количеством заказанных приборов.

Таблица 2. Дополнительные характеристики приборов.

№ варианта

Дополнительные характеристики прибора

10

4

Выполнение лабораторной работы

  • Создать иерархию из трёх классов (Абстрактный ←Класс1←Класс2). Характеристики прибора из таблицы 1 реализуются в классах Абстрактный и Класс1.

  • Характеристики прибора из таблицы 2 реализуются в Класс2.

  • Определить виртуальную функцию в Абстрактном классе.

  • Реализовать абстрактные функции для объектов Класса1 и Класса2.

  • Продемонстрировать работу с объектами разных классов и использование виртуальных функций.

Код программы

#include <iostream>

#include <string>

#include <locale>

using namespace std;

class Abstract

{

protected:

string name; float niz,verx; int pogr; float ves;

public:

Abstract( string prib_name,float prib_niz, float prib_verx,int pogr_prib,float ves_prib)

{

Abstract::name= prib_name;

Abstract::niz = prib_niz;

Abstract::verx = prib_verx;

Abstract::pogr= pogr_prib;

Abstract::ves= ves_prib;

}

virtual void getIn()=0;

virtual void setIn()=0;

};

class Klass1 : public Abstract

{

public:

Klass1(string prib_name,float prib_niz, float prib_verx,int pogr_prib,float ves_prib):

Abstract(prib_name,prib_niz, prib_verx,pogr_prib,ves_prib){}

void getIn()

{

setlocale( LC_ALL,"Russian" );

cout<<"Название товара:"<<"|*|"<<name<<"Нижний придел:"<<niz<<"|*|"<<"Верхний придел:"<<verx<<"|*|"<<"Погрешность:"<<pogr<<"Вес:"<<ves<<"Цена:";

}

virtual void setIn()

{ setlocale( LC_ALL,"Russian" );

cout<<"Название товара: "; cin>>name;

cout<<"Нижний придел: "; cin>>niz;

cout<<"Верхний придел: "; cin>>verx;

cout<<"Погрешность: "; cin>>pogr;

cout<<"Вес: "; cin>>ves;

cout<<"Цена ";

}

};

class Klass2 : public Klass1

{

protected:

float cena;

public:

Klass2(float cena_prib,string prib_name,float prib_niz, float prib_verx,int pogr_prib,float ves_prib):

Klass1(prib_name,prib_niz,prib_verx, pogr_prib, ves_prib)

{

cena=cena_prib;

}

void getIn()

{

setlocale( LC_ALL,"Russian" );

cout<<"\n============================================================\n";

cout<<"Название товара:"<<name<<"|*|"<<"Нижний придел:"<<niz<<"|*|"<<"Верхний придел:"<<verx<<"|*|"<<"Погрешность:"<<pogr<<"Вес:"<<ves<<"Цена:"<<cena;

}

virtual void setIn()

{ setlocale( LC_ALL,"Russian" );

cout<<"Название товара: "; cin>>name;

cout<<"Нижний придел: "; cin>>niz;

cout<<"Верхний придел: "; cin>>verx;

cout<<"Погрешность: "; cin>>pogr;

cout<<"Вес: "; cin>>ves;

cout<<"Цена "; cin>>cena;

}

};

void main()

{

setlocale( LC_ALL,"Russian" );

string name; float ves,cena; int n;float niz; float verx; int pogr;

cout<<"Введите количество приборов:\n";

cin>>n;

Abstract *Pribors[50];// массив ссылок приборы

for (int i = 0; i < n; i ++)

{

cout<<"Прибор № "<<1+i<<endl;

Pribors[i] = new Klass2(cena,name,niz,verx, pogr, ves);

Pribors[i]->setIn();

}

for (int i = 0; i < n; i ++)

{

Pribors[i]->getIn();//вывод информации

}

}

Соседние файлы в папке OOP