Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Рассмотрим процесс написания средства общего назначения, которое будет использоваться в различных обстоятельствах. Ясно, что таких средств множество и выгоды от их стандартизации огромны. В большой программе вполне может быть много копий похожих частей кода для работы с такими фундаментальными понятиями.

Причина подобного хаоса частично заключается в том, что представить такие общие понятия в языке программирования не просто с концептуальной точки зрения. Кроме того, средства, которые обладают достаточной общностью, налагают дополнительные расходы по памяти и/или по времени,

в результате чего делает их неудобными для самых простых и наиболее напряженно используемых средств, где они были бы полезны. Понятие производного класса в C++ не обеспечивает общего решения всех рассмотренных проблем, но оно определяет способ справляться с довольно небольшим числом важных случаев.

Написание общецелевых средств является сложной задачей, и часто основной акцент в их разработке другой, чем при разработке программ специального назначения. Нет четкой границы между средствами общего и специального назначения, и к методам и языковым средствам можно относиться так, будто они являются более полезными связи с ростом объема и сложности создаваемых программ.

Покажем построение программы, которая имеет дело с людьми, работающими в некоторой компании. Структура данных в такой программе может быть, например:

struct employee { // служащий

char* name; // имя

short age; // возраст

short department; // подразделение

int salary; //

employee* next;

// …

};

38. Потоки

Язык C++ не обладает средствами для ввода/вывода. Ему это и не нужно; подобные средства легко и элегантно можно создать, применяя сам язык. Стандартная библиотека потокового ввода/вывода дает возможность осуществлять гибкий и эффективный с гарантией типа метод обработки символьного ввода целых чисел, чисел с плавающей точкой и символьных строк, кроме того, простую модель ее расширения с целью обработки типов, определяемых пользователем.

Разработка и осуществление стандартных средств ввода/вывода для языка программирования является заведомо трудной работой. Традиционно средства ввода/вывода изобретались только для небольшого числа встроенных типов данных. Но в C++ программах обычно применяется много типов, определенных пользователем, и необходимо обрабатывать ввод и вывод также и значений этих типов. Средство ввода/вывода должно являться простым, удобным, надежным в употреблении, эффективным и гибким и при этом полным. Еще не удавалось угодить всем, поэтому у пользователя должна иметься возможность задавать альтернативные средства ввода/вывода и увеличивать стандартные средства ввода/вывода применительно к требованиям приложения.

C++ устроен так, чтобы у пользователя имелась возможность определять новые типы, такие же эффективные и удобные, сколь и встроенные типы.

Средства ввода/вывода связаны только с обработкой преобразования типизированных объектов в последовательности символов и обратно. Существуют и другие схемы ввода/вывода, но эта служит основополагающей в системе UNIX, и большая часть видов бинарного ввода/вывода обрабатывается через изучение символа просто как набор бит, при этом

его общепринятая связь с алфавитом не воспринимается. Тогда ключевая проблема состоит в задании соответствия между типизированным объектом и принципиально не типизированной строкой.

Обработка как встроенных, так и определенных пользователем типов однородным образом и с гарантией типа осуществляется при помощи одного перегруженного имени функции для набора функций вывода.

К примеру:

put(cerr,»x = «); // cerr – поток вывода ошибок

put(cerr,x);

put(cerr,»\n»);

Тип параметра устанавливает то, какая из функций put будет вызываться для каждого параметра. Это решение использовалось в нескольких языках. Но ему не хватает лаконичности. Перегрузка операции << значением «поместить в» дает лучшую запись и дает возможность программисту выводить несколько объектов одним оператором. К примеру:

cerr << «x=» << x << «\n»;

где cerr представляет собой стандартный поток вывода ошибок.

39. Инспектор объектов для языка Дельфи

В окне инспектора объектов присутствует выпадающее меню и две вкладки. Это меню показывает, конфигурация какого объекта в данный момент представлена, а вкладки, собственно, дают нам возможность данную конфигурацию созерцать и изменять. Во вкладке Свойства (Properties) показано свойство формы проекта.

Рассмотрим некоторые основные свойства подробнее:

Action – определяет для объекта действие;

ActiveControl – показывает на элементы формы, имеющие фокус;

Align – определяет положение объекта:

BiDiMode – данное свойство применяется для локализации приложения. Оно дает возможность установить направление чтения текста в программе;

BorderStyle – свойство, которое отвечает за тип формы. BorderIcons – группа свойств, которые отвечают за видимость системных элементов – кнопок: «свернуть», «закрыть», «развернуть», «помощь» и «системное меню»;

Caption – включает в себя текст названия формы проекта;

CurrentHelpFile – включает в себя имя файла контекстной помощи, применяемого приложением;

HelpFile – определяет имя файла помощи для приложения;

ShowHint – включает или отключает показ всплывающих ярлыков подсказок;

Hint – имеет строку ярлыка подсказки; Icon – указывает на знак приложения;

Cursor – определяет тип курсора, который будет определен при наведении мыши на область объекта;

Visible – определяет такое свойство объекта, как видимость;

Enabled – определяет состояние объекта. В случае значения False объект недоступен;

Font – группа свойств, которые характеризуют отображение текста, применяемого объектом. С помощью данных свойств можно менять цвет, размер, стиль, кодировку и шрифт текста;

Height – определяет высоту объекта в пикселях;

Width – определяет ширину объекта в пикселях;

Left – определяет отступ левого края объекта от левого края формы проекта в пикселях;

Top – определяет отступ верхнего края объекта от верхнего края проекта в пикселях;

Поделиться:
Популярные книги

Неудержимый. Книга XXXVII

Боярский Андрей
37. Неудержимый
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Неудержимый. Книга XXXVII

Точка Бифуркации X

Смит Дейлор
10. ТБ
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Точка Бифуркации X

Древесный маг Орловского княжества 4

Павлов Игорь Васильевич
4. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 4

Алекс и Алекс

Афанасьев Семен
1. Алекс и Алекс
Фантастика:
боевая фантастика
6.83
рейтинг книги
Алекс и Алекс

Наследие Маозари 2

Панежин Евгений
2. Наследие Маозари
Фантастика:
попаданцы
рпг
аниме
5.00
рейтинг книги
Наследие Маозари 2

Вернувшийся: Посол. Том IV

Vector
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
5.00
рейтинг книги
Вернувшийся: Посол. Том IV

Московское золото или нежная попа комсомолки. Часть Вторая

Хренов Алексей
2. Летчик Леха
Фантастика:
попаданцы
5.00
рейтинг книги
Московское золото или нежная попа комсомолки. Часть Вторая

Ученик

Листратов Валерий
2. Ушедший Род
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Ученик

Кадет Морозов

Шелег Дмитрий Витальевич
4. Живой лёд
Фантастика:
боевая фантастика
5.72
рейтинг книги
Кадет Морозов

Огненный князь 3

Машуков Тимур
3. Багряный восход
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Огненный князь 3

Барон отрицает правила

Ренгач Евгений
13. Закон сильного
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Барон отрицает правила

Командор космического флота

Борчанинов Геннадий
3. Звезды на погонах
Фантастика:
боевая фантастика
космическая фантастика
космоопера
5.00
рейтинг книги
Командор космического флота

Графиня с изъяном. Тайна живой стали

Лин Айлин
Фантастика:
фэнтези
героическая фантастика
киберпанк
5.00
рейтинг книги
Графиня с изъяном. Тайна живой стали

Петля, Кадетский корпус. Книга третья

Алексеев Евгений Артемович
3. Петля
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Петля, Кадетский корпус. Книга третья