Найти в Дзене
Сериализатор
Если нужно часто сериализовать объекты различных классов в строку, то можно добавить следующий метод расширения. Этот способ сократит ваш код сериализации до obj.ToXml(). StringWriter пишет строку в UTF-16...
1 месяц назад
Феномен интерфейса
Интерфейсы. Изначально ООП обходилось без них. Позже в C++ была неудачная попытка использовать вместо них классы, которая, однако, привела к пониманию проблемы и открыла путь к её решению. Нужна была абстракция поведения вне классификации и интерфейсы воплотили её. Окружающие нас объекты дружно игнорируют SRP -- гвоздь, ведро, автомобиль помимо своего индивидуального поведения имеют и общее: их можно купить, у них есть положение и габариты и они ржавеют со временем. Для отражения общих черт не хватает иерархической классификации, при которой наследование поведения возможно лишь по одной линии...
1 месяц назад
Как посчитать факториал
Часто для решения задачи существует более одного пути. Предположим понадобилось вычислить eˣ через известный ряд: В выражение входит факториал и нам нужны его значения для разных n. Можно решить задачу в лоб, использовав рекурсию, цикл или таблицу (ведь значений, которые уместятся в int или long не много). Но у этих методов есть большой недостаток: n! быстро растет и мы исчерпаем возможности представления чисел до того, как достигнем желаемой точности. Но есть иной путь -- не считать факториал. Заметим,...
2 месяца назад
История одной ошибки
"Поиск не затягивает дело, а ошибки -- затягивают." (Им покоряется небо) Однажды перестали автоматически обрабатываться заказы. При ручной обработке было выявлено, что сумма заказа рассчитанная системой заказов отличалась от суммы заказа, рассчитанной в учетной системе на несколько копеек. Это касалось лишь тех заказов, число позиций в которых было больше одной. Причиной расхождения была ошибка в расчете величины новой комиссии. До этого, комиссионные сборы рассчитывались на каждую позицию в отдельности...
3 месяца назад
Наследование и полиморфизм
Наследование и полиморфизм две тесно связанные концепции для работы с абстракциями. Наследование определяет отношение "является" между абстракциями с разной степенью детализации, а полиморфизм определяет способы оперирования абстракциями. В программировании обычно выделяют три формы полиморфизма, которые различаются тем, что абстрагируется. Абстракция объектов через наследование. Все автомобили едут, все самолеты летают, а любой документ можно напечатать. В этом примере автомобиль, самолет или документ -- абстракция, определяющая общее поведение для реальных объектов...
9 месяцев назад
Если нравится — подпишитесь
Так вы не пропустите новые публикации этого канала