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

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

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

Теория ООП

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

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

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

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

3000 руб.


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

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

# Название видеоурока Решило Рейтинг Доступ
1 Инкапсуляция мечты 00:09:02 99 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 10 мин. [Показать отчёт]
Научился: Освоил интерфейс подачи отчетов, создавать проекты и настройки форм, прикольно оказалось создавать и прикреплять иконки 
Сложности: Выбирать картинку для иконки 
Комментарии: все ок 
2 Урок рисования 00:08:10 95 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Заливать pictureBox битМэпом, и рисовать там с помощью объекта Pen, линии и квадраты (очевидно нарисую если что и остальное) Запуск нарисованного 
Сложности: все норм 
Комментарии: все ок 
3 Первый класс 00:09:53 88 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 15 мин. [Показать отчёт]
Научился: Делать переменные класса - полями, создавать конструктор, создавать перегруженный метод? и вызывать его из другой перегрузки? (речь про Draw(), Выносить объявление переменных в начало класса, чтобы их было видно из всех методов, открывать скрытые по умолчанию переменные класса (поля класса). обозначать переменные с именами совпадающими с именами переменных(параметров) метода словом this 
Сложности: все доступно 
Комментарии: Про this надо более конкретно (плохо видно куда тыкается курсор и соотв можно не уловить смысл) 
4 Второй класс 00:09:13 84 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 15 мин. [Показать отчёт]
Научился: в принципе повторил предыдущий (закрепил). Еще раз повнимательнее посмотрел перегрузку методов, оч понравилось. Быстро понял, что требуется и сделал еще до просмотра видео. Уяснил что разные по сути сущности не надо связывать друг с другом наследованием, даже если они очень похожи. 
Сложности: Забыл сделать конструктор класса Box публичным 
Комментарии: Понравилось, когда видишь ошибку, чувствуешь что разбираешься сам. 
5 Круглый класс 00:08:10 81 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 30 мин. [Показать отчёт]
Научился: Освоил рисование эллипсов, остальное вроде все тоже самое что и в предыдущих 2-х 
Сложности: нашел ошибку (свою) во втором уроке 
Комментарии: все ок 
6 Структура пикселя 00:10:55 70 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 05 мин. [Показать отчёт]
Научился: Создание структуры, перегрузка конструкторов, передача структур в конструктор (в качестве параметра). Освоил рефакторинг (переименование переменной) в Visual Studio. 
Сложности: Все делаю слегка по своему, поэтому поковырялся переделывая класс Circle (чтобы рисовал так как указано в уроке) 
Комментарии: Не ясно, зачем было городить структуру, когда можно было применить обычный класс? 
7 Структура vs Класс 00:25:05 63 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 10 мин. [Показать отчёт]
Научился: в общем я понял, что структура сразу находится в памяти и в этом ее плюс, она заметно легковеснее за счет своих ограничений, чем стандартный класс, также ясно, что структура передается "по значению" а не по ссылке. 
Сложности: Сразу не было понятно: про виртуальные члены стек и куча понятны оч приблизительно (разные варианты оперативной памяти) 
Комментарии: Хотелось бы (видимо будет дальше) чуть больше разъяснений про области практического применения структур 
8 Пиксели для классов 00:14:44 60 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 01 мин. [Показать отчёт]
Научился: расширил практику использования структур, научился удалять повторный код (а значит и необходимость его редактировать если будут изменения) из перегружаемого конструктора с помощью конструкции : this, Все ошибки заметил сразу, до их исправления в уроке.  
Сложности: Все доступно 
Комментарии: Отличный приемчик с resolve остался для меня недоступным (видимо в силу comunity версии Visual studio) 
9 Расстояние между пикселями 00:12:12 60 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 50 мин. [Показать отчёт]
Научился: Добавлять методы в структуру, и вызывать возвращаемые ими значения в качестве параметра перегруженного конструктора (вроде точно описал происходившее?). еще потренили this, перегрузки конструктора 
Сложности: Чуть труднее было разобраться в методе в структуре (что откуда берется, значения), но потом все прояснилось. 
Комментарии: все вери гуд 
10 Цветные карандаши 00:14:54 58 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 30 мин. [Показать отчёт]
Научился: Искать ошибки, более самостоятельной работе, пошире использовать цвета, и вообще посвободнее себя чувствовать со всеми пройденными ранее темами 
Сложности: Раньше смотрел видео и делал задание параллельно, теперь сначала видео, потом все выключаю и самостоятельно делаю задание. 
Комментарии: Все норм 
11 Рисуем Снеговика 00:14:40 57 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 3 час. 01 мин. [Показать отчёт]
Научился: Быстро накидал снеговика в Paint, забил координаты точек, все бодро с нуля закодировал, сразу с цветами. что и как называется (а также перегрузки) в классе graphics посмотрел в определении класса. Были и проблемы. 
Сложности: часа полтора, не меньше, ухлопал на то чтобы все это начало отображаться на форме, так как упустил, что надо свойству pictureBox.Image - присвоить наш bitmap с картинками. Пересмотрел все, в итоге Snagit наделал скриншотов и стал уже построчно сравнивать (и свойства pictureBox тоже) и нашел где проблема. 
Комментарии: Все супер 
12 Второй Снеговик 00:09:46 57 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 35 мин. [Показать отчёт]
Научился: все элементарно, прикольные массовые замены в notepad++ 
Сложности: все ок 
Комментарии: Надо все касающееся снеговика (а не только пиксели) поместить в структуру, и задать некоторые зависимости (например руки начинаются только от тела), а остальные точки задать как ф-цию от какой-то одной точки (2-х если хотим не только двигать статичную картинку, 3-х если полное 3d) 
13 Богатое наследство 00:12:53 56 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 30 мин. [Показать отчёт]
Научился: Научился наследовать классы (и соотв правильно оформлять конструкторы класса наследника инициализирующие конструктор родительского класса) 
Сложности: Проблем не было 
Комментарии: Так как 2 урока назад написал снеговика с нуля (а пользовать контроль версий я поленился), то у меня не было готовых классов родителей. В итоге я сделал новые родительские классы, и вынес туда все кроме цветного карандаша, далее унаследовал их и добавил карандаш. 
14 Фигуральный базовый класс 00:10:56 55 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 25 мин. [Показать отчёт]
Научился: Открыл для себя, что можно создать массив с элементами соотв базовому классу, а по факту поместить туда наследников, что конечно гиперУдобно. 
Сложности: все доступно 
Комментарии: в метод Draw(Shape shape) предлагаю поместить проверку какого наследника по факту передали и вызывать соотв Draw 
15 Рисователь снеговиков 00:11:51 55 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 25 мин. [Показать отчёт]
Научился: Дальнейшему структурированию проекта 
Сложности: все норм 
Комментарии: Отдельная точка Position нам нужна, для создания дополнительного уровня абстракции (чтобы в дальнейшем оперировать уже только ею) 
16 Переезд метода Draw 00:11:54 55 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Инкапсулировать метод в класс и потом пользоваться им. Улаживать конфликты, когда класс потомок содержит метод, а класс родитель нет, при этом оперируем с классом родителем. 
Сложности: Чисто без заглядывания в видео сам реализовать не смог, но в итоге разобрался полностью с вопросом. 
Комментарии: Все здорово, хочется продолжать. 
17 Переезд graph в базовый класс 00:13:10 55 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 2 час. 00 мин. [Показать отчёт]
Научился: Инкапсулировал метод Draw в классы фигур, убрал общие для классов фигур поля в родительский класс Shape, научился рисовать Pen из родительского класса или переопределять его для цветных классов. Проникся удобством полиморфизма, когда можно просто в цикл засунуть всю инициализацию (и очевидно любую другую обработку) не заморачиваясь с конкретными типами. 
Сложности: Все норм 
Комментарии: все доступно 
18 Мощь полиморфизма 00:09:01 53 чел. ★ 5 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 30 мин. [Показать отчёт]
Научился: потренил полиморфизм, освоил конструкции virtual overraid, посмотрел abstract, оценил удобство вызова метода без вникания в суть того, как конкретно для каждого типа он работает 
Сложности: все норм 
Комментарии: все норм 
19 Спрайт для Снеговика 00:12:28 53 чел. ★ 5 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 15 мин. [Показать отчёт]
Научился: Полиморфизм во всей красе, перегружаю методы, сделали удобный класс Sprite куда начали инкапсулировать многое относящееся к снеговикам, потихоньку разгружая класс формы. 
Сложности: Поковырялся, пока не сообразил, что сначала надо установить Graph объекту Shape а только потом его добавить в коллекцию, а не наоборот. 
Комментарии: Не очень ясно, зачем нам при создании нового спрайта SnowMan2 = new Sprite(); задавать graph SnowMan2.SetGraph(graph); ведь фактически мы отдельно задаем один и тот же graph для каждого shape отдельно (в методе AddShape и этого должно быть вполне достаточно для рисования (однако при попытке пропустить SnowMan2.SetGraph(graph)) программа перестает компилироваться 
20 Перемещение круга 00:11:42 53 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 45 мин. [Показать отчёт]
Научился: свободно разруливаю в получившейся программе (пишу слегка по своему, соотв все проблемы приходится решать самому, в лоб из видео не спишешь, но структура повторена, полиморфизм, наследование и инкапсуляция применены). Отдельный кружок нарисовал, кнопку сделал, кружок перемещается. 
Сложности: все ок 
Комментарии: все ок 
21 Перемещение других фигур 00:08:37 53 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Ввел поправку для начальных координат всего зоопарка фигур Position, написал метод Demo(), получившуюся произвольную композицию фигур двигаю по нажатию кнопки 
Сложности: все норм 
Комментарии: все ок 
22 Перемещение Снеговиков 00:10:48 52 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 1 час. 00 мин. [Показать отчёт]
Научился: Прокачал дополнительно полиморфизм. 
Сложности: все норм 
Комментарии: все норм 
23 ПОЛУФИНАЛЬНЫЙ УРОК. 46 чел. ★ 5 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 10 мин. [Показать отчёт]
Научился: Сергей, курс ООП понравился, могу теперь наследовать, инкапсулировать и полиморфизировать. 
Сложности: все ок 
Комментарии: все ок 
24 Интерфейс. Зачем он нужен. 00:09:33 44 чел. ★ 4.9 Done
  Отчёт отправил: 7319. Alpinist573 Решено за 15 мин. [Показать отчёт]
Научился: Интерфейс - это набор и сигнатура (если я правильно применяю термин) методов (то есть, что возвращают, если возвращают вообще хоть что-нибудь, какие-нибудь там параметры методов и тд), без собственно описания этих методов, оформленных вместе так, что их можно унаследовать. Видимо конкретная реализация этих методов возможна у наследников. 
Сложности: пока все доступно 
Комментарии: все ок 
25 Интерфейс. Правила игры. 00:12:23 43 чел. ★ 5 $
26 Интерфейс. Алгоритм игры. 00:07:48 43 чел. ★ 5 $
27 Интерфейс. Создаём кружок. 00:08:36 42 чел. ★ 5 $
28 Интерфейс. Площадка для игры. 00:11:58 40 чел. ★ 5 $
29 Интерфейс. Кружок на площадке. 00:11:49 40 чел. ★ 5 $
30 Интерфейс. Запускаем кружки на площадку! 00:11:49 40 чел. ★ 5 $
31 Интерфейс. Кружок хочет играть. 00:09:42 40 чел. ★ 5 $
32 Интерфейс. Кружок готов к игре! 00:20:47 39 чел. ★ 5 $
33 Интерфейс. Кружочки гоняются друг за другом. 00:11:53 38 чел. ★ 5 $
34 Интерфейс. Изменяем правила игры. 00:10:22 37 чел. ★ 5 $
35 Интерфейс. Создаём новую игру. 00:12:31 36 чел. ★ 5 $
36 Интерфейс. ФИНАЛЬНЫЙ УРОК. 00:13:05 33 чел. ★ 5 $
37 Интерфейс. VIP. Квадратики тоже хотят играть. 00:16:23 34 чел. ★ 5 $
38 Интерфейс. VIP. Пересечение прямоугольников. 00:09:47 32 чел. ★ 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#.

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