Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Абстрактные классы.rtf
Скачиваний:
6
Добавлен:
10.07.2019
Размер:
2.25 Mб
Скачать

2.2. Примеры классов

Следующие два примера классов иллюстрируют конструкторы класса в С++. Класс Temperature поддерживает записи значений высокой и низкой температуры. В качестве приложения объект мог бы иметь высокую (точка кипения) и низкую (точка замерзания) температуры воды. ADT RandomNumber определяет тип для создания последовательности целых или с плавающей точкой случайных чисел. В реализации C++ конструктор позволяет клиенту самому инициализировать последовательность случайных чисел или использовать программный способ получения последовательности с системно-зависимой функцией времени.

2.2.1. Класс 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

2.2.2. Реализация класса 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

*/