
- •1. Пользовательский тип — класс
- •Объявление класса
- •Пример 1.
- •Конструктор
- •Объявление объекта
- •Реализация класса
- •Реализация конструктора
- •Создание объектов
- •Пример 2.
- •2. Примеры классов
- •Класс Temperature
- •Реализация класса Temperature
- •Класс случайных чисел
- •Пример 3.
- •Реализация класса RandomNumber
- •3. Объекты и передача информации
- •Объект как возвращаемое значение
- •Объект как параметр функции
- •4. Массивы объектов
- •Конструктор умолчания
- •5. Множественные конструкторы
- •Реализация класса Date
- •6. Практическое применение: Треугольные матрицы
- •Свойства верхней треугольной матрицы
- •Хранение треугольной матрицы
- •Пример 4.
- •Пример 5.
- •Класс TriMat
- •Реализация класса TriMat
2. Примеры классов
Следующие два примера классов иллюстрируют конструкторы класса в С++. Класс Temperature поддерживает записи значений высокой и низкой температуры. В качестве приложения объект мог бы иметь высокую (точка кипения) и низкую (точка замерзания) температуры воды. ADT RandomNumber определяет тип для создания последовательности целых или с плавающей точкой случайных чисел. В реализации C++ конструктор позволяет клиенту самому инициализировать последовательность случайных чисел или использовать программный способ получения последовательности с системно-зависимой функцией времени.
Класс Temperature
Класс Temperature содержит информацию о значениях высокой и низкой температуры. Конструктор присваивает начальные значения двум закрытым данным-членам highTemp и lowTemp, которые являются числами с плавающей точкой. Метод UpdateTemp принимает новое значение данных и определяет, должно ли обновляться одно из значений температуры в объекте. Если отмечается новое самое низкое значение, то обновляется lowTemp. Аналогично, новое самое высокое значение изменит highTemp. Этот класс имеет два метода доступа к данным: GetHighTemp возвращает самую высокую температуру, a GetLowTemp возвращает самую низкую температуру.
Спецификация класса Temperature
ОБЪЯВЛЕНИЕ
class Temperature
{
private:
float highTemp, lowTemp; // закрытые данные-члены
public:
Temperature(float h, float l);
void UpdateTemp(float temp);
float GetHighTemp(void) const;
float GetLowTemp(void) const;
};
ОБСУЖДЕНИЕ
Конструктору должны быть переданы начальные высокая и низкая температуры для объекта. Эти значения могут быть изменены методом UpdateTemp. Методы GetLowTemp и GetHighTemp являются константными функциями, так как они не изменяют никакие данные-члены в классе.
ПРИМЕР
//точка кипения/замерзания воды по Фаренгейту
Temperature fwater(212,32);
//точка кипения/замерзания воды по Цельсию
Temperature cwater(100, 0) ;
cout << Вода замерзает при<<cwater.GetLowtemp << " С"<< endl;
cout << Вода кипит при << fwater.GetHighTemp << " F" << endl;
Выход:
Вода замерзает при 0 С
Вода кипит при 212 F
Реализация класса Temperature
Каждый метод в классе записывается вне тела класса с использованием оператора области действия. Конструктор принимает начальные показания высокой и низкой температуры, которые присваиваются полям highTemp и lowTemp. Эти значения могут изменяться только методом UpdateTemp, когда новая высокая или низкая температура передаются в качестве параметра. Функции доступа GetHighTemp и GetLowTemp возвращают значение высокой и низкой температуры.
//Конструктор: присвоить данные: highTemp=h и lowTemp=l
Temperature::Temperature(float h, float l): highTemp(h),
lowTemp(l)
{}
//обновление текущих показаний температуры
void Temperature::UpdateTemp (float temp)
{
if (temp>highTemp)
highTemp = temp;
else if (temp<lowTemp)
lowTemp = temp;
}
//возвратить high (самая высокая температура)
float Temperature::GetHighTemp (void) const
{
return highTemp;
}
//возвратить low (самая низкая температура)
float Temperature::GetLowTemp (void) const
{
return lowTemp;
}
Программа 2. Использование класса Temperature
// Example2.cpp
#include <iostream.h>
#include "temp.h"
void main (void)
{
Temperature today (70,50);
float temp;
cout << "Введите температуру в полдень: ";
cin >> temp;
// обновить объект для включения дневной температуры
today.UpdateTemp (temp) ;
cout << "В полдень: Наивысшая :" << today.GetHighTemp ();
cout << " Низшая " << today.GetLowTemp ()<<endl;
cout << "Введите вечернюю температуру: ";
cin >> temp;
//обновить объект для включения вечерней температуры
today.UpdateTemp (temp) ;
cout << "Сегодня наивысшая :" << today.GetHighTemp();
cout << " Низшая " << today.GetLowTemp() << endl;
}
/*
<3апуск программы pr03_02.cpp>
Введите температуру в полдень: 80
В полдень: Наивысшая :80 Низшая 50
Введите вечернюю температуру: 40
Сегодня наивысшая :80 Низшая 40
*/