- •Часть 2
- •Часть 2
- •Лабораторная работа №1 Тема: “Простейшие классы”
- •Основные понятия
- •Пример 1: Класс, описывающий окружность.
- •Пример 2: Класс, описывающий точку.
- •Пример 3: Класс, описывающий двумерный массив.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №2 Тема: “Конструкторы и деструкторы”
- •Пример 1: Класс, описывающий животное.
- •Пример 2: Класс, описывающий время.
- •Пример 3: Класс, описывающий двумерный массив.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №3 Тема: “Перегрузка операций”
- •Пример 1: Класс, описывающий окружность.
- •Пример 2: Класс, описывающий прямоугольник.
- •Пример 3: Класс, описывающий строку символов
- •Задания для самостоятельного выполнения
- •Лабораторная работа №4 Тема: “Классы динамических структур” Пример 1: Класс, описывающий двунаправленный список
- •Пример 2: Класс, описывающий бинарное дерево
- •Задания для самостоятельного выполнения
- •Лабораторная работа №5 Тема: “Шаблонные классы”
- •Пример : Класс, описывающий множество.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №6 Тема: “Наследование”
- •Пример 1: Классы, описывающие точку, окружность и конус.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №7 Тема: “Полиморфизм и виртуальные функции”
- •Пример : Классы, описывающие точки и окружности.
- •Задания для самостоятельного выполнения
- •Лабораторная работа №8 Тема: “Разреженные массивы” Пример: Класс, описывающий разреженный массив
- •Задания для самостоятельного выполнения
- •Лабораторная работа №9 Тема: “Виртуальные функции в динамических структурах” Пример: Класс, описывающий базовый класс списка и производный класс стека
- •Задания для самостоятельного выполнения
- •Лабораторная работа №10 Тема: “Вычисление выражений, вводимых с клавиатуры”
- •Пример: Шаблонный класс для вычисления значения выражения, вводимого с клавиатуры
- •Пошаговое выполнение программы
- •Задание для самостоятельного выполнения
Пример 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;
}
