Обратные вызовы в C++

Обратные вызовы в C++

В практике разработки ПО зачастую встает задача динамической модификации программного кода в зависимости от текущих или настраиваемых значений параметров. Для решения этой задачи широко используются обратные вызовы. В языке C++ обратные вызовы реализуются различными способами, и далеко не всегда очевидно, какой из них лучший для конкретной ситуации. В книге рассмотрены теоретические и практические аспекты организации обратных вызовов, проанализированы достоинства и недостатки различных реализаций, выработаны рекомендации по выбору в зависимости от требований к проектируемому ПО. В первую очередь книга предназначена для программистов среднего (middle) уровня, т.е. тех, кто уже достаточно хорошо знает язык C++, но хотел бы расширить и углубить свои знания в области проектирования и дизайна. В определенной степени она также будет интересна опытным разработчикам, с одной стороны, как систематизация знаний, с другой стороны, как источник идей и методов для решения практических задач.

Жанр: Программирование
Цикл: Не является частью цикла
Год публикации: 2021

Читать онлайн Обратные вызовы в C++


Введение

Однажды со мной консультировался начинающий разработчик. Не помню точно, о чем шла речь (да это и не важно), но вопрос был в стиле «есть проблема – как ее решить?». Первой моей мыслью, которую я и озвучил, было – «сделай обратный вызов». Следующий, вполне ожидаемый, вопрос был «а как его реализовать?». Почти не думая, я ответил первое, что пришло в голову – «используй указатель на функцию». «Хорошо», сказал разработчик, «я почитаю про эти указатели». Через какое-то время он снова пришел с вопросом – «ну, что такое указатель на функцию, я понял, но как внутри функции узнать, какому классу предназначается вызов?» Так, слово за слово, вопрос за вопросом, и я вдруг начинаю осознавать, что вопросы совсем не такие уж простые, как вначале могло показаться, и что одно понятие тянет за собой другое, что есть множество альтернатив при выборе способа реализации, и что так сразу и не скажешь, какой из них лучше подходит именно для вот этого случая… Так и родилась идея книги, которую вы сейчас держите перед глазами.

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

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

В первую очередь книга предназначена для разработчиков среднего (middle) уровня, т. е. тех, кто уже достаточно хорошо знает язык C++, но хотел бы расширить и углубить свои знания в области проектирования и дизайна. Безусловно, не лишней она будет и для начинающих, но нужно быть готовым к тому, что для изучения материала придется приложить значительные усилия: рассматриваемые концепции являются достаточно сложными и предполагают хорошее знание синтаксиса C++, а также некоторый опыт в программировании. Надеюсь, опытные разработчики также найдут книгу полезной как в плане систематизации знаний, так и в плане новых идей и методов, которые можно использовать в практике разработки.

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

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


Вам будет интересно
Python является наиболее популярным языком программирования, используемым для объектно-ориентированного программирования. И конечно, Python – это интерактивный язык программирования, который предоставляет широкий спектр возможностей для создания GUI (Graphical User Interface) и разработки настольных приложений. В этой книге вы познакомитесь с различными фреймворками Python для создания настольных приложений с графическим интерфейсом пользователя, такими как PyQt, PySide, Tkinter, Kivy, WxPython ...
Читать онлайн
Apache Hadoop – это платформа для распределенной обработки больших наборов данных на кластерах компьютеров с использованием простых моделей программирования. В этой книге вы познакомитесь с общей архитектурой платформы, компонентами стека, такими как HDFS и MapReduce, приложениями Hadoop....
Читать онлайн
This book will provide you with basic knowledge and skills in Python programming, covering topics such as variables, numbers, strings, booleans, conditional statements, loops, lists, dictionaries, functions, classes and objects, modules, and packages.Every chapter is wrapped up with a small test. Detailed explanations and practical examples accompany every topic to ensure you acquire an essential Python coding skill upon completing the book.This book is excellent for everyone who wants to learn ...
Читать онлайн
Льюис Кэрролл как-то сказал: «Здесь приходится бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее».ЭТО МИР IT. МИР, ГДЕ ТЕХНОЛОГИИ РАЗВИВАЮТСЯ БЫСТРЕЕ, ЧЕМ ВЫРАСТАЮТ НОВЫЕ ПОКОЛЕНИЯ.Елена Правдина – профессиональный разработчик с опытом работы более 10 лет, включая порталы Videomore.ru, СТС, Wifire TV Lite, video.khl.ru, создатель HTML5-плеера для КХЛ, ОТР, СТС, а также Smart TV-приложений, фронтенд-разработчик Яндекс. В своей кни...
Читать онлайн
В данном пособии приведен необходимый учебный материал для изучения основ программирования на Java в среде разработки NetBeans. Особенность пособия заключается в его направленности на быструю начальную разработку программ с графическим интерфейсом, что позволяет в дальнейшем без проблем изучать и осваивать более сложный теоретический материал и технологии программирования на Java....
Читать онлайн
Лекции по Си и C++ для начинающих. Рассмотрены основные темы и простейшие примеры, работающие на современных компиляторах....
Читать онлайн
Основы программирования на Python3 с визуальными компонентами PyQt5 (для PyCharm Community)....
Читать онлайн
Программирование на Delphi 7 - это захватывающее путешествие в мир приключений, эмоций и открытий. Эта книга переносит читателя в иной мир, где каждая страница открывает новые горизонты воображения. Благодаря ярким персонажам, захватывающему сюжету и живописным описаниям, читатель окунется во всепоглощающую атмосферу Программирование на Delphi 7 и будет жить каждым мгновением вместе с героями. Вдохновляющая и мудрая, Программирование на Delphi 7 не только развлечет читателя, но и подарит ему ун...
Читать онлайн
Оказаться беременной, когда ни с кем не вступала в отношения – разве это возможно?В моём случае да.Чудо?Наверное…Или нет?.....
Читать онлайн
Телеведущий Борис Корчевников как никто другой умеет расположить звездных гостей своей программы «Судьба человека» к максимально искренним, исповедальным признаниям.Судьба каждого человека неповторима. Кто принимает непростые решения, меняющие все: мы сами или кто-то (или что-то) за нас? Какую роль в судьбе каждого играет любовь? Книга Бориса Корчевникова предлагает читателю уникальные ответы на эти и другие вопросы от одних из самых интересных наших современников. Дарья Донцова, Дмитрий Маликов...
Читать онлайн
«Когда свинья полетит» – гласит старинная английская пословица, подразумевая, что подобное невозможно. Но британские свинки так и порхают, переходя из рук в руки своих знатных владельцев, вступивших в опасное соперничество за право обладания самой толстой свиньей в округе. Жизнь бесхитростных розовых спинок становится такой же захватывающей и насыщенной событиями, как и жизнь обитателей Бландингского замка и Матчингем-Холла, гостеприимно собравшими под своей кровлей столько разбитых, запутавшихс...
Читать онлайн
«…к городу у чегемцев было сложное отношение. С одной стороны, чегемцы подсмеивались над городскими людьми за их дебиловатость по части знания обычаев застолья и родственных отношений. С другой стороны, они уважали городских, но не потому, что у городских людей было больше научных знаний. Это Чик счел бы нормальным. Но на самом деле чегемцы уважали городских жителей за то, что они не пашут, не сеют, не пасут скот, а живут вроде не хуже. Чегемцы считали, что сами они ишачат, а городские люди прил...
Читать онлайн