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

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

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

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

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

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

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

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

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

суббота, 30 июля 2011 г.

Бинарное дерево поиска

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

среда, 1 июня 2011 г.

Сортировка в DataGridView

  Дело было давно, но возможно не потеряло своей актуальности.
При разработке одного из приложений (WinForms) нужно было организовать сортировку в столбцах DataGridView. Чего было только не перепробовано, но результата не было.
 После долгих поисков в Интернете я все же нашел выход.


воскресенье, 10 апреля 2011 г.

Вычисление выражения из строки

   Попалась интересная задача. Суть в следующем: есть выражение в виде строки что-то вроде "5*(-1)/2.5+2*2+(+1-3.0)". Нужно получить ответ. Естественно, программа должна быть готова к любому выражению. Чтобы не слишком усложнять задачу, будем считать, что выражение всегда корректно. То есть "5*" введено в программу не будет. Сложность в другом (на самом деле одновременно и подсказка). Нужно, чтобы приложение было абсолютно расширяемым. Сюда относится: возможность быстро добавить новую операцию (остаток от деления, например), возможность изменить саму операцию, не изменяя ее отображения ("хочу, чтобы + делил, а / складывал").

воскресенье, 30 января 2011 г.

Расширяемость приложения при помощи MEF


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