Читаем Язык программирования C++. Пятое издание полностью

Классы и операторы интерфейса программы запросов
TextQueryКласс, который читает указанный файл и создает карту поиска. Этот класс предоставляет функцию поиска query(), которая получает строковый аргумент и возвращает объект класса QueryResult, представляющий строки, в которых присутствует ее аргумент (см. раздел 12.3.2)
QueryResultКласс, содержащий результаты вызова функции query() (см. раздел 12.3.2)
QueryКласс интерфейса, указывающий на объект типа, производного от класса Query_base
Query q(s)Связывает объект q класса Query с новым объектом класса WordQuery, содержащим строку s
q1 & q2Возвращает объект класса Query, связанный с новым объектом класса AndQuery, который содержит объекты q1 и q2
q1 | q2Возвращает объект класса Query, связанный с новым объектом класса OrQuery, содержащим объекты q1 и q2
~qВозвращает объект класса Query, связанный с новым объектом класса NotQuery, содержащим объект q
Классы реализации программы запросов
Query_baseАбстрактный класс, базовый для классов запроса
WordQueryКласс, производный от класса Query_base, который ищет указанное слово
NotQueryКласс, производный от класса Query_base, представляющий набор строк, в которых указанный операнд Query отсутствует
BinaryQueryАбстрактный базовый класс, производный от класса Query_base, который представляет запросы с двумя операндами типа Query
OrQueryКласс, производный от класса BinaryQuery, который возвращает набор номеров строк, в которых присутствует хотя бы один из операндов
AndQueryКласс, производный от класса BinaryQuery, который возвращает набор номеров строк, в которых присутствуют оба операнда
Упражнения раздела 15.9.1

Упражнение 15.31. При условии, что s1, s2, s3 и s4 являются строками укажите, какие объекты создаются в следующих выражениях:

(a) Query(s1) | Query(s2) & ~ Query(s3);

(b) Query(s1) | (Query(s2) & ~ Query(s3));

(c) (Query(s1) & (Query(s2)) | (Query(s3) & Query(s4)));

<p>15.9.2. Классы <code>Query_base</code> и <code>Query</code></p>

Начнем реализацию с определения класса Query_base:

// абстрактный класс, являющийся базовым для конкретных типов запроса;

// все члены закрыты

class Query_base {

 friend class Query;

protected:

 using line_no = TextQuery::line_no; // используется в функциях eval()

 virtual ~Query_base() = default;

private:

 // eval() возвращает соответствующий запросу QueryResult

 virtual QueryResult eval(const TextQuery&) const = 0;

 // rep() строковое представление запроса

 virtual std::string rep() const = 0;

};

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных