Теперь, когда известны операции, которые можно осуществлять, используя объекты класса Sales_item
, можно написать несколько простых программ, использующих его. Программа, приведенная ниже, читает данные со стандартного устройства ввода в объект Sales_item
, а затем отображает его на стандартном устройстве вывода.
#include
#include "Sales_item.h"
int main()
{
Sales_item book;
//
std::cin >> book;
//
//
std::cout << book << std::endl;
return 0;
}
Если ввести значения 0-201-70353-X 4 24.99
, то будет получен результат 0-201-70353-X 4 99.96 24.99
.
Во вводе было указано, что продано четыре экземпляра книги по 24,99 доллара каждый, а вывод свидетельствует, что всего продано четыре экземпляра, общий доход составлял 99,96 доллара, а средняя цена на книгу получилась 24,99 доллара.
Код программы начинается двумя директивами #include
, одна из которых имеет новую форму. Заголовки стандартной библиотеки заключают в угловые скобки (<>
), а те, которые не являются частью библиотеки, — в двойные кавычки (""
).
В функции main()
определяется объект book
, используемый для хранения данных, читаемых со стандартного устройства ввода. Следующий оператор осуществляет чтение в этот объект, а третий оператор выводит его на стандартное устройство вывода, сопровождая манипулятором endl
.
Sales_item
Немного интересней пример суммирования двух объектов класса Sales_item
.
#include
#include "Sales_item.h"
int main() {
Sales_item item1, item2;
std::cin >> item1 >> item2; //
std::cout << item1 + item2 << std::endl; //
return 0;
}
Если ввести следующие данные:
0-201-78345-X 3 20.00
0-201-78345-X 2 25.00
то вывод будет таким:
0-201-78345-X 5 110 22
Программа начинается с включения заголовков Sales_item
и iostream
. Затем создаются два объекта (item1
и item2
) класса Sales_item
, предназначенные для хранения транзакций. В эти объекты читаются данные со стандартного устройства ввода. Выражение вывода суммирует их и отображает результат.
Обратите внимание: эта программа очень похожа на программу, приведенную в разд 1.2: она читает два элемента данных и отображает их сумму. Отличаются они лишь тем, что в первом случае суммируются два целых числа, а во втором — два объекта класса Sales_item
. Кроме того, сама концепция "суммы" здесь различна. В случае с типом int
получается обычная сумма — результат сложения двух числовых значений. В случае с объектами класса Sales_item
используется концептуально новое понятие суммы — результат сложения соответствующих компонентов двух объектов класса Sales_item
.
Неоднократный ввод этих транзакций при проверке программы может оказаться утомительным. Большинство операционных систем поддерживает перенаправление файлов, позволяющее ассоциировать именованный файл со стандартным устройством ввода и стандартным устройством вывода:
$ addItems
Здесь подразумевается, что $
— это системное приглашение к вводу, а наша программа суммирования была откомпилирована в исполняемый файл addItems.exe
(или addItems
на системе UNIX). Эта команда будет читать транзакции из файла infile
и записывать ее вывод в файл outfile
в текущем каталоге.
Упражнение 1.20. По адресу http://www.informit.com/title/032174113
в каталоге кода первой главы содержится копия файла Sales_item.h
. Скопируйте этот файл в свой рабочий каталог и используйте при написании программы, которая читает набор транзакций проданных книг и отображает их на стандартном устройстве вывода.