Шаблон проектирования Prototype. Примеры

рис. 3 диаграмма классов после имплементации шаблона "Прототип"

Напомню, что в прошлый раз мы написали программу, которая содержала тулбар с геометрическими фигурами и поле, на которое эти фигуры добавлялись. Для каждой фигуры был определен отдельный класс, поэтому для добавления нового типа фигуры требовалось бы перекомпилировать программу. Шаблон проектирования «Прототип» решает эту проблему, позволяя порождать новые типы объектов во время выполнения программы. Шаблон проектирования …

Работа с графической сценой [Qt]

рис. 1 снимок окна программы-примера

В библиотеку Qt включены специальные классы для удобной и эффективной работы с большим количеством двумерных графических объектов. Сегодня мы рассмотрим не все (остальные потом), но основные — QGraphicsScene, QGraphicsView, QGraphicsItem. Использовать эти классы удобно если в Вашей программе происходит хоть какая-то работа с графическими объектами, и особенно, если таких объектов много, требуется обнаруживать их пересечения/столкновения, …

Паттерн шаблонный метод (template method)

рис. 2 шаблон проектирования template method

Template method представляет собой поведенческий шаблон проектирования. Вспоминать про него стоит всякий раз, когда в вашем проекте появляется дублирующийся код (именно с таким, плохим кодом он иногда может справиться). Суть шаблонного метода заключается в том, что алгоритм поведения объектов выносится в базовый класс, а реализация отдельных шагов падает на плечи классов-наследников. Рассмотрим шаблон проектирования «template …

Получение данных с сайта. Шаблон Producer/Consumer [Qt, C++]

producer-consumer-pattern

В последнее время часто встречал вопросы о получении данных с сайта на С++, поэтому решил написать статью, посвященную этой теме. В качестве примера статьи рассмотрена задача получения бесплатных проектов с одного фриланс-сайта [1]. На этом сайте, есть страница со списком проектов, на которой есть их (проектов) частичное описание и ссылка на страницу проекта, но наша …

Использование БД SQL. Шаблон проектирования «Фасад» (Facade) [C++, Qt]

рис. 1 использование паттерна Facade

Статья состоит из трёх частей, в которых: описаны средства библиотеки Qt, предназначенные для работы с базами данных; рассмотрен паттерн проектирования «Facade». Описано каким образом его можно использовать для определения интерфейса базы данных; приведён и описан пример приложения, использующего базу данных и шаблон проектирования»Фасад». Если Вы совсем не знаете что такое SQL — то перед чтением …

Собственные виджеты в Qt Designer [Qt, C++]

рис. 1 пример окна, созданного в Qt Designer

В статье я расскажу как быстро и легко накидать интерфейс в Qt Designer, а также, как использовать при этом свои собственные виджеты. В статье описано: как создать в Qt Designer форму, а затем использовать ее в программе (есть несколько вариантов сделать это, я расскажу только про один); как использовать свой собственный виджет в Qt Designer. …

Игра Сапер. Паттерн Mediator. Использование doxygen

рис. 1 окно игры "Сапер"

Недавно помогал какому-то студенту писать лабораторную — игру «Сапер», и получилась вполне вменяемая штука, которую решил описать на блоге. В статье рассмотрены: паттерн проектирования Mediator (посредник); цифровой таймер с использованием QLCDNumber (в нашей игре будут отображаться часики); автоматическая генерация документации с использованием doxygen. В результате получится игрушка, снимок окна которой показан на рис. 1.

Списки в Prolog. Теория. Примеры

prolog-list-processing

В функциональных и логических языках списки используются чрезвычайно часто, они позволяют сохранить набор данных произвольной длины. В статье на множестве примеров показана обработка списков в языке Prolog. Основная часть примеров написана на диалектах с динамической типизацией (SWI/GNU/Arity Prolog), но с небольшими изменениями будет отлично работать на строго-типизированных реализациях (Turbo/Visual Prolog).

Структуры данных. Деревья

Аннотация Статья знакомит читателя с понятием дерева как структуры данных, поясняет в каких случаях и для чего следует применять деревья. В статью также планировалось поместить примеры правил обработки деревьев на языке программирования «Пролог», однако, решено описать их в следующей статье. Тем не менее, это оказало влияние на текст статьи – она не является очень подробной …

Создание собственных виджетов Qt. Сигналы, слоты и события.

castom_widget_in_Qt

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