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

Пример 1: Класс, описывающий животное.

#include <iostream>

#include <conio.h>

#include <windows.h>

#include <string>

#include <stdlib.h>

using namespace std;

/*Класс описывает животное*/

class Animal

{

string animalName;//Имя животного

double weight;//вес животного

double age;//возраст животного

public:

Animal(string name, double w, double a):animalName(name), weight(w),age(a)//Основной конструктор

{

if(weight<0)

weight=0;

if(age<0)

age=0;

}

Animal(const Animal& obj)//Конструктор копирования

{

animalName = obj.animalName;

weight = obj.weight;

age = obj.age;

}

string GetAnimalName()const

{

return animalName;

}

double GetAnimalWeight()const

{

return weight;

}

double GetAnimalAge()const

{

return age;

}

bool Eat(unsigned food) //Метод "есть" - вы кормите животное

{

int i = rand();

i %= 2;

if(i)//оно может быть сытым и не будет кушать

{

Weight += food;

cout<<"Ваше животное съело "<<food<<" кг пищи.\n";

return true;

}

cout<<"Ваше животное ещё не проголодалось.\n";

return false;

}

void SetAnimalName(string s)

{

animalName=s;

}

bool SetAnimalAge(double a)

{

if(a>=0)

{

Age = a;

return true;

}

return false;

}

void Output()const

{

cout<<"Имя животного: "<<animalName<<

"\nВес: "<<weight<<

"\nВозраст: "<<age<<endl;

}

};

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

//проверка правильности установки кодировки символов для ввода

{

cerr<<"Fialed to set codepage!"<<endl;

/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

Animal a("Кошка", 10, 0.5);

a.Output();

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

a.Eat(1);

a.Output();

Animal b(a);

b.SetAnimalName("Собака");

b.Output();

b.Eat(5);

b.Output();

_getch();

return 0;

}

Пример 2: Класс, описывающий время.

#include <iostream>

#include <conio.h>

#include <windows.h>

using namespace std;

class CTime

{// Элементы данных: часы, минуты, секунды:

WORD hour, min, sec;

// функции:

public:

/* благодаря значениям по умолчанию можно объединить два конструктора(по умолчанию и основной) в один: */

CTime(WORD _hour=0, WORD _min=0, WORD _sec=0)

{

//согласно спецификации от Microsoft ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/sysinfo/base/systemtime_str.htm

if((_hour<0||_hour>23)||(_min<0||_min>59)||(_sec<0||_sec>59))

{

SYSTEMTIME t;

GetLocalTime(&t);

_hour = t.wHour;

_min = t.wMinute;

_sec = t.wSecond;

}

hour = _hour; min = _min, sec = _sec;

}

//конструктор копирования:

CTime(const CTime& tm)

{

hour = tm.hour; min = tm.min, sec = tm.sec;

}

// функции ввода-вывода:

void Input()

{

do

{

cout << "Задайте время (часы минуты секунды) ";

cin >> hour >> min >> sec;

} while((hour<0||hour>23)||(min<0||min>59)||(sec<0||sec>59));

}

void Output()

{

cout << hour << ":" << min << ":" << sec << endl;

}

// функции доступа:

int GetHour(){return hour;}

int GetMin() {return min;}

int GetSec() {return sec;}

void SetHour(int newhour)

{

if(newhour<0||newhour>23)

{

SYSTEMTIME t;

GetLocalTime(&t);

hour = t.wHour;

}

else

hour = newhour;

}

void SetMin(int newmin)

{

if(newmin<0||newmin>59)

{

SYSTEMTIME t;

GetLocalTime(&t);

min=t.wMinute;

}

else

min = newmin;

}

void SetSec(int newsec)

{

if(newsec<0||newsec>59)

{

SYSTEMTIME t;

GetLocalTime(&t);

sec=t.wSecond;

}

else

sec = newsec;

}

//функция, которая считывает системное время в текущий объект:

void TodayTime()

{

SYSTEMTIME t; /* структура типа SYSTEMTIME определена в заголовочном файле <windows.h> */

GetLocalTime(&t);

/* считываем системное время с помощью функции, объявленной в <windows.h>, при этом заполняется структура t */

/* устанавливаем текущее время, используя элементы структуры t: */

hour = t.wHour;

min = t.wMinute;

sec = t.wSecond;

}

/* функция, которая устанавливает новое системное время, используя элементы данных текущего объекта: */

void SetTime()

{

SYSTEMTIME t; /*структура типа SYSTEMTIME, которая требуется функции SetLocalTime(), устанавливающей системное время: */

/* заполняем структуру t, используя элементы данных текущего объекта и местное время: */

GetLocalTime(&t);

t.wHour = hour;

t.wMinute = min;

t.wSecond = sec; // сотые доли секунды

SetLocalTime(&t); // устанавливаем новое системное ms-help: //MS.VSCC.v80/MS.MSDN.v80/MS.WIN32COM.v10.en/sysinfo/base/setlocaltime.htm

}

};

// пример программы, использующей класс CTime:

int main()

{

//Настройки шрифтов и региональных стандартов:

if(SetConsoleCP(1251)==0)

//проверка правильности установки кодировки символов для ввода

{

cerr<<"Fialed to set codepage!"<<endl;

/* если не удалось установить кодовую страницу, вывод сообщения об ошибке */

}

if(SetConsoleOutputCP(1251)==0)//тоже самое для вывода

{

cerr<<"Failed to set OUTPUT page!"<<endl;

}

CTime tm1, tm2;

tm1.Input();

cout << "Задано время: ";

tm1.Output();

tm2.TodayTime();

cout << "Системное время: ";

tm2.Output();

// Корректируем количество минут в системном времени:

WORD mn;

cout << "Задайте минуты ";

cin >> mn;

tm2.SetMin(mn);

tm2.SetTime();

tm2.TodayTime();

cout << "Новое системное время: ";

tm2.Output();

_getch();

return 0;

}