Эта статья посвящена созданию модели данных, которая красиво ложилась бы на SQL и содержала в себе «правильное» ООП наследование. Надо сказать, что эта задача возникала у меня в разное время на разных проектах, и решалась она там тоже по-разному. Названия подходов взяты из сложившейся на соответствующих проектах терминологии.
Читать полностью »
Рубрика «ооп» - 26
Реализация ООП-наследования в классах, работающих с SQL и MS Entity Framework
2017-02-26 в 10:00, admin, рубрики: .net, C#, entity framework, sql, наследование, оопФункциональные паттерны при моделировании предметной области – анемичные модели и компоновка поведений
2017-02-24 в 14:19, admin, рубрики: DDD, scala, Блог компании Издательский дом «Питер», моделирование, ооп, Профессиональная литература, функциональное программированиеЗдравствуйте!
Не так давно в издательстве «Manning» вышла непростая, но долгожданная и выстраданная автором книга о функциональном моделировании предметных областей.

Поскольку у нас готовятся книги как по Scala, так и по паттернам предметно-ориентированного проектирования, опубликуем одну из статей сахиба Гоша об идеях, заложенных в его книгу, и спросим, насколько эта книга была бы вам интересна
Читать полностью »
Работа с устройствами печати в C# на примере реализации виртуального принтера
2017-02-23 в 0:08, admin, рубрики: .net, alloc, allocate, allocation, api, C#, code, develop, developing, driver, error, escorp, exomode, extern, intptr, invoke, malloc, marshal, marshalling, memory, native, PInvoke, pointer, port, print, printing, programming, technologies, technology, virtual, WinAPI, больше, виртуальный, выделение, Драйвер, код, маршалинг, маршалирование, монитор, натив, нужно, ооп, ошибка, память, печать, принтер, Программирование, разработка под windows, тегов., указательПриветствую всех. В сегодняшней статье речь пойдёт о том, как можно реализовать собственный высокоуровневый API в управляемом коде для работы с устройствами печати, от установки нового монитора печати в системе и до получения обработанного драйвером устройства печати документа с порта принтера.
Как и в прошлый раз, статья будет полезна для ознакомления разработчикам младшего и среднего звена. В процессе изучения материала, Вы узнаете как можно обращаться к низкоуровневым DLL WinAPI в C# с помощью P/Invoke, как установить, настроить и удалить из системы мониторы печати, драйвера принтера, само устройство печати, открыть и связать порт для перенаправления входных данных с устройства печати на монитор, познакомитесь с ключевыми моментами применения маршалирования. Так же мы на практическом примере разберёмся, как с помощью нашего API можно удобно манипулировать устройствами печати в системе, узнаем как можно перехватить обработанные данные после печати с принтера и, например, отправить их на сервер.
Читать полностью »
Ответ на введение в проектирование сущностей, проблемы создания объектов
2017-02-16 в 6:50, admin, рубрики: DDD, design patterns, domain-driven design, php, ооп, Проектирование и рефакторингПосле прочтения статьи Введение в проектирование сущностей, проблемы создания объектов на хабре, я решил написать развернутый комментарий о примерах использования Domain-driven design (DDD), но, как водится, комментарий оказался слишком большим и я посчитал правильным написать полноценную статью, тем более что вопросу DDD, на хабре и не только, удаляется мало внимания.

Рекомендую прочитать статью о которой я буду здесь говорить.
Если вкратце, то автор предлагает использовать билдеры для контроля за консистентностью данных в сущности при использовании DDD подхода. Я же хочу предложить использование Data Transfer Object (DTO) для этих целей.
Проблема ООЯП: отсутствует чёткое и обязательное ядро объектно-ориентированного моделирования
2017-02-13 в 18:35, admin, рубрики: ооп, Программирование, языки программированияЗдравствуйте коллеги!
Хотелось бы поделиться мыслями об ООЯП и ООП в целом, а также что можно (и, как мне кажется, нужно) сделать на этой основе.
Основные идеи: В современных ООЯП отсутствует чётко выделенное и обязательное ядро моделирования для создания абстракций, основанных только на "чистых" концепциях ООП. Концепция ООП "всё есть объект" не практична. Концепция обмена сообщениями жёстко связана с её реализацией.
Инверсии зависимостей управления впрыском
2017-02-08 в 17:18, admin, рубрики: dependency injection, dependency inversion, inversion of control, service locator, внедрение зависимости, инверсия зависимостей, инверсия управления, ооп, Программирование, Совершенный код
Вступление
Наверняка первый вопрос, который возник у вас при взгляде на заголовок, был "Шта?". На самом деле я просто перевел фразу "Инверсия управления, внедрение зависимости" в Google Translate на китайский, а затем обратно. Зачем? Затем, что на мой взгляд, это хорошая иллюстрация того, что происходит на самом деле. Люди вокруг путают, коверкают и извращают эти понятия. По долгу службы я провожу много интервью, и 90% того, что я слышу, когда задаю вопрос про DI — честно говоря, откровенный бред. Я сделал поиск по Хабру и нашел несколько статей, которые пытаются раскрыть эту тему, но не могу сказать, что они мне сильно понравились (ладно, ладно, я проглядел только три первых страницы, каюсь). Здесь же на Хабре я встречал в комментариях такую расшифровку IoC, как Injection of Container. Кто-то всерьез предполагает, что есть некий механизм инъекции контейнеров, который сосуществует где-то рядом с DI, и, видимо, даже делает нечто похожее. Только с контейнерами. Мда. На самом деле понять внедрение зависимости очень просто, надо всего лишь…
Читать полностью »
Введение в проектирование сущностей, проблемы создания объектов
2017-02-07 в 12:25, admin, рубрики: anemic domain model, code complete, design patterns, domain-driven design, mysql, php, rich domain model, ооп, Проектирование и рефакторингПри моделировании такого понятия предметно-ориентированного проектирования как сущность могут возникнуть некоторые сложности, обусловленные бизнес-требованиями или технической частью. В частности, иногда возникает сложность с созданием объекта-сущности.
В данной статье описываются две такие проблемы, и рассматривается способ их решения. Так же статья подойдет как введение в проектирование сущностей. Для понимания материала понадобится базовое представление о предметно-ориентированном проектировании.
Читать полностью »
Как создать временный файл на PHP, когда функция tmpfile() не подходит
2017-01-24 в 9:00, admin, рубрики: delete, file, php, tempnam, temporary, tmpfile, ооп, Разработка веб-сайтовКогда PHP-программисту необходимо создать временный файл он в мануале находит функцию tmpfile() и после изучения примеров начинает думать как её лучше применить. Так было и со мной, когда мне потребовалось выгрузить данные сразу во временный файл, а не работать с ними через переменную. Но с файлом, созданным таким образом, в дальнейшем неудобно работать в силу того, что tmpfile() возвращает дескриптор, а не ссылку на локальный файл. Давайте немного углубимся в анатомию временного файла и рассмотрим подводные камни, с которыми мне пришлось столкнуться.
Релиз FFCMS 3.0.0 — новая переработанная система
2017-01-17 в 16:38, admin, рубрики: cms, ffcms, php, release, Блог компании FFCMS, ооп
Доброго времени суток обитатель habrahabr, сегодня я хочу тебе рассказать о новом релизе ffcms — 3.0.0 и кратко осветить кардинальные изменения, которые претерпела система с момента предыдущего релиза — 2.0.4.
Система сохранила бесплатную модель распространения и открытый исходный код (MIT), но исходный код был полностью переписан под MVC архитектуру и автозагрузку PSR-0. Многие «велосипеды» были убраны из системы, а их место заняли популярные компоненты: symfony http foundation, laravel eloquent и многие другие.
Обработка нажатий кнопок для Arduino. Скрестить ООП и МКА. Часть 1
2017-01-10 в 18:21, admin, рубрики: abstract class, arduino, c++, class, polling, ооп, программирование микроконтроллеровПару месяцев назад я купил не сильно новый мотоцикл KTM 250EXC, открутил ручку газа в горку, моту пульнул в небо, а сам сел на задницу и что-то там сломал в спине. В результате, на мотоцикл не сесть два месяца как минимум. К чему я это? Да. У немного подуставшего мопеда оказалась неисправная приборная панель и я собрался, пока лежу дома, сделать самодельную новую свою.

Быстро собрал макет, циферки бегают, часики ходят, одометры запоминаются в FRAM — красота, но… понадобились кнопочки для управления этой красотой.
Сегодня с расскажу про кнопочки, потом про датчик зажигания, а уже потом про саму приборку, Ладно?
Рисовать на китайском экране 16х2 через i2c просто, датчики скорости и оборотов мотора сели на внешние прерывания, температура читается с аналогового порта, инфа хранится в FRAM, ну и часики тоже китайские воткнуты. Всё это крутится асинхронно примерно как SmartDelay, про который писал недавно здесь.
Читать полностью »
