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

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

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

Теория ООП

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

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

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

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

3000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 Инкапсуляция мечты 00:09:02 99 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: Инкапсуляция - управление данными через методы, скрытие данных от других кусков программы, объединение данных и методов 
Сложности: не было 
Комментарии: хороший вводный урок 
2 Урок рисования 00:08:10 95 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: использовать классы Bitmap, Graphics, Pen, ранее никогда не рисовал в c# 
Сложности: сам бы я долго подбирал координаты 
Комментарии: все ок 
3 Первый класс 00:09:53 88 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было 
Комментарии: хорошо, наглядно объясняет человек  
4 Второй класс 00:09:13 84 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было 
Комментарии: хороший понятливый урок 
5 Круглый класс 00:08:10 81 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: Рисовать круг 
Сложности: сам бы координаты долго подбирал 
Комментарии: все ок 
6 Структура пикселя 00:10:55 70 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: больше появилось понимания отличия структуры от класса 
Сложности: подбирать координаты точек, подсматривал в видео уроке 
Комментарии: все ок 
7 Структура vs Класс 00:25:05 63 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 40 мин. [Показать отчёт]
Научился: Понимание было про отличие классов, но все равно полезно. Структура значимый тип, класс ссылочный тип. Структура хранится в стеке, класс в куче. При передаче структуры в качестве параметра в функцию, происходит копирование и сам входящий параметр не меняется, в случае класса передается ссылка и по ссылке значение меняются. В структуре нельзя определит дефолтный конструктор. В структуре нельзя определить финализатор. Структура это маленький класс. От структуры нельзя наследоваться. 
Сложности: не было 
Комментарии: доходчиво объясняет человек 
8 Пиксели для классов 00:14:44 60 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: вызов одного конструктора из другого использование this 
Сложности: не было 
Комментарии: все ок 
9 Расстояние между пикселями 00:12:12 60 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: закрепил вызов через другой конструктор this 
Сложности: не было 
Комментарии: все ок 
10 Цветные карандаши 00:14:54 58 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: усваивается инкапсуляция , множественные конструкторы 
Сложности: не было  
Комментарии: все ок 
11 Рисуем Снеговика 00:14:40 57 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было 
Комментарии: все ок 
12 Второй Снеговик 00:09:46 57 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ни чему 
Сложности: придумать как изменять координаты, кроме ползунков на каждый параметр, которые озвучили на уроке не пришло лучше мыслей, видимо надо создавать какой то класс в котором объединяются все элементы в один снеговик и через один метод который реализуется несколькими методами меняются координаты размер или поворачиваются все элементы снеговика 
Комментарии: все ок 
13 Богатое наследство 00:12:53 56 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: Научился синтаксису вызова базового конструктора из дочернего. Наследование это перенос всех полей, методов... все что содержится в родительском объекте в объект дочерний. Короче говоря, избавление от копи-паста 
Сложности: не было 
Комментарии: хорошо объясняет человек 
14 Фигуральный базовый класс 00:10:56 55 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: хорошая идея создать пустой базовый класс для объединения в один массив объектов, у которых нет ничего общего. функцию Draw реализовал через if - if (shape is line) Draw(shape as line) ... 
Сложности: не было 
Комментарии: все ок 
15 Рисователь снеговиков 00:11:51 55 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 10 мин. [Показать отчёт]
Научился: ничему. в классе Shape, Pixel разместили для определения смещения снеговика 
Сложности: не было 
Комментарии: все ок 
16 Переезд метода Draw 00:11:54 55 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: конструкция typeOf работает корректней чем моя, пришлось добавить !(shape is ColorCircle) if (shape is Circle && !(shape is ColorCircle)) (shape as Circle).Draw(); 
Сложности: предыдущий комментарий 
Комментарии: все ок 
17 Переезд graph в базовый класс 00:13:10 55 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: теория и была в голове, смотрю как на практике происходит, надеюсь скоро научусь также объектами мыслить 
Сложности: не было 
Комментарии: все ок 
18 Мощь полиморфизма 00:09:01 53 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: синтаксису переопределяемых методов 
Сложности: не было 
Комментарии: все ок 
19 Спрайт для Снеговика 00:12:28 53 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: пример класса: при первичной инициализации пустой список, с возможностью добавления элементов 
Сложности: с методом SetGraphic подзапутался, в каких местах вызывать... 
Комментарии: все ок 
20 Перемещение круга 00:11:42 53 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: 4. Измeнить мeтoд Circle.Move() чтoбы кpyжoк пeрeмещался. В задание неправильно указан метод, изменить надо Circle.Draw, а то тыкался, пришлось повторно видео пересматривать, ну это мелочи 
Комментарии: все ок 
21 Перемещение других фигур 00:08:37 53 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: подбирать координаты 
Комментарии: все ок 
22 Перемещение Снеговиков 00:10:48 52 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: обращаться к базовому методу через base 
Сложности: не было 
Комментарии: все ок 
23 ПОЛУФИНАЛЬНЫЙ УРОК. 46 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 10 мин. [Показать отчёт]
Научился: ни чему 
Сложности: все ок 
Комментарии: хорошо доходчиво объясняет Евгений, примеры отличные все хорошо понимается, теорией я и до курсов владел, но практически не применял, хочу научится мыслить объектно и применять на практике, были моменты которые не знал, например вызов базового метода из дочернего. 
24 Интерфейс. Зачем он нужен. 00:09:33 44 чел. ★ 4.9 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 10 мин. [Показать отчёт]
Научился: интерфейс содержит сигнатуру, которую потом реализовывают классы наследуемые от интерфейса 
Сложности: не было 
Комментарии: все ок 
25 Интерфейс. Правила игры. 00:12:23 43 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: своя реализация: private void SetNewLeader(Игрок gamer) { leader = gamer; } private void FindNewLeader() { foreach (var gamer1 in gamers) { foreach (var gamer2 in gamers) { if (gamer1.Поймал(gamer2)) { SetNewLeader(gamer2); return; } } } } 
Сложности: понять смысл методов SetLeader и GetLeader 
Комментарии: все ок 
26 Интерфейс. Алгоритм игры. 00:07:48 43 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: необходимо реализовать интерфейс, заполнить список игроков 
Сложности: понять постановку задачу, только на этом уроке понял, что должны реализовывать методы с интерфейса 
Комментарии: все ок 
27 Интерфейс. Создаём кружок. 00:08:36 42 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: продумать дальнейшие действия, далее должны видимо инициализировать круги и заполнять список игроков  
Комментарии: все ок 
28 Интерфейс. Площадка для игры. 00:11:58 40 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: закрепил работу с графикой 
Сложности: не было 
Комментарии: класс арена нужен для создания, рисования рендомных фигур, т.е. приступили к реализации задуманной абстракции 
29 Интерфейс. Кружок на площадке. 00:11:49 40 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: рисовать круги закрепил 
Сложности: подбирать параметры для рисования 
Комментарии: все ок 
30 Интерфейс. Запускаем кружки на площадку! 00:11:49 40 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: закрепляю работу с грфикой 
Сложности: не было  
Комментарии: метод Clear немного надо изменить на graphics.Clear(picture.BackColor ) - вместо статичного указанного цвета, а то изначально в дизайнере можно указывать только тот цвет, который используется в коде, но это мелочи...  
31 Интерфейс. Кружок хочет играть. 00:09:42 40 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: метод беги мне представляется изменением координатов круга рендомными смещениями по x и y, метод поймал - если круг лидер после смещения залез на другой круг 
Комментарии: все ок 
32 Интерфейс. Кружок готов к игре! 00:20:47 39 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: Обращаться к текущему экземпляру объекта через this без параметров 
Сложности: не было 
Комментарии: Видимо, для запуска игры запускать циклически с паузами gameCatch.Step() предварительно создав экземпляр на форме GameCatch 
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53 39 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: все круги были одного цвета, проблему нашел, при прорисовки круга не брался цвет с экземпляра а указывался явно, моя ошибка 
Комментарии: Чтоб исправить ошибку с переГолированием, ввел новое поле "Предыдущий лидер" в класс GameCatch, добавил проверку не являлся ли пойманный игрок предыдущим лидером, если являлся - назначение лидера не происходит, работает 
34 Интерфейс. Изменяем правила игры. 00:10:22 37 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ни чему 
Сложности: не было 
Комментарии: моя версия в предыдущей задаче- хранить предыдущего лидера, меньше строчек кода ) Новое правило - игра колдуны, "Голя" кого нить догнал, тот игрок останавливается на какое- то определенное время, "Голя" пытается догнать всех остальных, т.е. всех остановить, если ему это удалось, последний пойманный становиться "Голей" 
35 Интерфейс. Создаём новую игру. 00:12:31 36 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: продумать реализацию SetNewVirus(Игрoк), FindNewVirus() FindNewVirus() используем вложенные циклы, верхний цикл бежим по всем вирусным игрокам, вложенный цикл по всем игрокам(внутри проверка если не зараженный), если зараженный поймал не зараженного- заражаем SetNewVirus SetNewVirus(Игрoк) добавляем в массив зараженных и вызываем метод Голя. После этого проверка, если не зараженных остался один , то массив зараженных чистим и добавляем последнего пойманного 
Комментарии: все ок  
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05 33 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было 
Комментарии: наглядно увидел силу ООП, как легко можно менять игру (реализацию) , если правильно продумать абстракцию Доходчиво, легко объясняет Евгений. Красивая задача получилась! Теорию я знал и ранее практики нет. Хороший пример чтоб самому начать мыслить объектами! Следующий курс подберу с использованием делегатов, событий. Евгений какой порекомендуете? 
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23 34 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 30 мин. [Показать отчёт]
Научился: ничему 
Сложности: не заработало функция поймал, ссылки на работе не доступны, буду смотреть на след. уроке 
Комментарии: все ок 
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47 32 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 20 мин. [Показать отчёт]
Научился: ничему 
Сложности: не было 
Комментарии: все ок 
39 Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. 00:22:25 26 чел. ★ 5 Done
  Отчёт отправил: 8959. Максим Саратов Решено за 1 час. 00 мин. [Показать отчёт]
Научился: реализации метода - "поймал" разных объектов, кругов и квадратов 
Сложности: не было 
Комментарии: все ок 
Видеообзор: https://youtu.be/ve0Iw7hoAhI
  Итого:   39 видеоуроков общей продолжительностью 7 час. 40 мин. 26 чел. ★ 4.95  
  Финалисты:   lomik,   Роман,   Максим Базуев,   Neverwinter 2,   Владимир,   Никита,   Оля,   Валера Луцевич,   Anton Sozykin,   Permitin Alexey,   Артём,   Максим Лапшинов,   Frank,   Archi,   Александр Львович,   Ильшат,   Олег Михайлович,   Дмитрий,   Новопашин Владимир,   Евгений,   Сергей Соколов,   Александр Б.,   Максим Саратов,   Алексей В.,   Александр,   Rita .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Радоваться тем, что сделал сам
Трудности: Ничего
Эти уроки очень понравились тем, что мы работали с графикой, ООП и тд., я бы порекомендовал Евгению перейти на новый граф. движок SharpGL(OpenGL) - это мощная библиотека, для рисования, рендеринга и игр. она раскрывает нам как рисуются 3D объекты(по точкам), очень интересная библиотека рекомендую!!!
Научился: Создавать новые игры, используя интерфейс.
Трудности: Ничего сложного.
Мне очень понравилась игра!) Очень классно получилось) И что самое примечательное, что мы можем сами, как нам угодно менять правила игры)