Язык программирования C++. Пятое издание - [12]
Не забывайте, что существуют и другие способы оформления кода. При выборе стиля оформления учитывайте удобочитаемость кода, а выбрав стиль, придерживайтесь его неукоснительно на протяжении всей программы.
1.5. Введение в классы
Единственное средство, которое осталось изучить перед переходом к решению проблемы книжного магазина, — это определение структуры данных для хранения данных транзакций. Для определения собственных структур данных язык С++ предоставляет классы (class). Класс определяет тип данных и набор операций, связанных с этим типом. Механизм классов — это одно из важнейших средств языка С++. Фактически основное внимание при проектировании приложения на языке С++ уделяют именно определению различных типов классов (class type), которые ведут себя так же, как встроенные типы данных.
В этом разделе описан простой класс, который можно использовать при решении проблемы книжного магазина. Реализован этот класс будет в следующих главах, когда читатель больше узнает о типах, выражениях, операторах и функциях.
Чтобы использовать класс, необходимо знать следующее.
1. Каково его имя?
2. Где он определен?
3. Что он делает?
Предположим, что класс для решения проблемы книжного магазина имеет имя >Sales_item
, а определен он в заголовке >Sales_item.h
.
Как уже было продемонстрировано на примере использования таких библиотечных средств, как объекты ввода и вывода, в код необходимо включить соответствующий заголовок. Точно так же заголовки используются для доступа к классам, определенным для наших собственных приложений. Традиционно имена файлов заголовка совпадают с именами определенных в них классов. У написанных нами файлов заголовка, как правило, будет суффикс >.h
, но некоторые программисты используют расширение >.H
, >.hpp
или >.hxx
. У заголовков стандартной библиотеки обычно нет никакого суффикса вообще. Компиляторы, как правило, не заботятся о форме имен файлов заголовка, но интегрированные среды разработки иногда это делают.
1.5.1. Класс >Sales_item
Класс >Sales_item
предназначен для хранения ISBN, а также для отслеживания количества проданных экземпляров, полученной суммы и средней цены проданных книг. Не будем пока рассматривать, как эти данные сохраняются и вычисляются. Чтобы применить класс, необходимо знать, что он делает, а не как.
Каждый класс является определением типа. Имя типа совпадает с именем класса. Следовательно, класс >Sales_item
определен как тип >Sales_item
. Подобно встроенным типам данных, вполне можно создать переменную типа класса. Рассмотрим пример.
>Sales_item item;
Этот код создает объект >item
типа >Sales_item
. Как правило, об этом говорят так: создан "объект типа >Sales_item
", или "объект класса >Sales_item
", или даже "экземпляр класса >Sales_item
".
Кроме создания переменных типа >Sales_item
, с его объектами можно выполнять следующие операции.
• Вызывать функцию >isbn()
, чтобы извлечь ISBN из объекта класса >Sales_item
.
• Использовать операторы ввода (>>>
) и вывода (><<
), чтобы читать и отображать объекты класса >Sales_item
.
• Использовать оператор присвоения (>=
), чтобы присвоить один объект класса >Sales_item
другому.
• Использовать оператор суммы (>+
), чтобы сложить два объекта класса >Sales_item
. ISBN этих двух объектов должен совпадать. Результатом будет новый объект >Sales_item
с тем же ISBN, а количество проданных экземпляров и суммарный доход будут суммой соответствующих значений его операндов.
• Использовать составной оператор присвоения (>+=
), чтобы добавить один объект класса >Sales_item
к другому.
Читая эти программы, очень важно иметь в виду, что все действия, которые могут быть осуществлены с объектами класса >Sales_item
, определяет его автор. Таким образом, класс >Sales_item
определяет то, что происходит при создании объекта класса >Sales_item
, а также то, что происходит при его присвоении, сложении или выполнении операторов ввода и вывода.
Автор класса вообще определяет все операции, применимые к объектам типа класса. На настоящий момент с объектами класса >Sales_item
можно выполнять только те операции, которые перечислены в этом разделе.
>Sales_item
Теперь, когда известны операции, которые можно осуществлять, используя объекты класса >Sales_item
, можно написать несколько простых программ, использующих его. Программа, приведенная ниже, читает данные со стандартного устройства ввода в объект >Sales_item
, а затем отображает его на стандартном устройстве вывода.
>#include
>#include "Sales_item.h"
>int main()
>{
> Sales_item book;
> // прочитать ISBN, количество проданных экземпляров и цену
> std::cin >> book;
> // вывести ISBN, количество проданных экземпляров,
> // общую сумму и среднюю цену
> 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 доллара.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.