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

  cdp = new Button(Point(100,300),50,20,"create",cb_cd);

  adp1 = new Button(Point(100,400),50,20,"activate",cb_ad);

  adp2 = new Button(Point(200,400),80,20,"deactivate",cb_ad);

  attach(*p1);

  attach(*p2);

  attach(*mvp);

  attach(*cdp);

  p2–>hide;

  attach(*adp1);

}

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

voidW7::sh // скрывает кнопку, показывает следующую

{

  if (sh_left) {

    p1–>hide;

    p2–>show;

  }

  else {

    p1–>show;

    p2–>hide;

  }

  sh_left = !sh_left;

}

void W7::mv // перемещает кнопку

{

  if (mv_left) {

    mvp–>move(100,0);

  }

  else {

    mvp–>move(–100,0);

  }

  mv_left = !mv_left;

}

void W7::cd // удаляет кнопку и создает новую

{

  cdp–>hide;

  delete cdp;

  string lab = "create";

  int x = 100;

  if (cd_left) {

    lab = "delete";

    x = 200;

  }

  cdp = new Button(Point(x,300), 50, 20, lab, cb_cd);

  attach(*cdp);

  cd_left = !cd_left;

}

void 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;

}

Эта программа демонстрирует основные способы добавления и удаления элементов окна, которые проявляются в их исчезновении и появлении.

<p id="AutBody_Root719"><strong>Глоссарий</strong></p>

“Часто точно выбранные слова стоят тысячи рисунков”.

Аноним

Глоссарий — это краткое объяснение слов, использованных в тексте. Ниже приведен относительно краткий словарь терминов, которые мы считаем наиболее важными, особенно на ранних этапах изучения программирования. Предметный указатель и раздел “Термины” в конце каждой главы также могут помочь читателям в этом. Более подробный и широкий словарь терминов, тесно связанных с языком С++, можно найти на веб-странице www.research.att.com/~bs/glossary.html. Кроме того, в веб существует невероятно много специализированных глоссариев (очень разного качества). Пожалуйста, имейте в виду, что термины могут иметь несколько разных значений (некоторые из них мы указываем), причем большинство перечисленных нами терминов в другом контексте могут иметь иной смысл; например, мы не определяем слово абстрактный (abstract) как прилагательное, относящееся к современной живописи, юридической практике или философии.

Абстрактный класс (abstract class). Класс, который невозможно непосредственно использовать для создания объектов; часто используется для определения интерфейсов производных классов. Класс является абстрактным, если содержит чисто виртуальную функцию или защищенный конструктор.

Абстракция (abstraction). Описание сущности, которая вольно или невольно игнорирует (скрывает) детали (например, детали реализации); селективное незнание.

Адрес (address). Значение, позволяющее найти объект в памяти компьютера.

Алгоритм (algorithm). Процедура или формула для решения проблемы; конечная последовательность вычислительных шагов, приводящих к результату.

Альтернативное имя (alias). Альтернативный способ обращения к объекту; часто имя, указатель или ссылка.

Аппроксимация (approximation). Нечто (например, число или проект), близкое к совершенству или идеалу (числу или проекту). Часто аппроксимация является результатом компромисса между принципами.

Аргумент (argument). Значение, передаваемое функции или шаблону, в которых доступ осуществляется через параметр.

Базовый класс (base class). Класс, используемый как база иерархии классов. Обычно базовый класс содержит одну или несколько виртуальных функций.

Байт (byte). Основная единица адресации в большинстве компьютеров. Как правило, байт состоит из восьми битов.

Бесконечная рекурсия (infinite recursion). Рекурсия, которая никогда не заканчивается, пока компьютер не исчерпает память, необходимую для хранения вызовов. На практике такая рекурсия никогда не бывает бесконечной, а прекращается в результате ошибки аппаратного обеспечения.

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

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

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT