Рубрика «полиморфизм»
Борис Чёрный: уроженец Одессы и создатель Claude Code
2026-07-06 в 9:01, admin, рубрики: Boris Cherny, claude code, ruvds_статьи, Борис Чёрный, вайбкодинг, Одесса, полиморфизм, самосовершенствование, технологическая сингулярность, Украина
Гайд на полиморфизм. Основные идеи
2025-05-17 в 6:16, admin, рубрики: C#, Go, java, kotlin, polymorphism, Rust, TypeScript, ооп, полиморфизм, функциональное программированиеПолиморфизм, сколько в этом слове красивого и даже таинственного. Происходит оно от греческого πολύμορφος что означает — многообразный. В программировании это понятие встречается часто и является обыденным для понимания большинством разработчиков. Но так ли обстоят дела на самом деле?
Чаще других этот термин встречается в связанных с ООП темах как часть набивший оскомину триады вместе с инкапсуляцией и наследованием, ну и конечно же какое классическое собеседование без таких вопросов. Вроде бы все должны знать что это и однажды, чтобы проверить, я решил немного погуглить:
Типы в программировании как математические множества
2024-10-03 в 12:15, admin, рубрики: C#, математика для программистов, множества, полиморфизм, теория типов, типыТипы в программировании можно(и нужно) рассматривать как математические множества.
Мысль хоть и очевидная, но из моей головы давно выветрилась.
Именно поэтому я и решил написать эту статью: чтобы напомнить о ней самому себе и тем, кто о ней тоже забыл или даже не знал.
Сначала вспомним главное определение:
Множество — это коллекция элементов, обладающих общим свойством, которые рассматриваются как единое целое. Элементы множества могут быть любыми: числами, объектами, символами и т.д.
1. Множество целых чисел: {1, 2, 3, 4}
2. Множество гласных букв русского алфавита: {А, Е, И, О, У, Ы, Э, Ю, Я}
Люди не понимают ООП
2024-02-07 в 13:00, admin, рубрики: ruvds_переводы, инкапсуляция, наследование, объекты, ооп, полиморфизм, структурное программирование, функциональное программирование
«ООП для меня означает лишь обмен сообщениями, локальные ограничения и защиту, сокрытие состояния процесса и крайне позднее привязывание», — Алан Кэй (человек, придумавший термин «объектно-ориентированное программирование»)1
Похоже, многим не нравится объектно-ориентированное программирование. Первое, что приходит в голову, когда слышишь эту трёхбуквенную аббревиатуру — это пример с автомобилем, наследование, геттеры, сеттеры и ObjectFactoryFactorySingleton.
Мне это всегда казалось довольно странным. Мне не только нравится ООП, я ещё и считаю, что часто это лучший/наиболее очевидный способ моделирования задачи. И ниже я расскажу, почему.Читать полностью »
Swagger и полиморфные контракты в .NET 7
2023-03-07 в 13:00, admin, рубрики: .net, C#, dotnet, dotnet core, dto, json, ruvds_статьи, swagger, Блог компании RUVDS.com, документация, ооп, полиморфизм, Программирование
Не так давно состоялся релиз седьмой версии платформы .NET. Он привнёс множество изменений и интересных нововведений, по которым уже успели пробежаться в рамках новостного обзора.
В этой статье мы рассмотрим развитие сериализации платформы (System.Text.Json) вместе с возможностями, которые она открывает.Читать полностью »
С++ Concept-Based Polymorphism в продуктовом коде: PassManager в LLVM
2020-06-08 в 13:16, admin, рубрики: c++, LLVM, Блог компании Samsung, идиомы с++, Компиляторы, наследование, ооп, паттерны проектирования, полиморфизм, шаблоныСегодня речь пойдет про одну интересную идиому, которую ввел Шон Парент (Adobe) — известный деятель в C++-сообществе. Он часто выступает с докладами и публикует цикл статей Better Code. Одна из его идей, которую используют в Photoshop — это Concept-Based Polymorphism. Это когда мы реализуем полиморфизм не через явное наследование, а с помощью техники, включающей обобщенное программирование, и по итогам получаем некоторые дополнительные преимущества.
Статья устроена следующим образом:
- Что вообще такое Concept-Based Polymorphism и зачем он нужен
- Немного про LLVM и ее устройство
- Пример Concept-Based Polymorphism в LLVM PassManager
- Преимущества подхода

Картинка, иллюстрирующая тезис «Наследование — это зло». Источник
Читать полностью »
Пишем redux по SOLID
2019-11-10 в 9:33, admin, рубрики: javascript, React, ReactJS, redux, solid, ооп, полиморфизмВ данном посте мы коснемся написания action'ов и reducer'а. Для начала рассмотрим типичный 'flow', в котором мы выполняем следующие операции (далее переработаем все так, чтобы наш код отвечал принципам SOLID).
Читать полностью »
ООП, «святая троица» и SOLID: некоторый минимум знаний о них
2019-09-05 в 10:54, admin, рубрики: solid, инкапсуляция, наследование, ооп, полиморфизмНеобходимое вступление
Я не гарантирую, что изложенные здесь трактовки общепринятых терминов и принципов совпадают с тем, что изложили в солидных научных статьях калифорнийские профессора во второй половине прошлого века. Я не гарантирую, что мои трактовки полностью разделялись или разделяются большинством IT-профессионалов в отрасли или научной среде. Я даже не гарантирую, что мои трактовки помогут вам на собеседовании, хоть и предполагаю, что будут небесполезны.
Но я гарантирую, что если отсутствие всякого понимания заменить моими трактовками и начать их применять, то код вами написанный будет проще сопровождать и изменять. Так же я прекрасно понимаю, что в комментариях мной написанное будут яростно дополнять, что позволит выправить совсем уж вопиющие упущения и нестыковки.
Столь малые гарантии поднимают вопросы о причинах, по которым статья пишется. Я считаю, что этим вещам должны учить везде, где учат программированию, вплоть до уроков информатики в школах с углублённым её изучением. Тем не менее, для меня стала пугающе нормальной ситуация, когда я узнаю, что собеседник мой коллега, причём работающий уже не первый год, но про инкапсуляцию «что-то там слышал». Необходимость собрать всё это в одном месте и давать ссылку при возникновении вопросов зрела давно. А тут ещё и мой «pet-project» дал мне изрядно пищи для размышлений.
Тут мне могут возразить, что учить эти вещи в школе рановато, и вообще на ООП свет клином не сошёлся. Во-первых, это смотря как учить. Во-вторых, 70% материала этой статьи применимо не только к ООП. Что я буду отмечать отдельно.
Элегантная обработка ошибок в JavaScript с помощью монады Either
2019-06-21 в 13:43, admin, рубрики: Crocks, Folktale, javascript, Monet, sanctuary, каррирование, монады, обработка ошибок, полиморфизм, ПрограммированиеДавайте немного поговорим о том, как мы обрабатываем ошибки. В JavaScript у нас есть встроенная функция языка для работы с исключениями. Проблемный код мы заключаем в конструкцию try...catch. Это позволяет прописать нормальный путь выполнения в разделе try, а затем разобраться со всеми исключениями в разделе catch. Неплохой вариант. Это позволяет сосредоточиться на текущей задаче, не думая о каждой возможной ошибке. Определённо лучше, чем засорять код бесконечными if.
Без try...catch трудно проверять результаты каждого вызова функции для неожиданных значений. Это полезная конструкция. Но у неё есть определённые проблемы. И это не единственный способ обрабатывать ошибки. В статье мы рассмотрим использование монады Either в качестве альтернативы try...catch.
Прежде чем продолжить, отмечу пару моментов. Статья предполагает, что вы уже знаете о композиции функций и каррировании. И предупреждение. Если вы раньше не сталкивались с монадами, они могут показаться действительно… странными. Работа с такими инструментами требует изменить мышление. Поначалу это бывает тяжело.
Не волнуйтесь, если сразу запутались. У всех так. В конце статьи я перечислил несколько ссылок, которые могут помочь. Не сдавайтесь. Эти штуки опьяняют, как только проникают в мозг.
Читать полностью »
Эволюция программного проекта и ООП
2019-04-14 в 10:27, admin, рубрики: абстракция, алгоритм, Анализ и проектирование систем, инкапсуляция, наследование, ооп, полиморфизм, Программирование, Проектирование и рефакторинг, эволюцияОсваивая рецепты эффективного развития программного проекта, постарался для себя найти причины, делающие полезным использование принципов развития архитектуры SOLID (статья Как не понимать принципы развития архитектуры SOLID).
Анализ этих принципов позволил выделить несколько ключевых закономерностей и базовых элементов, существующих в разработке. Они позволили описать, понять и внедрить SOLID в реальной работе с программным проектом.
Стало интересно выполнить анализ применимости этих понятий для общепринятых парадигм программирования, например для ООП. Хорошо, если результат этой работы будет полезен и Вам.


