Серия «Шлюха программирование»

Абстрактный класс

Серия Шлюха программирование

Как запомнить абстрактный класс в C# за 5 минут? Шлюхи, бордель и ваш мозг в огне! ??

Привет, кодер-лох! ?? Забыл, что такое абстрактный класс в C#? Не плачь в углу с учебником — сегодня я объясню это так, что даже твой кот запомнит. И да, здесь будет много шлюх, мат и сломанные мозги. Поехали!

Что такое абстрактный класс?

Коротко и по-быстрому:

Нельзя создать экземпляр (т.е. new AbstractClass() — иди нахрен, ошибка).

Может содержать абстрактные методы (т.е. "сделай это, сука, но я не скажу как").

Наследники обязаны всё реализовать (иначе — вылетишь как проститутка из борделя за лень).

Мнемоника для тупых: "Мадам-шлюха и её девки"

Представь бордель. В нём есть:

Мадам-мразь (она же абстрактный класс):

Сама не трахает клиентов (нельзя new Мадам() — только трясёт кокосами и кричит: "Вы что, охуели? Я же мадам, а не шлюха!").

Говорит правила: "Все девки должны уметь 'трахать по-итальянски' и 'делать массаж с перцем'!" (это ваши абстрактные методы).

Если не научишься — вылетишь (иначе класс-наследник будет абстрактным, а это путь в никуда, бро).

Девки-проститутки (ваши наследники):

Обязаны выполнять правила мадам (реализовывать абстрактные методы).

Могут добавить своё (например, "трах с вибратором — +500 к баблу").

Если не сделают — вылетят на мороз (ошибка компиляции: "Ты не девка, ты лузер!").

Пример кода, чтобы мозг не взорвало

// Это МАДАМ. Она не шлюха, а УЧИТЕЛЬНИЦА ПОХАБНЫХ НАУК.

abstract class Мадам {

public abstract void ТрахнутьПоItaliani(); // Абстрактный метод — без реализации!

public virtual void ДатьНапиток() {

Console.WriteLine("Виски с цианидом — бесплатно");

} // Виртуальный метод — можно переопределить, но не обязательно.

}

// Это ДЕВКА-ЛУЗЕРКА, которая не выучила урок.

class Ленчик : Мадам {

public override void ТрахнутьПоItaliani() {

Console.WriteLine("Ленчик трахает как сдохшая рыба... Мадам в ярости!");

}

// Забыла про ДатьНапиток()? Не страшно — виртуальный метод можно не трогать.

}

// Это ДЕВКА-ПРОФИ, которая знает своё дело.

class Катя_С_Тату : Мадам {

public override void ТрахнутьПоItaliani() {

Console.WriteLine("Катя в деле — клиенты плачут от счастья!");

}

public override void ДатьНапиток() {

Console.WriteLine("Катя даёт текилу... и сразу к делу!");

}

}

Почему это работает?

Мадам = abstract class — без неё бордель (программа) рухнет.

Девки = наследники — без них мадам просто тряпка с криками.

Правила = абстрактные методы — если не выполнить, получишь баттхерт от компилятора.

Каждый раз, когда забудешь про abstract, вспоминай:

"Мадам не трахается сама, но заставляет всех трахаться правильно!" 💦

Вывод

Теперь ты никогда не спутаешь абстрактный класс с обычным. Помни:

— Нет new — нет проблем (и никаких шлюх в одиночку).

— Правила есть правила (абстрактные методы обязаны реализовать).

— Если не научишься — вылетишь (как Ленчик после первой же смены).

P.S. Если коллега спросит, как запомнить ООП — шли его сюда. Пусть тоже посмеётся... или заревнует. 😈

Ставь лайки, если теперь C# для тебя — как бордель, а не кошмар экзамена. И да пребудет с тобой... override!

Удачного собеседования, малята.

Показать полностью

Инвариантность, контравариантность, ковариантность

Серия Шлюха программирование

Как шлюхи объясняют ковариантность в C# — запомнишь на всю жизнь (и стыдно будет забыть)! ??

Привет, кодер-неудачник! Ты когда-нибудь путал ковариантность, контравариантность и вообще зачем это всё нужно? Не стесняйся — все мы там бывали. То in, то out, то компилятор орёт, что «cannot convert...», а ты как дурак смотришь на экран и думаешь: «Бля, это же как с этими... шлюхами в том сериале!»

Ну что ж, сегодня я объясню тебе всё на пальцах, но с использованием шлюх. Потому что если не на эмоциях — не запомнишь.

Почему это больно?

В C# есть три сценария работы с типами:

- Ковариантность (out) — когда ты можешь подсунуть более конкретный тип вместо общего.

- Контравариантность (in) — когда ты можешь подсунуть более общий тип вместо конкретного.

- Инвариантность — когда никакой хуйни не будет, только строгий тип.

Звучит как магия? Нет, братан, это проституция в ООП.

Шлюха №1: Ковариантность (out)

Фишка: «Вышла с олигархом — считай, что с мужиком».

Представь:

- У тебя есть шлюха, которая работает только с олигархами (Derived).

- Но ты её записываешь в список «работает с мужиками» (Base).

- Почему можно? Потому что олигарх — это мужик, а не наоборот!

Код для тупых:

class Мужик {}

class Олигарх : Мужик {} // Наследуется, да

IEnumerable<Олигарх- олигархи = new List<Олигарх>();

IEnumerable<Мужик- мужики = олигархи; // Работает! Ковариантность (`out`)

- IEnumerable<T> — ковариантен благодаря out T. Ты выпускаешь (out) олигархов как мужиков.

Мнемоника:

- «Out — шлюха выебала олигарха, считай, что мужика!

- Если вышла с Rolls-Royce — значит, с машиной вышла».

Шлюха №2: Контравариантность (in)

Фишка: «Ебёт мужика — считай, что олигарха».

Теперь:

- У тебя есть шлюха, которая работает со всеми мужиками (Base).

- Ты её нанимаешь для олигархов (Derived).

- Почему можно? Потому что мужик может оказаться олигархом (а не наоборот)!

Код для тупых:

Action<Мужик- обработатьМужика = (m) =- Console.WriteLine("Ебашим мужика");

Action<Олигарх- обработатьОлигарха = обработатьМужика; // Работает! Контравариантность (`in`)

- Action<T> — контравариантен благодаря in T. Ты принимаешь (in) мужиков как олигархов.

Мнемоника:

- «In — шлюха ебёт мужика, считай, что олигарха!

- Если взяла любого в подъезде — может, это Ротенберг».

Шлюха №3: Инвариантность (никакой in/out)

Фишка: «Ты — олигарх? Нет? Тогда вали нахуй!».

А теперь представь самую принципиальную шлюху:

- Она работает ТОЛЬКО с олигархами (Derived).

- Если ты предложишь ей просто мужика (Base) — она скажет: «Ты шо, еблан? У меня контракт только с Ротенбергом!».

- И даже если олигарх придёт — она не согласится считать его «просто мужиком».

Код для тупых:

List<Олигарх- олигархи = new List<Олигарх>();

List<Мужик- мужики = олигархи; // ОШИБКА! Инвариантность.

- List<T> — инвариантен. Нету in/out - никаких преобразований. Тип жёстко фиксирован, как принципы шлюхи после 30.

Мнемоника:

- «Инвариантность — шлюха не ебёт никого, кроме олигархов.

- Ни мужиков, ни бомжей — только паспорт Ротенберга!»

Как не облажаться?

- out = выходи с олигархом, но считай его мужиком - сужение типа (Derived - Base).

- in = входи к мужику, но считай его олигархом - расширение типа (Base - Derived).

- Без in/out = только как в контракте - никаких хитростей (инвариантность).

Лайфхак:

Каждый раз, когда пишешь List<T> или Dictionary<TKey, TValue>, вспоминай:

- «Если шлюха не ставит галочку «подходит для всех мужчин» в профиле — значит, она инвариантна. Ищи другую».

Почему это гениально?

Потому что:

1. Эмоции = память. Ты не забудешь про шлюх, даже если забудешь синтаксис C#.

2. Юмор снимает стресс. Теперь компилятор будет кричать «invariant», а ты улыбнёшься и поправишь код.

3. Ты станешь легендой в команде. «Братан, а как ты запомнил контравариантность?» — «Да шлюхами, чё».

P.S.

Если после этого ты всё равно запутаешься — значит, ты слишком трезвый. Или не смотрел «Горько!».

А если запомнил — ставь лайк, комментируй «Спасибо, теперь шлюхи в моём коде», и не забудь: в C# всё решают контракты... и проститутки. ??

P.P.S. Инвариантность — это когда шлюха сказала: «Ты не Ротенберг? Тогда даже не звони». А ковариантность/контравариантность — это когда она согласна на компромисс. Выбирай, какая тебе ближе.

P.P.P.S. Автор не несёт ответственности за ваши мысли о ковариантности на свиданиях. Но если помогло — пиши в личку, устроим контравариантный квест. ??

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества