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

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

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

Теория ООП

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

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

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

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

3000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 Инкапсуляция мечты 00:09:02 99 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Формулировать своими словами что такое инкапсуляция. 
Сложности: Выбрать картинку, очень много хороших. 
Комментарии: Инкапсуляция - это защита внутреннего представления объекта от несанкционированного изменения. Доступ возможен только через разрешенные публичные методы. 
2 Урок рисования 00:08:10 95 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Повторил последовательность для рисования: Bitmap, Graphics, Pen. 
Сложности: легко. Не первый раз ;) 
Комментарии: Все время забываю последовательность для рисования на форме, поэтому оставлю здесь как рисовать на PictureBox: 1. создать объект Bitmap. 2. создать объект Graphics из Bitmap 3. задать карандаш Pen 4. что-то нарисовать 5. показать: присвоить наш Bitmap с рисунком объекту PictureBox.Image 
3 Первый класс 00:09:53 88 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 20 мин. [Показать отчёт]
Научился: Выделять из готовой программы класс Line. 
Сложности: ничего 
Комментарии: Отличный урок, если бы это был мой первый класс то и в этом случае было бы все просто и понятно. Спасибо! 
4 Второй класс 00:09:13 84 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 40 мин. [Показать отчёт]
Научился: Создал класс Box, и перегруженный метод Draw(Box box). 
Сложности: ничего 
Комментарии: Сначала сделал класс Box, потом начал смотреть видео. Доработал класс Box так, чтобы первая пара координат была всегда верхней левой, а вторая нижней правой. Спасибо за урок! 
5 Круглый класс 00:08:10 81 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Постепенно усложняем программу добавляя новые классы. 
Сложности: ничего 
Комментарии: Хороший урок. 
6 Структура пикселя 00:10:55 70 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 30 мин. [Показать отчёт]
Научился: Расширять классы и конструкторы используя структуру Pixel 
Сложности: ничего 
Комментарии: Интересно наблюдать за изменениями в программе. Спасибо за урок! 
7 Структура vs Класс 00:25:05 63 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 45 мин. [Показать отчёт]
Научился: На практике убедился в чем различие структуры и класса. И узнал разные способы передачи структуры как параметра. 
Сложности: ничего, главное несколько раз повторить. 
Комментарии: Очень важный и полезный урок, никому нельзя его пропускать. Спасибо!  
8 Пиксели для классов 00:14:44 60 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 45 мин. [Показать отчёт]
Научился: Использовать структуру Pixel во всех классах. Убирать повторяемый код. 
Сложности: все понятно. 
Комментарии: Все хорошо, идем дальше! Спасибо! 
9 Расстояние между пикселями 00:12:12 60 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 20 мин. [Показать отчёт]
Научился: Расширять классы необходимым конструктором. Выносить полезные части кода в отдельный метод структуры. 
Сложности: ничего. 
Комментарии: Отличный урок. 
10 Цветные карандаши 00:14:54 58 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 41 мин. [Показать отчёт]
Научился: Добавлять классы. 
Сложности: ничего 
Комментарии: Создали тяжело расширяемую программу, которую будем рефакторить. Спасибо! 
11 Рисуем Снеговика 00:14:40 57 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 41 мин. [Показать отчёт]
Научился: Программно рисовать по точкам. 
Сложности: ничего 
Комментарии: Интересный способ, надо взять на заметку. Спасибо! ps: забыл добавить скриншот результата работы программы 
12 Второй Снеговик 00:09:46 57 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 15 мин. [Показать отчёт]
Научился: ничему 
Сложности: ничего 
Комментарии: Для перемещения, масштабирования и поворота, необходима собственная система координат и точка отсчета для привязки к координатам экрана. 
13 Богатое наследство 00:12:53 56 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 32 мин. [Показать отчёт]
Научился: Практически использовать наследование. 
Сложности: все гораздо проще чем думал. 
Комментарии: Наследование это использование всего что есть в классе предке плюс новые свойства. За счет наследования мы избегаем дублирование кода. Спасибо! 
14 Фигуральный базовый класс 00:10:56 55 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Наследование можно использовать для помещения всех объектов-потомков в массив. 
Сложности: все легко когда наглядно. 
Комментарии: Для реализации общей функции Draw() для всех фигур без полиморфизма нужно каким-то образом узнавать в case тип фигуры наследника и вызывать для нее ее функцию Draw. 
15 Рисователь снеговиков 00:11:51 55 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 20 мин. [Показать отчёт]
Научился: Хорошему способу работы с типом объекта. 
Сложности: ничего, все логично идет к наследованию метода Draw имхо. 
Комментарии: Переменная Shape.position думаю будет содержать относительную позицию собственной системы координат фигуры потомка для размещения в окне. Спасибо! зы: Все интереснее и интереснее. 
16 Переезд метода Draw 00:11:54 55 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 29 мин. [Показать отчёт]
Научился: Расширять класс своим методом Draw(). И имитировать полиморфизм. 
Сложности: Не получалось преобразование типа Shape в Circle при вызове метода, пришлось подсмотреть, оказывается нужна вторая пара скобок. 
Комментарии: Очень интересно наблюдать как наша программа становится все большее похожей на объектно-ориентированную, в каждом уроке интрига. Вперед, к победе Полиморфизма! 
17 Переезд graph в базовый класс 00:13:10 55 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: Постепенно прятать (инкапсуляция?) детали реализации методов от основной программы.  
Сложности: Ничего, пытался реализовать сначала все самостоятельно, а потом смотрел видео. 
Комментарии: Удалил Pen из Init(), так как в Shape он задан в конструкторе, а в цветных классах явно. Спасибо, Вы очень подробно показываете как и главное зачем использовать принципы ООП.  
18 Мощь полиморфизма 00:09:01 53 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 36 мин. [Показать отчёт]
Научился: Использовать abstract, virtual и override. 
Сложности: понять разницу между abstract и virtual. Вроде и так и так работает. Нужно больше практики. 
Комментарии: Наглядно показана разница между виртуальным и абстрактным классом. Урок очень важный, пропускать нельзя. Спасибо! 
19 Спрайт для Снеговика 00:12:28 53 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 55 мин. [Показать отчёт]
Научился: Создавать класс на основе списка. 
Сложности: уже пользовался списком, так что легко. 
Комментарии: Мне нравится как все идет к упрощению программы, сразу чувствуется мощь абстрактных структур данных. Спасибо за практические навыки! 
20 Перемещение круга 00:11:42 53 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Реализация поля position как смещения относительно начала координат. 
Сложности: разобраться как работает перемещение. 
Комментарии: Думаю position = (0, 0) можно задавать сразу в конструкторе, координаты объекта будут смещением. Попробовал так сделать, то что получилось на скриншоте. Отличный урок! 
21 Перемещение других фигур 00:08:37 53 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 30 мин. [Показать отчёт]
Научился: перемещению фигур. 
Сложности: Придумать фигуру, воображение разыгралось, даже энтерпрайз был.  
Комментарии: Попытался сделать перемещение спрайта, не вышло, буду смотреть следующий урок. PS I like to move it move it! 
22 Перемещение Снеговиков 00:10:48 52 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 24 мин. [Показать отчёт]
Научился: перемещению спрайтов. 
Сложности: ничего. 
Комментарии: Они двигаются. 
23 ПОЛУФИНАЛЬНЫЙ УРОК. 46 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 30 мин. [Показать отчёт]
Научился: практические навыки использования парадигмы ООП: Инкапсуляция, Наследование и Полиморфизм. Использовать рефакторинг. Писать отзывы. 
Сложности: ничего 
Комментарии: В курсе "Теория ООП" Евгений Витольдович буквально на пальцах, используя реальные примеры работающих программ, показывает как круто использовать ТРИ кита ООП: Инкапсуляция, Наследование и Полиморфизм. Рекомендую его всем кто хочет разрабатывать программы, которые легко изменять и расширять. Начиная с рисования одной линии, постепенно продвигаясь к концу курса вы создадите программу которая не только рисует но и перемещает нарисованные фигуры(спрайты), и при этом программа остается легко понятной и расширяемой. Спасибо за этот очень полезный курс! Владимир Андреев. 
24 Интерфейс. Зачем он нужен. 00:09:33 44 чел. ★ 4.9 Done
  Отчёт отправил: 6391. Владимир Решено за 15 мин. [Показать отчёт]
Научился: Определять интерфейс 
Сложности: ничего 
Комментарии: Интерфейс это набор правил, которые должен соблюдать класс, наследующий этот интерфейс. Играем дальше. 
25 Интерфейс. Правила игры. 00:12:23 43 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 30 мин. [Показать отчёт]
Научился: реализация класса, использующего интерфейс 
Сложности: -void FindNewLeader() Если leader Поймал одного из gamers он становится новым leader -void SetNewLeader() устанавливает нового leader 
Комментарии: Спасибо за урок! 
26 Интерфейс. Алгоритм игры. 00:07:48 43 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 15 мин. [Показать отчёт]
Научился: Почти правильно реализовал оба метода. 
Сложности: все легко 
Комментарии: Все отлично, спасибо за урок! 
27 Интерфейс. Создаём кружок. 00:08:36 42 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 15 мин. [Показать отчёт]
Научился: Сам создал класс Circle. 
Сложности: легко 
Комментарии: Дальше нужно реализовать игровое поле и раскидать игроков по нему и вперед!  
28 Интерфейс. Площадка для игры. 00:11:58 40 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 25 мин. [Показать отчёт]
Научился: Узнал об struct System.Drawing.Size. Научился новому способу создания Image. 
Сложности: ничего 
Комментарии: Арена нужна для отображения хода игры. 
29 Интерфейс. Кружок на площадке. 00:11:49 40 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 20 мин. [Показать отчёт]
Научился: Добавлять методы в класс 
Сложности: ничего 
Комментарии: Спасибо, идем дальше 
30 Интерфейс. Запускаем кружки на площадку! 00:11:49 40 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 30 мин. [Показать отчёт]
Научился: Тестировать и радоваться ;) 
Сложности: ВСЕ ... было легко ;) 
Комментарии: Арена наполнилась игроками. 
31 Интерфейс. Кружок хочет играть. 00:09:42 40 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 24 мин. [Показать отчёт]
Научился: реализация методов интерфейса в классе. 
Сложности: ничего 
Комментарии: в методе Беги будет изменение координат для нового шага, а в методе Поймал проверка поймал ли и нужно ли менять статус. 
32 Интерфейс. Кружок готов к игре! 00:20:47 39 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: реализовывать метод пересечения окружностей 
Сложности: ничего 
Комментарии: Для запуска нужно запустить на Арену кружки в движении и наблюдать результат! 
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53 38 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: Запускать реализованную игру 
Сложности: ничего 
Комментарии: Недочет с переголением исправить нужно внесением задержки после заголения. Они бегают! 
34 Интерфейс. Изменяем правила игры. 00:10:22 37 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 1 час. 13 мин. [Показать отчёт]
Научился: Менять правила 
Сложности: придумать хорошие правила 
Комментарии: Правило игры: Голя должен заголить двоих (или троих) прежде чем перестанет быть им, таким образом число Голь или Голей в течении игры то нарастает то падает. 
35 Интерфейс. Создаём новую игру. 00:12:31 36 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: Увидел как легко, с использованием интерфейсов, добавлять класс с новыми правилами игры.  
Сложности: подумать над реализацией двух методов 
Комментарии: SetNewVirus(Игрок). Должен выбирать из списка игроков зараженных при текущем шаге игры и добавлять их в список зараженных. FindNewVirus() проверяет если остался один, то он становится зараженным и игра начинается снова. Хорошая прокачка ООП мышления! Спасибо! 
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05 33 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: Прокачал работу с коллекциями, увидел всю мощь интерфейсов, когда буквально за 5 минут создали игру по новым правилам. 
Сложности: не залипать надолго ;) 
Комментарии: На скриншоте патовая ситуация в режиме Замри! Осталось два кружка, движущихся горизонтально, а все остальные замерли. Очень полезная серия уроков, где наглядно продемонстрирована вся мощь и гибкость программирования в парадигме ООП используя Интерфейсы! Спасибо! зы в режиме замерзания получаются интересные фигуры, и это имхо физическая демонстрация налипания частиц! Выбираем цвет для незараженных кружков белый и вот мы видим рождение уникальной, как снежинка, фигуры, которая, когда останется только один ... исчезнет! Завораживающе! Только ради этого стоило пройти этот курс! 
Видеообзор: https://youtu.be/oMPvQB6-RR0
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23 34 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 1 час. 25 мин. [Показать отчёт]
Научился: Создавать новый класс реализующий методы интерфейса.  
Сложности: реализовать метод Поймал(). Знаю что можно это сделать проверяя вхождение любой из крайних точек одного бокса в другой, но решил сделать это через проверку центров и воображаемый радиус т.е. максимальное расстояние от центра до края фигуры на случай если захотят играть не боксики, а скажем снеговики ;) 
Комментарии: Эта серия уроков как детский конструктор, все время хочется еще что-то добавить и посмотреть что выйдет. Спасибо Евгений за такую наглядную демонстрацию! зы Только с шариками я уже целую биосистему с эволюцией придумал. зы2 На скриншоте глюк моей реализации метода Поймал() когда вот только так они и ловятся 
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47 32 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 35 мин. [Показать отчёт]
Научился: Простому методу проверки на пересечение двух прямоугольников. 
Сложности: Придумать свой метод, который проверяет на НЕ пересечение и тоже работает.  
Комментарии: Отлично прокачали ООП. Спасибо! 
39 Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. 00:22:25 26 чел. ★ 5 Done
  Отчёт отправил: 6391. Владимир Решено за 2 час. 30 мин. [Показать отчёт]
Научился: Прокачал запись видеообзоров ;) 
Сложности: Сделать короткий обзор, очень тема увлекательная. 
Комментарии: Еще раз спасибо за такие наглядные уроки, за возможность расширять дополнять и развивать эти замечательные программы. После этого курса становятся понятны все абстрактные понятия ООП. 
Видеообзор: https://youtu.be/DzRllNJMctE
  Итого:   39 видеоуроков общей продолжительностью 7 час. 40 мин. 26 чел. ★ 4.95  
  Финалисты:   lomik,   Роман,   Максим Базуев,   Neverwinter 2,   Владимир,   Никита,   Оля,   Валера Луцевич,   Anton Sozykin,   Permitin Alexey,   Артём,   Максим Лапшинов,   Frank,   Archi,   Александр Львович,   Ильшат,   Олег Михайлович,   Дмитрий,   Новопашин Владимир,   Евгений,   Сергей Соколов,   Александр Б.,   Максим Саратов,   Алексей В.,   Александр,   Rita .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: согласно плана урока: 1. Реaлизoвaть метод SetNewVirus(Игрок). 2. Реaлизoвaть метод FindNewVirus(). 3. Запycтить нoвую игру, сменив в FormGame - GameCatch нa GameVirus. 4. Попpoбoвать обездвижить зарaжённыъ игрoкoв. 5. Напиcaть в кoмментариях отзыв oб этой ceрии уроков.
Трудности: Ничего
Все понятно
Научился: Из этой серии уроков узнал основные аспекты ООП в C#, осознаю что не всё осознал и понял на все 100% поэтому планирую пересмотреть уроки еще разок :) Уроки коротенькие но это не лишило их объемности информации. Хочу сказать что сама информация ( содержание уроков ) довольно эксклюзивное и мне нравится как преподносится информация. Можно сравнить с сериалами когда в конце каждой серии упоминается о том что ждет впереди и это увеличивает интерес.
Трудности: Не могу сказать что что-то было сложным т.к почти большая часть уроков проходилась на повторении.
без комм.