Нередко случается, что решив разобраться с какой-то новой темой, понятием, инструментом программирования, я читаю одну за другой статьи на различных сайтах в интернете. И, если тема сложная, то эти статьи могут не на шаг не приблизить меня к понимаю. И вдруг встречается статья, которая моментально дает озарение и все паззлы складываются воедино. Трудно определить, что отличает такую статью от других. Правильно подобранные слова, оптимальная логика изложения или же просто более релевантный пример. Я не претендую на то, что моя статься окажется новым словом в C# или же лучшей обучающей статьей. Но, возможно для кого-то она станет именно той, которая позволит разобраться, запомнить и начать правильно применять те понятия, о которых пойдет речь.
Читать полностью »
Рубрика «полиморфизм» - 2
Наследование, композиция, агрегация
2018-04-22 в 16:54, admin, рубрики: C#, агрегация, ассоциация, композиция, наследование, ооп, полиморфизм, примерПолиморфизм и указатели на функции
2017-08-08 в 11:35, admin, рубрики: C, c++, ооп, полиморфизм, сортировка, указатель на функциюЧитая учебники по программированию, убеждаюсь в том, как сильно усложняется восприятие материала, если автор подчиняет себя концепциям и инструментам, забывая о том, насколько важен контекст, в котором раскрывается материал. И, в то же время, насколько естественно и легко приходит понимание, когда ощущаешь реальное удобство от применения нового инструмента.
На мой взгляд, указатели на функции является как раз таким примером. Дело в том, что синтаксис объявления и использования указателей на функции не слишком очевиден, особенно для не очень опытных программистов, и, если сразу «сыпать» деталями и синтаксическими возможностями, то за деревьями не будет видно леса. В этом посте я хочу поделиться своим видением указателей на функции и привести простой пример, который, смею надеяться, порадует своей легкостью и убьет еще одного зайца — продемонстрирует страшного монстра под названием «полиморфный вызов».
Читать полностью »
Тайп-хинтинг по всем канонам полиморфизма в старых версиях PHP
2017-05-24 в 10:39, admin, рубрики: php, ооп, полиморфизмtl;dr Вкратце, в данной статье я создам трейт, позволящий даже в версиях PHP младше 5.6 (до версии 5.4) добиться от компилятора поведения, подобного любому статическому языку программирования. Причём трейт будет валидировать не только входные, но и выходные парамеры тоже. Так сказать, полное погружение в тайп-хинтинг.
Данный трейт вы сможете без проблем подключить и использовать в своих веб-приложениях.
Rayon: параллелизм данных в Rust
2015-12-29 в 16:48, admin, рубрики: Rust, параллельное программирование, полиморфизм, Программирование, типобезорасность Последние пару недель я работал над обновление Rayon — моей экспериментальной библиотеки для параллелизма данных в Rust.
Я вполне доволен тем, как идёт разработка, так что я решил объяснить к чему я пришёл в блог посте.
Цель Rayon — сделать добавление параллелизма в последовательный код простым, так, чтобы любой цикл for или итератор можно было бы заставить работать в несколько потоков. Например если у вас есть такая цепочка итераторов:
let total_price = stores.iter()
.map(|store| store.compute_price(&list))
.sum()
то вы можете сделать её работу параллельной просто поменяв обычный «последовательный итератор» на «параллельный итератор» из Rayon:
let total_price = stores.par_iter()
.map(|store| store.compute_price(&list))
.sum()
Генотипируем гиков: опыт полевой генетики
2015-06-16 в 11:46, admin, рубрики: DRD4, geekpicnic, Биотехнологии, гикпикник, днк, Здоровье гика, Научно-популярное, полиморфизм, пцр, метки: гикпикникУ нас было четыре центрифуги, тысяча пипеток Пастера, наборы реактивов, морозилка на минус двадцать, термоциклер, форезная камера и трансиллюминатор, который включался, только если нажать off. Единственное, что вызывало сомнения, — как мы будем делать ПЦР в полевых условиях, но мы знали, что рано или поздно мы попробуем и это.
Мы сделали это впервые на московском ГикПикнике 13-14 июня в парке Красная пресня. Расставили столы, рассадили волонтеров, наварили агарозного геля в микроволновке из нашего офиса (получались прекрасные брикеты прозрачного, как слеза младенца, холодца для электрофореза) и начали генотипирование. Хотелось показать всем, что генетика — это весело!
Сериализация C++ с полиморфизмом и прототипами
2014-12-08 в 16:13, admin, рубрики: c++, c++11, КодоБред, полиморфизм, Программирование, сериализацияУже достаточно давно заинтересовался темой сериализации, а если конкретно, то сериализацией объектов, хранящихся по указателю на базовый класс. Например, если мы хотим загружать интерфейс приложения из файла, то скорее всего нам придется заполнять полиморфными объектами контейнер по типу “std::vector<iWidget*>”. Возникает вопрос, как подобное реализовать. Этим я недавно решил заняться и вот что получилось.
Для начала я предположил, что нам все-таки придется унаследовать в базовом классе интерфейс iSerializable, такого вида:
class iSerializable
{
public:
virtual void serialize (Node node) = 0;
};
Выразительный JavaScript: Тайная жизнь объектов
2014-10-27 в 8:53, admin, рубрики: javascript, инкапсуляция, наследование, объекты, полиморфизм, Программирование, форматирование таблицСодержание
- Введение
- Величины, типы и операторы
- Структура программ
- Функции
- Структуры данных: объекты и массивы
- Функции высшего порядка
- Тайная жизнь объектов
- Проект: электронная жизнь
- Обработка ошибок
- Регулярные выражения
- Модули
- Проект: язык программирования
- JavaScript и браузер
- Document Object Model
- Обработка событий
- Проект: игра-платформер
- Рисуем на Canvas
- HTTP
- Формы и поля ввода
- Проект: Paint
- Node.js
- Проект: веб-сайт по обмену умениями
- Песочница для кода
Проблема объектно-ориентированных языков в том, что они тащат с собой всё своё неявное окружение. Вам нужен был банан – а вы получаете гориллу с бананом, и целые джунгли впридачу.
Джо Армстронг, в интервью Coders at Work
Термин «объект» в программировании сильно перегружен значениями. В моей профессии объекты – стиль жизни, тема священных войн и любимое заклинание, не теряющий своей магической силы.
Стороннему человеку всё это непонятно. Начнём же с краткой истории объектов как концепции в программировании.
Читать полностью »
Правильно программируем. Используем полиморфизм. Общая логика игровых персонажей
2013-10-01 в 10:49, admin, рубрики: game development, Gamedev, unity, unity3d, ооп, полиморфизм, метки: 3d графика, game development, Gamedev, unity, unity3d, ооп, полиморфизмUnity3D. ИСПОЛЬЗУЕМ ПРЕИМУЩЕСТВА ООП. ПОЛИМОРФИЗМ
Доброго времени суток. В этом уроке мы рассмотрим несколько важных приемов программирования на движке Unity 3D. Думаю, статья поможет как начинающим, так и опытным игроделам.
Целью статьи ставлю осознание мощи и безграничной удобности использования всех прелестей ООП. В частности ПОЛИМОРФИЗМ. Кроме того затронем несколько других важных вопросов.
Так же немного поговорим о концепции создания собственных моторов, общей логике игровых персонажей и о методах взаимодействия их между собой и с окружающим миром. Мы поговорим, как сделать это просто и логично, легко редактируемо (модернизируемо). Как сделать так чтобы при добавлении новых элементов в игру, не приходилось переписывать (дополнять) уже написанное.
Думаю в будущем будет продолжение статьи. Там мы детально рассмотрим написание собственных Моторов, поговорим о векторах и о нужных нам операциях над ними, создадим полноценную модель инвентаря. Очень хорошего инвентаря, в который можно будет легко добавлять новые элементы без изменения старых.
Читать полностью »
Полиморфизм без виртуальных функций
2013-06-10 в 13:05, admin, рубрики: c++, CRTP, pattern, sfinae, virtual, ненормальное программирование, ооп, полиморфизм, метки: c++, CRTP, pattern, sfinae, virtual, ооп, полиморфизмВ этой статье представлен паттерн, который может быть использован для обеспечения динамического связывания без использования виртуальных функций для вызова перегруженных методов для объектов неоднородного контейнера при его обходе. Читать полностью »

