W7::ad() // отсоединяет кнопку от окна и
// устанавливает связь с ее заменой
{
if (ad_left) {
detach(*adp1);
attach(*adp2);
}
else {
detach(*adp2);
attach(*adp1);
}
ad_left = !ad_left;
}
int main()
{
W7 w(400,500,"move");
return gui_main();
}
Эта программа демонстрирует основные способы добавления и удаления элементов окна, которые проявляются в их исчезновении и появлении.
“Часто точно выбранные слова стоят тысячи рисунков”.
Аноним
Глоссарий — это краткое объяснение слов, использованных в тексте. Ниже приведен относительно краткий словарь терминов, которые мы считаем наиболее важными, особенно на ранних этапах изучения программирования. Предметный указатель и раздел “Термины” в конце каждой главы также могут помочь читателям в этом. Более подробный и широкий словарь терминов, тесно связанных с языком С++, можно найти на веб-странице www.research.att.com/~bs/glossary.html. Кроме того, в веб существует невероятно много специализированных глоссариев (очень разного качества). Пожалуйста, имейте в виду, что термины могут иметь несколько разных значений (некоторые из них мы указываем), причем большинство перечисленных нами терминов в другом контексте могут иметь иной смысл; например, мы не определяем слово абстрактный (abstract) как прилагательное, относящееся к современной живописи, юридической практике или философии.
Абстрактный класс (abstract class). Класс, который невозможно непосредственно использовать для создания объектов; часто используется для определения интерфейсов производных классов. Класс является абстрактным, если содержит чисто виртуальную функцию или защищенный конструктор.
Абстракция (abstraction). Описание сущности, которая вольно или невольно игнорирует (скрывает) детали (например, детали реализации); селективное незнание.
Адрес (address). Значение, позволяющее найти объект в памяти компьютера.
Алгоритм (algorithm). Процедура или формула для решения проблемы; конечная последовательность вычислительных шагов, приводящих к результату.
Альтернативное имя (alias). Альтернативный способ обращения к объекту; часто имя, указатель или ссылка.
Аппроксимация (approximation). Нечто (например, число или проект), близкое к совершенству или идеалу (числу или проекту). Часто аппроксимация является результатом компромисса между принципами.
Аргумент (argument). Значение, передаваемое функции или шаблону, в которых доступ осуществляется через параметр.
Базовый класс (base class). Класс, используемый как база иерархии классов. Обычно базовый класс содержит одну или несколько виртуальных функций.
Байт (byte). Основная единица адресации в большинстве компьютеров. Как правило, байт состоит из восьми битов.
Бесконечная рекурсия (infinite recursion). Рекурсия, которая никогда не заканчивается, пока компьютер не исчерпает память, необходимую для хранения вызовов. На практике такая рекурсия никогда не бывает бесконечной, а прекращается в результате ошибки аппаратного обеспечения.
Бесконечный цикл (infinite loop). Цикл, в котором условие выхода из него никогда не выполняется. См. (iteration).
Библиотека (library). Совокупность типов, функций, классов и т.п., реализованных в виде набора средств (абстракций), которые могут использовать многие программы.
Бит (bit). Основная единица измерения количества информации в компьютере. Бит может принимать значение 0 или 1.
Ввод (input). Значения, используемые для вычисления (например, аргументы функции или символы, набранные на клавиатуре).
Виртуальная функция (virtual function). Функция-член, которую можно заместить в производном классе.
Время жизни (lifetime). Время, прошедшее между моментом инициализации и моментом, в который объект становится неиспользуемым (выходя из области видимости, уничтожается или прекращает существовать из-за прекращения работы программы).
Вывод (output). Значения, созданные в результате вычислений (например, результат работы функции или строка символов, выведенная на экран).
Выполняемый код (executable). Программа, готовая к выполнению на компьютере.
Вычисление (computation). Выполнение некоего кода, обычно получающего входную информацию и создающего результат.
Данные (data). Значения, используемые для вычислений.
Деструктор (destructor). Операция, неявно вызываемая для уничтожения объекта (например, в конце области видимости). Обычно освобождает ресурсы.
Дефект (bug). Ошибка в программе.
Диапазон (range). Последовательность значений, которую можно описать, задав начальную и конечную точки. Например, диапазон [0:5) означает значения 0, 1, 2, 3 и 4.
Единица (unit). 1) Стандартная мера, придающая значению смысл (например, км для расстояния); 2) различимая (т.е. имеющая имя) часть целого.
Заголовок (header). Файл, содержащий объявления, используемые для распределения интерфейсов между частями программы.
Замещение (override). Определение функции в производном классе, имя и типы аргументов которой совпадают с именем и типами аргументов виртуальной функции из базового класса; в результате эту функцию можно вызывать с помощью интерфейса базового класса.
Значение (value). Совокупность битов в памяти, интерпретируемая в соответствии с типом.
Идеал (ideal). Совершенный вариант того, к чему мы стремимся. Обычно мы вынуждены соглашаться на компромисс и довольствоваться лишь приближением к идеалу.
Изменяемый (mutable). Сущность, допускающая изменение своего состояния, в противоположность неизменяемым объектам, константам и переменным.
Инвариант (invariant). Условие, которое всегда должно выполняться в заданной точке (или точках) программы; обычно используется для описания состояния (набора значений) объекта или цикла перед входом в повторяющуюся инструкцию.
Инициализация (initialize). Присваивание объекту первого (начального) значения.
Инкапсуляция (encapsulation). Защита деталей реализации от несанкционированного доступа.
Интерфейс (interface). Объявление или набор объявлений, определяющих способ вызова фрагмента кода (например, функции или класса).
Исходный код (source code). Код, созданный программистом и (в принципе) пригодный для чтения другими программистами.
Исходный файл (source file). Файл, содержащий исходный код.
Итератор (iterator). Объект, идентифицирующий элемент последовательности.
Итерация (iteration). Повторяющееся выполнение фрагмента кода; см. рекурсия.
Класс (class). Определенный пользователем тип, который может содержать данныечлены, функции-члены и типы-члены.
Код (code). Программа или часть программы; может быть исходным или объектным.
Компилятор (compiler). Программа, превращающая исходный код в объектный.
Компромисс (trade-off). Результат согласования нескольких принципов проектирования и реализации.
Конкретный класс (concrete class). Класс, объекты которого можно создать.
Константа (constant). Значение, которое невозможно изменить (в заданной области видимости).
Конструктор (constructor). Операция, инициализирующая (конструирующая) объект. Обычно конструктор устанавливает инвариант и часто запрашивает ресурсы, необходимые для использования объектов (которые обычно освобождаются деструктором).
Контейнер (container). Объект, содержащий элементы (другие объекты).
Литерал (literal). Обозначение, которое непосредственно задает число, например, литерал 12 задает целое число, равное “двенадцать”.
Массив (array). Однородная последовательность элементов, обычно нумерованная, например [0:max].
Нагромождение возможностей (feature creep). Стремление добавлять избыточные функциональные возможности в программу “на всякий случай”.
Неинициализированный (uninitialized). (Неопределенное) состояние объекта до его инициализации.
Область видимости (scope). Область текста программы (исходного кода), в которой можно ссылаться на имя сущности.
Объект (object). 1) Инициализированная область памяти известного типа, в которой записано какое-то значение данного типа; 2) область памяти.
Объектно-ориентированное программирование (object-oriented programming). Стиль программирования, нацеленный на проектирование и использование классов и иерархий классов.
Объектный код (object code). Результат работы компилятора, представляющий собой входную информацию для редактора связей, который, в свою очередь, создает выполняемый код.
Объектный файл (object file). Файл, содержащий объектный код.
Объявление (declaration). Спецификация имени с