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

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

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

Теория ООП

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

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

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

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

3000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 Инкапсуляция мечты 00:09:02 107 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 3 мин. [Показать отчёт]
Научился: Узнал, что такое инкапсуляция 
Сложности: Искать картинку 
Комментарии: +++ 
2 Урок рисования 00:08:10 102 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 20 мин. [Показать отчёт]
Научился: Рисовать на pictureBox 
Сложности: Ничего 
Комментарии:   
3 Первый класс 00:09:53 95 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 30 мин. [Показать отчёт]
Научился: - 
Сложности: Ничего 
Комментарии: Имеем массив из линий, линия может сама себя нарисовать 
4 Второй класс 00:09:13 91 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: - 
Сложности: Ничего 
Комментарии: Всё просто 
5 Круглый класс 00:08:10 88 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: - 
Сложности: Ничего 
Комментарии:  Всё просто 
6 Структура пикселя 00:10:55 77 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Работать со структурами 
Сложности: Всё просто 
Комментарии: Круг можно задать 4 разными способами 
7 Структура vs Класс 00:25:05 70 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Понял разницу между структурой и классом 
Сложности: Ничего 
Комментарии: +++ 
8 Пиксели для классов 00:14:44 67 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 25 мин. [Показать отчёт]
Научился: Вызывать конструктор из класса 
Сложности: Ничего 
Комментарии: +++ 
9 Расстояние между пикселями 00:12:12 67 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 30 мин. [Показать отчёт]
Научился: Находить дистанцию между точками 
Сложности: Переписать все конструкторы класса Ellipse 
Комментарии: +++ 
10 Цветные карандаши 00:14:54 65 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 20 мин. [Показать отчёт]
Научился: Ничему 
Сложности: Писать заведомо неоптимизированные классы 
Комментарии: +++ 
11 Рисуем Снеговика 00:14:40 64 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 40 мин. [Показать отчёт]
Научился: Рисовать снеговика 
Сложности: Вычислить точки 
Комментарии: +++ 
12 Второй Снеговик 00:09:46 64 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 7 мин. [Показать отчёт]
Научился: Перемещать за раз много координат 
Сложности: Всё просто 
Комментарии: Чтобы перемещать, надо запилить deltaX и deltaY, чтобы менять размер, надо умножить все числа на одно число. Как вращать, не знаю 
13 Богатое наследство 00:12:53 63 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: Вспомнил про наследование 
Сложности: Ничего 
Комментарии: Наследование - это использование функционала родительского класса с добавлением нового 
14 Фигуральный базовый класс 00:10:56 62 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Добавлять в массив объекты разных классов 
Сложности: Ничего сложного 
Комментарии: Можно спрашивать, что это за тип, и в зависимости от этого вызывать Draw с нужными аргументами 
15 Рисователь снеговиков 00:11:51 62 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 25 мин. [Показать отчёт]
Научился: Рисовать массив фигур 
Сложности: Ничего 
Комментарии: Shape.position нужна, чтобы задать верхнюю левую точку спрайта и двигать его 
16 Переезд метода Draw 00:11:54 61 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: делать так, чтобы фигура сама себя рисовала 
Сложности: Ничего 
Комментарии: +++ 
17 Переезд graph в базовый класс 00:13:10 60 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Хранить graph в родительском классе 
Сложности: Ничего 
Комментарии: +++ 
18 Мощь полиморфизма 00:09:01 58 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 3 мин. [Показать отчёт]
Научился: Понял мощь полиморфизма 
Сложности: Ничего 
Комментарии: Стало намного лучше 
19 Спрайт для Снеговика 00:12:28 58 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Работать с List-ом 
Сложности: Ничего сложного 
Комментарии: +++ 
20 Перемещение круга 00:11:42 58 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Перемещать кружок 
Сложности: Ничего 
Комментарии: +++ 
21 Перемещение других фигур 00:08:37 58 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Перемещать несколько фигур 
Сложности: Ничего 
Комментарии: Не удержался и сделал сразу спрайтом 
22 Перемещение Снеговиков 00:10:48 57 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: Двигать спрайты 
Сложности: Ничего сложного 
Комментарии: +++ 
23 ПОЛУФИНАЛЬНЫЙ УРОК. 51 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 3 мин. [Показать отчёт]
Научился: Детально изучил объектно-ориентированное программирование. Вспомнил, что такое инкапсуляция и наследование, узрел мощь полиморфизма, понял разницу между структурой и классом 
Сложности: Сложностей не возникло, всё понятно 
Комментарии: Здорово, что вся теория рассказывается на практике - Павленко Ярослав 
24 Интерфейс. Зачем он нужен. 00:09:33 48 чел. ★ 4.9 Done
  Отчёт отправил: 9768. Ender Решено за 3 мин. [Показать отчёт]
Научился: Описывать интерфейс 
Сложности: Ничего 
Комментарии: Интерфейс - это правила игры для объектов 
25 Интерфейс. Правила игры. 00:12:23 47 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Управлять разными объектами через общий интерфейс 
Сложности: Ничего сложного 
Комментарии: +++ 
26 Интерфейс. Алгоритм игры. 00:07:48 47 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: +++ 
Сложности: Ничего 
Комментарии: Нужно добавить игроков 
27 Интерфейс. Создаём кружок. 00:08:36 46 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: Снова создал круг 
Сложности: --- 
Комментарии: +++ 
28 Интерфейс. Площадка для игры. 00:11:58 45 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Повторил старое 
Сложности: Ничего 
Комментарии: Арена представляет собой площадку для рисования, которая может выполнять некоторые действия 
29 Интерфейс. Кружок на площадке. 00:11:49 45 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 7 мин. [Показать отчёт]
Научился: Обновлять pictureBox 
Сложности: Ничего 
Комментарии: +++ 
30 Интерфейс. Запускаем кружки на площадку! 00:11:49 45 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 3 мин. [Показать отчёт]
Научился: Передавать pictureBox в функцию, как аргумент 
Сложности: Ничего 
Комментарии: +++ 
31 Интерфейс. Кружок хочет играть. 00:09:42 45 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Реализовывать интерфейсы 
Сложности: Ничего 
Комментарии: Мой метод Поймал подходит только для кругов 
32 Интерфейс. Кружок готов к игре! 00:20:47 44 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 10 мин. [Показать отчёт]
Научился: Всё по-старому 
Сложности: Ничего 
Комментарии: Для запуска игры нужно, чтобы новые круги записывались в list и gameCather управлял игрой по таймеру 
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53 44 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 40 мин. [Показать отчёт]
Научился: Сравнивать объекты 
Сложности: Ничего 
Комментарии: +++ 
34 Интерфейс. Изменяем правила игры. 00:10:22 43 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 5 мин. [Показать отчёт]
Научился: Залипать на шарики 
Сложности: Ничего 
Комментарии: +++ 
35 Интерфейс. Создаём новую игру. 00:12:31 42 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 30 мин. [Показать отчёт]
Научился: Менять правила игры 
Сложности: Придумать нормальный алгоритм FindNewVirus 
Комментарии: +++ 
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05 39 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 15 мин. [Показать отчёт]
Научился: Углубил свои познания в ООП 
Сложности: Всё просто 
Комментарии: Очень интересный курс 
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23 40 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 40 мин. [Показать отчёт]
Научился: С лёгкостью переписывать игру для других объектов 
Сложности: Ничего 
Комментарии: +++ 
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47 38 чел. ★ 5 Done
  Отчёт отправил: 9768. Ender Решено за 20 мин. [Показать отчёт]
Научился: +++ 
Сложности: Ничего 
Комментарии: +++ 
39 Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. 00:22:25 32 чел. ★ 5 Open
  Итого:   39 видеоуроков общей продолжительностью 7 час. 40 мин. 32 чел. ★ 4.96  
  Финалисты:   lomik,   Роман,   Максим Базуев,   Neverwinter 2,   Владимир,   Никита,   Оля,   Валера Луцевич,   Anton Sozykin,   Permitin Alexey,   Артём,   Максим Лапшинов,   Frank,   Archi,   Александр Львович,   Ильшат,   Олег Михайлович,   Дмитрий,   Новопашин Владимир,   Евгений,   Сергей Соколов,   Александр Б.,   Максим Саратов,   Алексей В.,   Александр,   Rita,   Станислав,   Алексей Хонин,   Ludmila,   Yefim,   Сергей Зулкарнаев,   Сергей Аникин .

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




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

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

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

Ты в любой момент сможешь отписаться от рассылки.
Научился: Полная реализация игры
Евгений, спасибо большое за серию видеоуроков по теории ООП!!! Благодаря этому легко понять зачем нужны интерфейсы и как их можно использовать.
Научился: Метод Contains у класса List<>, удобная штука.
Трудности: Не было, все понятно, хорошо показано, как изменить правила в игре.
Перед началом второй части курса теории ООП я ожидал, что мы продолжим работать со снеговиками, научим их каким-нибудь действиями (помню Оля писала мне в комментариях, что "они у нас еще потанцуют, а мы отлично потренируемся"). Кроме того, в шапке курса было указано, "При создании программы мы будем использовать некоторые шаблоны проектирования, такие как "Одиночка", "Фабрика", "Строитель", "Наблюдатель" и другие. Когда я это увидел, еще до того, как пройти первую часть курса, то загорелся желанием пройти курс ООП. В первой части курса паттернов не было, поэтому ожидал их увидеть во второй части. Но и во второй части их не было. Да, были моменты с методами Arena.NewCircle(), но упор в курсе был сделан не на паттерны, а на интерфейсы. Однако это ни в коей мере не говорит о том, что курс мне не подошел. Я присутствовал на вебинаре, на котором производилась запись курса, это восхитительная атмосфера, всем советую ходить на вебинары!) Тематика второй части курса меня сразу захватила, Евгений Витольдович придумал интересный пример для объяснения этой важной концепции в объектно-ориентированном программировании. При этом, в первых уроках упор был сделан на абстракцию, логику программу, а отображением результатов на форме мы занимались во второй половине курса, и, что примечательно, программа сразу со старта заработала корректно, это достойно уважения!) Кроме того, практически после каждого урока были дополнительные вопросы на проработку материала. Нам было необходимо написать словесные алгоритмы или попробовать самим реализовать действия из следующих уроков. Это сильно мотивирует и проверяет на сколько качественно усваивается материал. В целом, я считаю, что неплохо прокачался за эти два курса ООП. Кому стоит рекомендовать данный курс? В своем полуфинальном отчете я писал, что курс теория ООП хорошо подойдет для программистов, которые достаточно уверенно знают C#, но не уверенно понимают понятия ООП. Мои коллеги по проекту не разделяют этого мнения (я читал их отзывы с полуфинального урока) и считают, что курс мастхев для новичков. На вкус и цвет конечно, но я своего мнения не меняю. Лучше сначала хорошо проработать задачи из консоли, бесплатные курсы, понять, что ты не боишься языка программирования и можешь написать программу любой разумной сложности, и потом понять для себя, чего не хватает и к чему лежит интерес) Получился достаточно длинный отчет, спасибо тем, кто прочитал его до конца) Спасибо Евгений Витольдович, мне было приятно пройти курс теория ООП, появились новые идеи, открылись пробелы по некоторым вопросам, будем изучать дальше!)