OOP / Лаб 5
.docxМинистерство образования и науки Украины
Одесский национальный политехнический университет
Кафедра системного программного обеспечения.
Протокол лабораторной работы № 5
По дисциплине:
Объектно-ориентированное программирование
Вариант 10
Выполнил
студент AC-121
Куценко Дмитрий Сергеевич
Преподаватель Левченко А.Ю
Одесса 2013 (год)
Лабораторная работа №5 „Статические данные и методы.
Используя задание к лабораторной работе №1 создать класс Прибор, описав некоторые данные как статические.
Ввести в класс статические методы для работы со статическими данными (габариты, гарантийный срок, диапазон температур, источник питания, погрешность измерения, поставщик). Выбор конкретных данных определяется преподавателем.
Продемонстрировать работу со статическими данными и методами.
Код программы
#include <iostream>
#include <string>
#include <locale>
using namespace std;
// начало объявления класса
class Pribor // имя класса
{
private: // спецификатор доступа public
string name;
public:
Pribor( string prib_name)// конструктор класса имя
{setPrib(prib_name);// вызов функции
}
void setPrib(string prib_name){name = prib_name;// инициализация имени
}
void getName(){ setlocale( LC_ALL,"Russian" );
cout<<"\n----------------------------------------------------------------------------\n";
cout<<"Имя:"<<name<<"|*|";
}
private:
float ves;
public:
Pribor(float prib_ves) //конструктор класса Вес
{ setPribVes(prib_ves); }
void setPribVes(float prib_ves)
{ves = prib_ves;}
void getVes()
{setlocale( LC_ALL,"Russian" );
cout<<"Вес:"<<ves<<"|*|";}
private:
int niz,verx; static int pogr;
public:
Pribor(int prib_niz, int prib_verx, int prib_pogr)//конструктор класса Измерения
{ setPribIzm(prib_niz,prib_verx,prib_pogr);}
void setPribIzm(int prib_niz, int prib_verx, int prib_pogr)
{ niz = prib_niz;
verx = prib_verx;
pogr = prib_pogr;
}
void getIzm()
{setlocale( LC_ALL,"Russian" );
cout<<"Нижний придел:"<<niz<<"|*|"<<"Верхний придел:"<<verx<<"|*|"<<"Погрешность:"<<pogr;}
public:
static void addInf(){setlocale( LC_ALL,"Russian" );
string name; float ves; int n; int niz; int verx; int pogr;
cout<<"Введите количество приборов:\n";
cin>>n;
Pribor objPribor(name);
Pribor *Pribors[50];// массив ссылок приборы
for (int i = 0; i < n; i ++)
{
cout<<"Прибор №"<<1+i;
cout<<"\n**********************";
cout<<"\nВведите название прибора:";
cin>>name;
cout<<"\nВведите вес прибора:";
cin>>ves;
cout<<"\nВведите нижний придел измерений:";
cin>>niz;
cout<<"\nВведите верхний придел измерений:";
cin>>verx;
cout<<"\nВведите погрешность измерений:";
cin>>pogr;
Pribors[i] = new Pribor(name);//выделение памяти под объект прибор
Pribors[i]->setPribVes(ves);
Pribors[i]->setPribIzm(niz,verx,pogr);
}
for (int i = 0; i < n; i ++){
Pribors[i]->getName();//вывод информации
Pribors[i]->getVes();
Pribors[i]->getIzm();
}
}
private:
static int minc,maxc,gsrok;
public:
Pribor(){
minc++;
maxc++;
gsrok++;
}
int getstat(){
return minc;
}
static void setif(){
Pribor m1,m2,g3;//создание трех обьектов,каждый обьект видит одно и тоже значение
setlocale( LC_ALL,"Russian" );
cout<<"\nПрибор мин:"<<m1.getstat();
cout<<"\nПрибор мах:"<<m2.getstat();
cout<<"\nПрибор срок:"<<g3.getstat();
system ("pause");
}
};// конец объявления класса
int Pribor::pogr=0;//определение pogr
int Pribor::minc=0;//определение minc
int Pribor::maxc=0;
int Pribor::gsrok=0;
void main()
{
Pribor::setif();
Pribor::addInf();//вызов статической функции
}