# | Название видеоурока | Видео / Тесты | Решило | Рейтинг | Доступ |
---|---|---|---|---|---|
1 | Инкапсуляция мечты |
2 теста |
|||
Курс по теории Объектно-ориентированного программирования. С нуля создаётся проект по рисованию различных геометрических фигур, которые потом объединяются в спрайты, взаимодействуют друг с другом. Во время создания проекта постоянно применяется рефакторинг кода, при этом демонстрируются приёмы Объектно-ориентированного программирования. Во второй части курса мы проработаем понятие Интерфейса. Выдержка из отчёта Ларисы по завершению курса. 1) Получила представление о методах ООП - инкапсуляции, полиморфизме и наследовании. Эти три "кита" позволяют изменять и усложнять программы, добавляя в них новые возможности; 2) Научилась рисовать простые геометрические фигуры; 3) Создавать базовые и производные классы; 4) Создавать структуры и работать с пикселями; 5) Создавать фигуры из массива простых фигур в том числе и в цвете; 6) Передвигать простую фигуру; 7) Создавать класс объектов Sprite, являющийся производным от базового абстрактого класса Shape, а в нем список List, который содержит произвольное число фигур и функцию, которая добавляет фигуру, а также метод Move, который двигает её; 8) Освоила BreakPoint, который дает возможность проследить переходы в классе и связи между классами; 9) Познакомилась с абстрактыми и виртуальными методами в абстрактном базовом классе и методами override в производных классах. Совокупность этмх методов позволяет передвигать сложные фигуры как целое. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Вспомнил, что такое инкапсуляция. Своими словами: инкапсуляция – это создание объекта, внутреннее устройство которого скрыто от пользователей и который доступен пользователю через определенный разработчиком интерфейс. Пользователю доступны лишь определенные свойства и методы объекта. Пользователь может создавать различные экземпляры объекта с указанными им свойствами и методами. Сложности: Было несложно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
2 | Урок рисования |
2 теста |
|||
На этом уроке мы нарисуем домик из двух линий и прямоугольника.
Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился рисовать фигуры и линии на форме. Сложности: Было несложно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
3 | Первый класс |
2 теста |
|||
На этом уроке мы создадим первый класс - Line. И перепишем программу, чтобы она работала точно так же. Отчёт отправил: 7645. Александр Львович Выполнено за 20 мин. [Показать отчёт] Научился: Научился создавать класс, писать программу его конструктора и использовать экземпляры класса. Сложности: Было несложно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
4 | Второй класс |
|
|||
На этом уроке мы создадим второй вспомогательный класс - Box. Порассуждаем на тему "наследования" и переделаем программу. Отчёт отправил: 7645. Александр Львович Выполнено за 20 мин. [Показать отчёт] Научился: Научился создавать класс для описания прямоугольника, писать программу его конструктора и использовать экземпляры класса. Сложности: Было несложно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
5 | Круглый класс |
|
|||
Создадим класс для задания окружности - Circle. Дополним окружность в центре домика. Отчёт отправил: 7645. Александр Львович Выполнено за 20 мин. [Показать отчёт] Научился: Научился создавать класс для описания круга, вписанного в квадрат, писать программу его конструктора и использовать экземпляры класса, рисовать эллипс. Сложности: Было несложно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
6 | Структура пикселя |
|
|||
Создадим структуру для задания координат пикселя и перепишем классы и программу с её использованием. Почитать об отличии класса от структуры: http://www.cyberforum.ru/csharp-beginners/thread442631.html Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать структуру для описания точки и изменять ранее созданные классы для использования указанной структуры. Сложности: Определение координат точек для рисования фигур. Комментарии: Большое спасибо! Замечаний нет. |
|||||
7 | Структура vs Класс |
1 тест |
|||
На этом дополнительном уроке наглядно демонстрируются главные отличия между struct и class в языке C#.
Отчёт отправил: 7645. Александр Львович Выполнено за 2 час. 00 мин. [Показать отчёт] Научился: Узнал, чем отличается структура от класса и что хранится в памяти и в куче, как открыть и использовать окно Locals. Также узнал, что DateTime – это структура, наследующая интерфейсы. Сложности: Запоминается это плохо. Читал про это много раз, затем все снова забывается, потому что это знание почти никогда не используется на практике. Также было трудно понять, почему в структуре не сохраняются изменения. Комментарии: Большое спасибо! Замечаний нет. |
|||||
8 | Пиксели для классов |
2 теста |
|||
На этом уроке мы продолжим внедрение структуры Pixel в наши классы. Будем её использовать для хранения координат внутри класса. Также избавимся от повторяемого кода внутри конструкторов. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 30 мин. [Показать отчёт] Научился: Научился работать со структурой Pixel и преобразовывать программу для работы с этой структурой. Сложности: Испытывал трудности при описании конcтрyктoров с помощью ключевого слова this () Комментарии: Большое спасибо! Замечаний нет. |
|||||
9 | Расстояние между пикселями |
2 теста |
|||
Как вычислить расстояние между двумя пикселями? Есть специальная формула, которую можно разместить в структуру Pixel. Теперь мы сможем создать ещё один конструктор окружности по центру и любой точке на окружности. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать объект Circle по координате центра и любой точке на окружности, а также преобразовывать программу для работы с указанным объектом. Еще раз повторил, чем структура отличается от класса. Сложности: По-прежнему испытывал трудности при описании конструкторов с помощью ключевого слова this () Комментарии: Большое спасибо! Замечаний нет. |
|||||
10 | Цветные карандаши |
1 тест |
|||
Возьмём цветные карандаши и будем раскрашивать наш домик. Создаём новые классы для цветны линий, окружностей и прямоугольников. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился создавать объекты различного цвета по технологии ООП, а также преобразовывать программу для работы с указанными объектами. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
11 | Рисуем Снеговика |
|
|||
На этом уроке мы создадим ... Снеговика (спрайт) — более сложную фигуру, которая состоит из других фигур. В дальнейшем мы будем работать с такими спрайтами, перемещать их, поворачивать, масштабировать, а пока ... мы просто нарисуем Снеговика. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать спрайты, состоящие из нескольких объектов. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
12 | Второй Снеговик |
1 тест |
|||
На этом уроке мы создадим второй спрайт - ещё одного снеговика, но разноцветного. Вопрос для перехода к следующему уроку: Что нужно изменить в этой программе, чтобы мы могли а) перемещать снеговика; б) поворачивать снеговика; в) изменять размер снеговика. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать второй спрайт, состоящий из нескольких объектов. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. Чтобы перемещать снеговика, нужно менять переменную delta A = new Pixel(219 + delta1, 63 + delta2); Чтобы поворачивать снеговика, нужно задать центр поворота и каким-то образом определять расстояния от цента до каждой точки. Чтобы изменять размер снеговика, нужно добавить коэффициент A = new Pixel(219 * gamma, 63 * gamma); |
|||||
13 | Богатое наследство |
2 теста |
|||
Наконец-таки мы возьмёмся за наследование. Убираем повторяющийся код из цветных классов. Осмысливаем значение термина «наследование». Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать дочерний класс с учетом наследования от родительского класса. Наследование, своими словами, - это возможность использования свойств и методов родительского класса в дочернем классе. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
14 | Фигуральный базовый класс |
|
|||
Очень хочется все элементы снеговика поместить в один массив. Сейчас это сделать нельзя - придётся делать три массива - для кругов, для линий, для боксиков... Решение гениальное - создаём базовый класс фигуры - Shape, создаём массив фигур, и все фигуры помещаем в этот массив! После размещения фигур в массив можно видеть, что каждая фигура в нём хранится не как фигура, а под своим типом. А все под одной крышей они могут находится потому что все они - фигуры, так как унаследованы от Shape. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился создавать базовый класс для всех фигур. Сложности: Написать функцию, которая будет рисовать картинки для базового класса. Долго думал. Получилось так: private void Draw(Shape shape) // функция для рисования фигуры { if (shape.GetType().ToString() == "Geometry.Circle") Draw((Circle)shape); if (shape.GetType().ToString() == "Geometry.Box") Draw((Box)shape); if (shape.GetType().ToString() == "Geometry.Line") Draw((Line)shape); if (shape.GetType().ToString() == "Geometry.ColorCircle") Draw((ColorCircle)shape); if (shape.GetType().ToString() == "Geometry.ColorBox") Draw((ColorBox)shape); if (shape.GetType().ToString() == "Geometry.ColorLine") Draw((ColorLine)shape); } Комментарии: Большое спасибо! Замечаний нет. |
|||||
15 | Приведение с мотором |
1 тест |
|||
На этом уроке мы реализуем метод Draw (Shape shape) через серию условных операторов. А также создадим функцию для рисования целевого спрайта (снеговика) - Draw (Shape [] shapes). Результат работы программы не изменяется, а вот содержимое кода всё более и более облагораживается. Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился работать с экземплярами базового класса и выводить их на экран. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. Переменная Shape.position создается для указания точки центра, от которого рассчитываются параметры группы фигур (спрайта) (думаю, что эта точка будет особенно нужна для моделирования поворота спрайта). |
|||||
16 | Переезд метода Draw |
|
|||
На этом уроке мы начнём переносить функции для рисования фигур из основной программы в классы.
Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился пониманию полиморфизма, также научился совмещать данные и методы в одном классе. Познакомился с вкладкой Class View. Сложности: Нетрудно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
17 | Переезд graph в базовый класс |
1 тест |
|||
На этом уроке мы напишем функции для рисования фигур во всех остальных классах.
Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Научился переносить данные и методы, связанные с объектом, в один класс. Сложности: Плохо понятно, почему можно не использовать приведение типов из-за того, что все типы описаны в базовом классе. Также плохо понятно, как теперь настраивается цвет у цветных фигур. Комментарии: Не удается передать цвет второму снеговику! Он заменяется на цвет по умолчанию при инициализации фигуры Shape. Подскажите, пожалуйста, в чем моя ошибка? |
|||||
18 | Мощь полиморфизма |
2 теста |
|||
На этом уроке мы создадим в базовом классе функцию Draw(), и при её вызове через механизм полиморфизма будет запускаться созвучный метод нужного класса. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился писать метод, реализующий полиморфизм, использовать переопределенные функции с ключевыми словами virtual и override. Сложности: Понять виртуальные и абстрактные классы. Комментарии: Большое спасибо! Замечаний нет. Очень понравилось, но мозги начинают закипать… :) |
|||||
19 | Спрайт для Снеговика |
1 тест |
|||
На этом уроке мы создадим новый класс - Sprite, в котором будет хранится список всех фигур, из которых строится графический объект, чтобы в основной программе мы могли оперировать сразу спрайтами, а не их составными элементами.
Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился создавать новый класс для спрайта. Сложности: Плохо понятно, зачем мы все это делаем. Была программа простая и понятная, а сейчас она становится все более запутанной и сложной. Комментарии: Большое спасибо! Плохо понятно, зачем мы все это делаем. Была программа простая и понятная, а сейчас она становится все более запутанной и сложной. Кроме того, могут накапливаться мелкие ошибки, которые далее сильно осложнят выполнение курса. Хорошо бы, чтобы ИМЕННО ДЛЯ ДАННОГО КУРСА после прохождения урока открывался эталонный код программы. |
|||||
20 | Перемещение круга |
1 тест |
|||
На этом уроке мы начнём реализовывать идею перемещения спрайтов. Начнём, как обычно, с простого. Научимся перемещать один кружок. Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился перемещать объект. Сложности: Пока все относительно понятно. Комментарии: Большое спасибо! Замечаний нет. |
|||||
21 | Перемещение других фигур |
2 теста |
|||
На этом уроке мы переделаем метод Draw() для остальных фигур - Line и Box(). Наша программа теперь по нажатию кнопочки будет перемещать сразу три фигурки. Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился перемещать объекты. Сложности: Непонятно как определяются относительные координаты крайних точек фигур. Комментарии: Большое спасибо! Замечаний нет. |
|||||
22 | Перемещение Снеговиков |
1 тест |
|||
На этом уроке мы научим перемещаться целых снеговиков. Для этого нам не нужно будет менять метод Draw(), мы воспользуемся полиморфизмом! Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился перемещать спрайты. Сложности: Пока все относительно понятно. Комментарии: Большое спасибо! Уже стало видно преимущество объектно-ориентированного подхода. Перемещение второго спрайта производится изменением всего трех операторов. |
|||||
23 | ПОЛУФИНАЛЬНЫЙ УРОК. |
без видео |
|||
На этом первая часть видеокурса "Теория ООП" закончилась. Пожалуйста, напиши отзыв об этом курсе, что тебе понравилось, что узнал нового, что можно было бы сделать лучше, оправдал ли курс твои ожидания. Приложи своё фото и напиши своё имя-фамилию. (видео в этом уроке нет) Отчёт отправил: 7645. Александр Львович Выполнено за 20 мин. [Показать отчёт] Научился: Писать отзыв Сложности: Не очень трудно. Комментарии: Большое спасибо. Замечаний нет. Во время изучения курса "Теория ООП" в Школе программиста я узнал много нового об объектно-ориентированном программировании. Вначале мне было не совсем понятно, зачем нужно было "городить" такие сложности (большое количество классов, в каждом классе свои (часто одноименные и переопределенные) методы, многочисленные наследования и т.д.). Однако на последнем занятии мне уже стало видно преимущество объектно-ориентированного подхода. Перемещение спрайта производится теперь изменением всего нескольких операторов. Надеюсь, что впереди меня ждут новые открытия. Большое спасибо Евгению Витольдовичу за этот интересный и познавательный курс. Мое имя и фотография имеются в моем профиле на портале Школы. Также необходимо отметить следующее: Особенностью этого курса является использование одного и того же кода и его постепенное изменение. Поэтому в процессе прохождения курса могут накапливаться мелкие ошибки, которые далее могут сильно осложнить работу с программой. В целях дальнейшего развития данного курса предлагаю чтобы ИМЕННО ДЛЯ ДАННОГО КУРСА после прохождения урока открывался эталонный код программы для сверки базового кода для следующих занятий. Александр Львович |
|||||
24 | Интерфейс. Зачем он нужен. |
1 тест |
|||
На этом уроке я объясню своими словами, что такое интерфейс. Мы поговорим об игре "Голя" или "Сифа" или "Вода", о том, кто в неё может играть, и что делать тем, кто не знает правила игры. В конце урока мы создадим наш интерфейс. Правила игры, для тех, кто не знает: Выбирается ведущий. Его цель - догнать и дотронуться до кого-либо из участников. Цель остальных - не допустить этого. Когда ведущий дотронется до кого-либо (заголит) - ведущим становится новый участник. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Познакомился с понятием "интерфейс". Интерфейс – это программное средство, обеспечивающее взаимодействие между различными элементами и объектами системы. Например, интерфейс может обеспечивать взаимодействие между отдельными классами в программе или между человеком и программой. Еще бывают интерфейсы для взаимодействия различных элементов компьютера. Например, сокет (разъём) – это тоже вид интерфейса. Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
25 | Интерфейс. Правила игры. |
1 тест |
|||
На этом уроке мы поговорим о правилах игры в догоняшки. На прошлом уроке мы выясняли, что должны уметь делать игроки. На этом уроке мы начнём писать класс, в котором опишем конкретные правила нашей игры. Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился создавать класс с разработанными предварительно полями и методами. Самостоятельно методы FindNewLeader() и SetNewLeader() пока не напишу. Первый метод, вероятно, должен проверять все объекты. Если какой-то объект пойман (Поймал(gamer) == true), то этот объект становится голей (SetNewLeader(gamer)). Метод SetNewLeader() освобождает прежнего голю и назначает нового. Сложности: Пока все относительно понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
26 | Интерфейс. Алгоритм игры. |
|
|||
На этом уроке мы допишем класс GameCatch. Напишем реализацию методов FindNewLeader() и SetNewLeader(). Ваша задача - подумать и написать, что нужно ещё сделать, чтобы можно было начать играть в эту игру. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать методы для преобразования объектов. Чтoбы нaчaть игру, нужно создать несколько экземпляров игроков и назначить голю. Сложности: Пока все относительно понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
27 | Интерфейс. Создаём кружок. |
|
|||
На этом уроке мы создадим объект для нашей игры - Кружок! У кружочка есть координаты центра, радиус и цвет. Цель урока - создать класс Circle.cs Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать класс объекта. Дальше нужно создать несколько экземпляров игроков и назначить голю. Сложности: Пока все относительно понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
28 | Интерфейс. Площадка для игры. |
1 тест |
|||
На этом уроке мы начнём создавать класс Arena, который создаст поле для игры и реализует методы для отображения объектов на экране. Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился создавать площадку для игры. Класс Arena нужен для формирования площадки. Сложности: Есть трудности в понимании операторов конструктора класса Arena. Комментарии: Большое спасибо! Замечаний нет |
|||||
29 | Интерфейс. Кружок на площадке. |
1 тест |
|||
На этом уроке мы допишем класс Arena, реализуем методы Show(Circle), Refresh(), static NewCircle(). Всё готово к созданию кода для отображения кружка из класса Form1.cs! Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать методы Show, Refresh и NewCircle класса Arena. Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
30 | Интерфейс. Запускаем кружки на площадку! |
3 теста |
|||
На этом уроке мы настроим нашу форму, напишем несколько волшебных строчек, и ... программа заработает!!! У нас будет много-много кружков на экране 8-о Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился создавать запускать экземпляры объектов. Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
31 | Интерфейс. Кружок хочет играть. |
2 теста |
|||
На этом уроке мы унаследуем кружок от интерфейса Игрок. Теперь для запуска программы нам придётся реализовать методы из его интерфейса. В этом уроке мы реализуем методы Голя() и НеГоля(). Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился использовать наследование интерфейса и создавать методы, унаследованные у интерфейса. Метод Беги() может использовать случайное смещение объекта (кружка) по осям X и Y. Метод Поймал(obj) сравнивает координаты Голи и остальных объектов. Если Голя и какой-нибудь другой объект пересекаются, то метод Поймал(obj) возвращает значение true (в противном случае – false). Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
32 | Интерфейс. Кружок готов к игре! |
1 тест |
|||
На этом уроке мы допишем методы Игрока в классе Circle. Реализуем метод Беги() и Поймал(), и даже исправим недочёты в описании интерфейса (!!). В конце урока я ответил на многочисленные вопросы участников. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился писать методы Беги() и Поймал(obj). Для запуска игры нужно задать изменения координат (сейчас они у нас равны 0). Сложности: Не совсем понятен параметр this в методе Поймал(obj). Комментарии: Большое спасибо! Замечаний нет |
|||||
33 | Интерфейс. Кружочки гоняются друг за другом. |
1 тест |
|||
На этом уроке мы добавим в форму класс GameCatch, Разместим таймер и наконец-таки запустим нашу игру - Шарики начнут гоняться друг за другом! Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 00 мин. [Показать отчёт] Научился: Научился воспроизводить движение объектов по таймеру. Сложности: Не очень понятен механизм перерисовки объектов в таймере. Комментарии: Большое спасибо! Уже заработало! Можно насладиться результатом. Недoчeт c переголением, мне кажется, можно исправить, используя задержку. |
|||||
34 | Интерфейс. Изменяем правила игры. |
1 тест |
|||
На этом уроке мы добавим в правила игры задержку после получения Голи. Ведущий будет считать до 10, и только потом сможет голить других. Твоя задача - придумать новую игру, в которую смогут играть Игроки, то есть объекты, которые умеют делать то, что описано в интерфейсе Игрок. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился реализовывать задержку объекта. Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет Новая игра - добавить управление лидирующим шариком, чтобы он избегал столкновения. |
|||||
35 | Интерфейс. Создаём новую игру. |
|
|||
На этом уроке мы начнём делать новую игру - Вирус. Смысл игры подробно рассказан на видео. Цель урока - создать класс GameVirus и реализовать методы GameViurs(), AddGamer(), Step(), RunAll(). Также придумать и написать словами алгоритм методов SetNewVirus(Игрок) и FindNewVirus(). Отчёт отправил: 7645. Александр Львович Выполнено за 40 мин. [Показать отчёт] Научился: Научился изменять правила жизнедеятельности объекта и писать новые методы для реализации этих правил. SetNewVirus(Игрoк) – нового игрока добавляем в список virused. FindNewVirus() – проверяем всех игроков на вступление в контакт с "зараженным" игроком. Сложности: Пока все понятно. Комментарии: Большое спасибо! Замечаний нет |
|||||
36 | Интерфейс. ФИНАЛЬНЫЙ УРОК. |
|
|||
На этом уроке мы допишем последние две функции и надолго залипнем в экран, наблюдая за новой игрой для наших кружков, как вирусная эстафета может быстро передаваться, особенно, когда игроков очень много. В комментариях написать свой отзыв об этой серии уроков. Следующие уроки не обязательны для выполнения. Я предупредил. Какой курс ты будешь проходить следующим? Отчёт отправил: 7645. Александр Львович Выполнено за 50 мин. [Показать отчёт] Научился: Научился писать методы SetNewVirus(Игрoк) и FindNewVirus() и запускать игру по новым правилам. Сложности: Пока все было понятно. Комментарии: Большое спасибо! Отзыв: Курс «Теория объектно-ориентированного программирования на практике» в Школе программиста представлял для меня большой интерес. Курс состоит из двух основных частей. В первой части данного курса был очень подробно рассмотрен процесс создания и изменения объектов без использования и с использованием ООП. Преобразование проекта первого типа во второй было весьма непростым, но в результате преобразования работа с различными объектами данного типа (их создание и изменение) значительно облегчилась. Во второй части была не менее подробно рассмотрена работа с интерфейсом и было показано, как можно использовать объект типа Интерфейс для практической реализации объектно-ориентированного подхода. Как всегда, особая благодарность руководителю проекта Школа программирования Евгению Витольдовичу Волосатову, который подобрал такие интересные задачи и все подробно объясняет. Некоторые сложные для меня вопросы программирования также приходится изучать дополнительно – с помощью интернета и специальной литературы. Мое имя и фотография имеются в моем профиле на портале Школы. В целях дальнейшего развития данного курса предлагаю показать, как можно было бы написать программу работы со снеговиками с нуля, сразу с использованием ООП. |
|||||
37 | Интерфейс. VIP. Квадратики тоже хотят играть. |
|
|||
На этом уроке мы создадим новый класс Box. Квадратики тоже хотят играть в эту игру, и просят их научить. Пока они ещё не умеют ловить, но уже смогут отображаться и передвигаться. Полезные ссылки для написания функции Поймал: http://xdan.ru/how-to-check-intersect-two-rectangles.html http://stackoverflow.com/questions/306316/determine-if-two-rectangles-overlap-each-other Отчёт отправил: 7645. Александр Львович Выполнено за 35 мин. [Показать отчёт] Научился: Научился применять правила жизнедеятельности объекта для объектов другого типа (прямоугольников). Сложности: Пока все понятно. Комментарии: Большое спасибо! Простота применения правил для объектов другого типа впечатляет! |
|||||
38 | Интерфейс. VIP. Пересечение прямоугольников. |
|
|||
На этом уроке мы допишем метод Box.Поймал() и запустим игру с квадратиками. Потом попробуем подружить квадратики с кружками, увидим, что это не так просто, да собственно и не нужно. Но возможно. Отчёт отправил: 7645. Александр Львович Выполнено за 30 мин. [Показать отчёт] Научился: Научился проверять пересечение объектов другого типа (прямоугольников). Сложности: Не понял смысл выражения Cross(this.box, ((Box)that).box). Не понял, что есть this, а что есть that. Комментарии: Большое спасибо! Замечаний нет |
|||||
39 | Интерфейс. VIP. Тяжёлая дружба кругов и квадратов. |
|
|||
На этом уроке мы создалим "универсальный" класс Crosser, который сможет проверять на столкновение "любых" двух Игроков. Конечно не любых, а только двух наших Box и Circle. Это яркий способ, чего стоит избегать в программах. Потому что тут не добавляется универсальности, т.к. при добавлении новых объектов придётся дописывать кучу новых функций на сравнение. Самостоятельное задание - записать видеообзор своего проекта и рассказать, что такое Interface. Отчёт отправил: 7645. Александр Львович Выполнено за 1 час. 20 мин. [Показать отчёт] Научился: Научился писать отдельный модуль для сравнения объектов двух типов. Понял, что очень тяжело программировать сравнение объектов разных типов. Сложности: Пока все понятно. Комментарии: Большое спасибо! Все прекрасно работает! Видеообзор: https://youtu.be/tiZQKFwkUEs |
|||||
Итого: 39 видеоуроков |
7 час. 40 мин. 36 тестов |
83 чел. | |||
Финалисты: lomik, Роман, Максим Базуев, Neverwinter 2, Владимир, Никита, Олюшка, Валера Луцевич, Anton Sozykin, Permitin Alexey, Артём, Максим Лапшинов, Frank, Archi, Александр Львович, Олег Михайлович, Дмитрий, Новопашин Владимир, Евгений, Сергей Соколов, Александр Б., Максим Саратов, Алексей В., Александр, Rita, Станислав, Алексей Хонин, Ludmila, Yefim, Сергей Зулкарнаев, Сергей Аникин, Константин, Tekashnik, Артем Посунько, Андрей Козлов, kalobyte, Sergio, Алексей Малышев, Александр, Сергей Стефаненко, Николай Денисов, Анатолий, Денис, Алексей|BrisK|Кривицкий, Скозложоп, chokayes, Иван Воронин, Андрей Шевченко, Chip, Rise, Слава, Саша Авербух, Александр, ser2018, Дмитрий, Виктор, Денис, Oleksandr, superGrover, Александр Балбашов, vip, Слава, Sergey Potapov, Den Andreevich, Dmitry Sinitsin, Никита, Айдар, Кирилл, Max, AlliZzeN, no name, Дмитрий, Владимир, ES35, Anatoli, Виталий, Татьяна, Vdonsk, MaxB, Булат, Tim, Tom, Антон . |