Изучение c# на примерах

Формула программиста
основатель — Волосатов Евгений Витольдович
У вас нет доступа для просмотра этой записи.

Получить доступ

Теория ООП

Практический курс по теории Объектно-ориентированного программирования.
С нуля создаётся проект по рисованию различных геометрических фигур,
которые потом объединяются в спрайты, взаимодействуют друг с другом.

Во время создания проекта постоянно применяется рефакторинг кода,
при этом демонстрируются приёмы Объектно-ориентированного программирования.

Во второй части курса мы проработаем понятие Интерфейса.

Объём: 39 коротких видеоуроков
Время: 7 часов 40 минут.
Доступ на 30 дней.

3000 руб.


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

Список уроков | фото | видео

# Название видеоурока Решило Рейтинг Доступ
1 Инкапсуляция мечты 00:09:02 99 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 9 мин. [Показать отчёт]
Научился: Повторил 
Сложности: нет 
Комментарии: Инкапсуляция - сокрытие. Со всеми вытекающими. Скрываем провода и микросхемы под корпусом, наружу выставляем лишь кнопку Power и разъем для клавиатуры. 
2 Урок рисования 00:08:10 95 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 8 мин. [Показать отчёт]
Научился: Потвторил 
Сложности: нет 
Комментарии: нет 
3 Первый класс 00:09:53 88 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 11 мин. [Показать отчёт]
Научился: Повторил 
Сложности: не было 
Комментарии: нет 
4 Второй класс 00:09:13 84 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 15 мин. [Показать отчёт]
Научился: Повторил 
Сложности: не было 
Комментарии: нет 
5 Круглый класс 00:08:10 81 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 10 мин. [Показать отчёт]
Научился: Повторил 
Сложности: не было 
Комментарии: нет 
6 Структура пикселя 00:10:55 70 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 12 мин. [Показать отчёт]
Научился: Повторил структуру 
Сложности: не было 
Комментарии: нет 
7 Структура vs Класс 00:25:05 63 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 25 мин. [Показать отчёт]
Научился: Что структура передается как копия. Если нужная как ссылка пишем ref. 
Сложности: не было 
Комментарии: ок 
8 Пиксели для классов 00:14:44 60 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 15 мин. [Показать отчёт]
Научился: Повторил вызов конструктора через this 
Сложности: не было 
Комментарии: нет 
9 Расстояние между пикселями 00:12:12 60 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 16 мин. [Показать отчёт]
Научился: Convert.ToInt32() - нужная вещь. И я тут недавно как раз пытался вспомнить школьный курс - расстояние между двумя точками на плоскости ))))). 
Сложности: ничего 
Комментарии: нет 
10 Цветные карандаши 00:14:54 58 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 21 мин. [Показать отчёт]
Научился: Повторил 
Сложности: не было 
Комментарии: сейчас нет 
11 Рисуем Снеговика 00:14:40 57 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 25 мин. [Показать отчёт]
Научился: Рисовать снеговиков 
Сложности: не было 
Комментарии: нет 
12 Второй Снеговик 00:09:46 57 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 15 мин. [Показать отчёт]
Научился: Ответы. 1. Насколько возможно перемещать снеговиков по экрану. Разумеется возможно. И разумеется крайне тяжело. На данный момент мы получили работающий, но трудноподдерживаемый код. 2. Для начала надо создать класс снеговика. Еще лучше абстрактный суперкласс для снеговиков. 3. Как реализовать. Каждый класс должен реализовывать общий интерфейс Imove, реализация которого будет разной у каждого класса. Зато вызов одинаковый для всех. Что дает - можем создать параметризованный список (или массив) типа Imove и в цикле вызывать для всех метод движения. И вообще при вызове движения для фигуры не задумываться, какая конкретно это фигура. Вообще конечно это же можно было бы добиться и через абстрактный суперкласс и абстрактный метод move() в суперклассе. Но тут есть много вытекающей теории. Не стану углубляться. 4. для масштабирования точно такая же схема - свой метод. 4. Как на практике реализуется. Ну тут варианты. Я бы передавал в вышеупомянутый метод дельту смещения метод бы доавлял это значение к иску (или игреку) и вызывал отрисовку. 
Сложности: не было 
Комментарии: зам нет 
13 Богатое наследство 00:12:53 56 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 15 мин. [Показать отчёт]
Научился: повторил 
Сложности: сложно не было 
Комментарии: зам нет 
14 Фигуральный базовый класс 00:10:56 55 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 14 мин. [Показать отчёт]
Научился: Жить без полиморфизма 
Сложности: жить без полиморфизма 
Комментарии: Ну раз нельзя использовать полиморфизм, следовательно нужно сначала установить класс объекта: shape.GetType().ToString() , а затем в case вызывать соответствующую функцию. 
15 Рисователь снеговиков 00:11:51 55 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 25 мин. [Показать отчёт]
Научился: вспомнил все эти typeof, is, as и их отличия. Любопытно получилось использовать is. Получались интересные эффекты в разном сочетании. 
Сложности: не было 
Комментарии: Что значит "использовать switch нельзя"? Кто мешает привести тип к строке и сделать так: switch (shape.GetType().ToString()) { case "Geometry.Line": Draw((Line)shape); break; case "Geometry.Box": Draw((Box)shape); break; case "Geometry.Circle": Draw((Circle)shape); break; case "Geometry.ColorLine": Draw((ColorLine)shape); break; case "Geometry.ColorBox": Draw((ColorBox)shape); break; case "Geometry.ColorCircle": Draw((ColorCircle)shape); break; } Всё работает. 
16 Переезд метода Draw 00:11:54 55 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 14 мин. [Показать отчёт]
Научился: повторил 
Сложности: не было 
Комментарии: зам нет 
17 Переезд graph в базовый класс 00:13:10 55 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 24 мин. [Показать отчёт]
Научился: повторил 
Сложности: сложно не было 
Комментарии: зам нет 
18 Мощь полиморфизма 00:09:01 53 чел. ★ 5 Done
  Отчёт отправил: 4342. Алекс Решено за 10 мин. [Показать отчёт]
Научился: повторил 
Сложности: сложно не было 
Комментарии: зам нет 
19 Спрайт для Снеговика 00:12:28 53 чел. ★ 5 Done
  Отчёт отправил: 4342. Алекс Решено за 16 мин. [Показать отчёт]
Научился: Первая приятная неожиданность, что Sprite тоже будет типа Shape. Это отличный ход! Теперь это кажется очевидным. Но вот подишь ты, я этого не предвидел.  
Сложности: сложно не было 
Комментарии: зам нет 
20 Перемещение круга 00:11:42 53 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 14 мин. [Показать отчёт]
Научился: повторил 
Сложности: не было 
Комментарии: зам нет 
21 Перемещение других фигур 00:08:37 53 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 10 мин. [Показать отчёт]
Научился: повторил 
Сложности: не было 
Комментарии: зам нет 
22 Перемещение Снеговиков 00:10:48 52 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 15 мин. [Показать отчёт]
Научился: повторил 
Сложности: не было 
Комментарии: зам нет 
23 ПОЛУФИНАЛЬНЫЙ УРОК. 46 чел. ★ 5 Done
  Отчёт отправил: 4342. Алекс Решено за 10 мин. [Показать отчёт]
Научился: Хороший курс, несмотря на то что в теории я все уже знал, приятно еще раз разложить все по полочкам. И очень приятная практическая тема/стиль изучения был выбран Евгением Витольдовичем. Вот бы еще такой курс по шаблонам проектирования. К примеру, есть хорошая книга А.Шевчука "Design Patterns via C#. Приемы объектно-ориентированного программирования" (думаю, желающие легко найдут способ ознакомиться с данной книгой) в числе прочего на примере одной несложной игры лабиринт разбираются разные паттерны. Думаю, хороший получился бы курс. 
Сложности: Сложно не было 
Комментарии: изложил выше 
24 Интерфейс. Зачем он нужен. 00:09:33 44 чел. ★ 4.9 Done
  Отчёт отправил: 4342. Алекс Решено за 10 мин. [Показать отчёт]
Научился: Интерфейс - контракт на обязательную реализацию в классе набора функций. 
Сложности: ----- 
Комментарии: ---- 
25 Интерфейс. Правила игры. 00:12:23 43 чел. ★ 5 Done
  Отчёт отправил: 4342. Алекс Решено за 14 мин. [Показать отчёт]
Научился: повторил 
Сложности: ---- 
Комментарии: ---- 
26 Интерфейс. Алгоритм игры. 00:07:48 43 чел. ★ 5 Done
  Отчёт отправил: 4342. Алекс Решено за 7 мин. [Показать отчёт]
Научился: повторил 
Сложности: не было 
Комментарии: зам нет 
27 Интерфейс. Создаём кружок. 00:08:36 42 чел. ★ 5 $
28 Интерфейс. Площадка для игры. 00:11:58 41 чел. ★ 5 $
29 Интерфейс. Кружок на площадке. 00:11:49 41 чел. ★ 5 $
30 Интерфейс. Запускаем кружки на площадку! 00:11:49 41 чел. ★ 5 $
31 Интерфейс. Кружок хочет играть. 00:09:42 41 чел. ★ 5 $
32 Интерфейс. Кружок готов к игре! 00:20:47 39 чел. ★ 5 $
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53 39 чел. ★ 5 $
34 Интерфейс. Изменяем правила игры. 00:10:22 38 чел. ★ 5 $
35 Интерфейс. Создаём новую игру. 00:12:31 37 чел. ★ 5 $
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05 34 чел. ★ 5 $
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23 35 чел. ★ 5 $
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47 33 чел. ★ 5 $
39 Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. 00:22:25 26 чел. ★ 5 $
  Итого:   39 видеоуроков общей продолжительностью 7 час. 40 мин. 26 чел. ★ 4.95  
  Финалисты:   lomik,   Роман,   Максим Базуев,   Neverwinter 2,   Владимир,   Никита,   Оля,   Валера Луцевич,   Anton Sozykin,   Permitin Alexey,   Артём,   Максим Лапшинов,   Frank,   Archi,   Александр Львович,   Ильшат,   Олег Михайлович,   Дмитрий,   Новопашин Владимир,   Евгений,   Сергей Соколов,   Александр Б.,   Максим Саратов,   Алексей В.,   Александр,   Rita .

Начинаем практику по языку C#




Чтобы стать хорошим программистом — нужно писать программы. На нашем сайте очень много практических упражнений.

После заполнения формы ты будешь подписан на рассылку «C# Вебинары и Видеоуроки», у тебя появится доступ к видеоурокам и консольным задачам.

Несколько раз в неделю тебе будут приходить письма — приглашения на вебинары, информация об акциях и скидках, полезная информация по C#.

Ты в любой момент сможешь отписаться от рассылки.
Научился: Я писал уже ранее, но использовал 2 списка: здоровые, зараженные, перекидывая игроков между ними. С List.Contains выходит быстрее.
Трудности: ничего. Но ваш код оказался побыстрее, чем мой. Я
Спасибо большое за видеокурс Интерфейс, в котором очень информативно показаны преимущества Интерфейсов. Сразу возникает желание увеличивать код программ, начиная их написания с полной абстракции, в процессе их написания ради получения бонусов в виде легкого видоизменения и дополнения их в дальнейшем. Очень все полезно, класс!!
Научился: На примерах новых игр удалось глубже понять, что такое интерфейс. Теперь есть база для расширения своих познаний.
Трудности: Вообще я тут стал смотреть смотреть смотреть на код код код... И вижу что я не всё понимаю. Например gamers.Add(gamer); - команда добавляет нового игрока... А какого? Как это узнать? Что изначально в переменной gamer? причем эта переменная типа "Игрок" то есть типа интерфейс. Я так подозреваю, что я не знаю какое-то универсальное свойство списка. Но если это не так, поправьте меня, то есть если где то в программе мы это оговариваем особо.
Скриншотов программы не будет, потому что есть видео.
Смотреть видеозапись: https://youtu.be/mXdsRztfQK8