понедельник, 19 декабря 2011 г.

Инкапсуляция в C++

Порой приходится слышать, что "C++ не поддерживает инкапсуляцию". Не знаю как такое может быть. Но мое мнение, сам программист не может/хочет обеспечить инкапсуляцию своих объектов в программе, прикрываясь подобными высказываниями.
Самое забавное, конечно, что я слышал по поводу инкапсуляции и C++: "Раз в C++ нет нативной поддержки свойств, значит там нет нормальной инкапсуляции". Ну что ж, будем терпимы к другим. В конце концов сколько людей, столько и мнений.
В этой публикации я покажу, как при помощи нескольких нехитрых, я бы сказал тривиальных, приемов встать на истинный путь инкапсуляции. Конечно, на C++.

четверг, 15 декабря 2011 г.

Быстрый фильтр дерева

Очень часто можно встретить в интерфейсе какого-либо приложения дерево. Это могут быть папки и файлы в проводнике или какие-то специфические объекты, связанные друг с другом. Например, если объекты могут быть вложены друг в друга, то такую связь и навигацию по объектам очень удобно представить в виде иерархии в интерфейсе вашего веб приложения.
Чтобы отобразить такую структуру в коде или хранить ее в базе данных есть старое как мир решение.
Но все меняется, когда дерево большое, а объекты могут быть помечены какими либо внешними атрибутами (через ассоциации). Я покажу пример, как фильтровать дерево по атрибутам объектов с сохранением иерархии (если есть дочерний объект с заданным атрибутом, то объект показывается). Ограничимся только базой данных.

суббота, 10 декабря 2011 г.

Продукты, цены и ценовая политика

Задача такова: Есть магазин с товарами. У товаров может быть несколько характеристик - цена, категория, скидка. Кроме этого товар подлежит определенной ценовой политике. Например, пользователь меняет цену продукта. Если цена ниже пороговой, то перевести продукт в категорию обычных. Если категория становится Обычный продукт, то убрать на продукт скидку. Должна быть возможность оперативно менять ценовую политику.