ООП в JS

Объектно-ориентированное программирование в JavaScript.

Курс

JS: Абстракция с помощью данных

PRO

Программирование не ограничивается одними лишь вычислениями. Любая нетривиальная программа моделирует внутри себя предметную область для которой она писалась. Например, Хекслет внутри себя оперирует понятиями Курс, Проект, Ученик и другими. Они связаны между собой определенным образом и могут взаимодействовать. На профессиональном языке это называется Абстракция. В этом курсе мы познакомимся подробнее с тем, что из себя представляет абстракция, и как её строить.

Курс

JS: Введение в ООП

PRO

JS - мультипарадигменный язык программирования с поддержкой объектно-ориентированного программирования. В этом курсе начинается знакомство с основными понятиями и синтаксическими конструкциями, присущими ООП. Рассматриваются инкапсуляция и сокрытие данных. Разбираются особенности поведения this, изучаются прототипы и исключения.

Курс

JS: Объектно-ориентированный дизайн

PRO

Проектирование кода в объектно-ориентированном стиле - целая история со множеством нюансов. В этом курсе мы рассмотрим базовые принципы дизайна ОО-кода и познакомимся с популярными библиотеками, реализованными в этом стиле.

Курс

JS: Полиморфизм

PRO

Полиморфизм (подтипов) – главная отличительная черта современного ООП. Он позволяет значительно уменьшить количество условных конструкций и сделать код расширяемым. Вместе с тем, полиморфизм – большая и глубокая тема, требующая серьезной подготовки. Здесь начинаются шаблоны проектирования и принципы SOLID. Все это является неотъемлемой частью разработки на JavaScript у профессиональных разработчиков.

Курс

JS: Погружаясь в классы

PRO

Наследование – одна из самых сложных концепций в объектно-ориентированном программировании. Это не только новые синтаксические конструкции, но и другой способ структурировать код. Говоря о наследовании нужно понимать его применимость и ограничения. Уметь использовать его к месту и находить другие пути там, где оно делает код сложнее. Все это рассматривается в курсе. Дополнительно разбираются абстрактные классы, принцип подстановки Лисков, паттерн "шаблонный метод" и многое другое.

Испытания

JS: Абстракция с помощью данных
Обработка ссылок
JS: Полиморфизм
Адаптер HTTP-клиентов
JS: Полиморфизм
Дешевые авиабилеты
JS: Полиморфизм
Будильник
JS: Введение в ООП
Поиск в двоичном дереве
JS: Введение в ООП
Построение двоичного дерева
JS: Введение в ООП
Агрегация в двоичном дереве
JS: Введение в ООП
Сбалансированное двоичное дерево
JS: Введение в ООП
Круг
JS: Введение в ООП
Генератор случайных чисел
JS: Введение в ООП
Генератор квадратов
JS: Объектно-ориентированный дизайн
Пьяница
JS: Объектно-ориентированный дизайн
Ленивые коллекции
JS: Объектно-ориентированный дизайн
Диапазон дат
JS: Объектно-ориентированный дизайн
Особый объект

Впечатления

Человек, который пишет код, который убивает полиморфизм — я =]

Новый курс офигителен. Я реально его люблю. Мозг по-прежнему кипит, вижу элегантные решения учителя, до которых еще сам не всегда дохожу и ругаю себя, что не смог написать так же. Но хотя бы понимаю уже почему они элегантны. Когда только начинаешь изучать, то есть какие-то пресловутые пунктики, наподобие "короткий код" или какая-то подсмотренная и заученная техника. И видя решение учителя, даешься диву почему все хвалят этот код, когда можно было вот так — быстрее и короче... А сейчас вот прям понимаю "почему"! =)

Вспоминаю, как я мучился с прошлыми курсами... кажется полиморфизм разбирался в курсе по Прототипам. И вроде бы в старых заданиях было более подробное описание (собственно благодаря которому что-то в итоге наколдовывалось), сейчас по-настоящему понимаю что делаю. А без подробного описания вся нужная инфа легко читается из тестов. По факту тесты — это как ТЗ (техническое задание). Надеюсь, дальше будут курсы и больше практики именно по составлению тестов. Ибо правильно написанное ТЗ — это ж 80% работы в любой из профессий, будь то граф дизайн, копирайтинг или программирование =)

Команде и Кириллу еще раз огромное спасибо, что стараетесь объяснять сложное просто. Раньше казалось, что курс "Введение в программирование" простой. А теперь кажется, что новые курсы намного проще все объясняют. Хотя хз, может просто на самом деле опыт пришел =}

Спасибо за курс! Получилось лучше понять абстракции, зачем они нужны и как работают на архитектуру приложений, когда текут и что это значит. Информация в теории и упражнениях даётся очень доступно и понятно.

Урок: Прототипы

Отличный курс. Практика прототипов и конструкторов на основе функций без сахара — это очень здорово и полезно, помогает понять суть вещей.

https://ru.hexlet.io/code_reviews/351113 Почитав обсуждения думал застряну на этом задании на день, потом решил не умничать и пойти напролом, и управился за час) Это был замечательный курс!!! первые упражнения давались с большим трудом, не понимал откуда что берется и что от меня вообще требуются, на предыдущие два задания я потратил 8 и 5 часов соответственно...потихонечку стал разбираться откуда что импортируется, шестеренки закрутились, пришло понимание что нужно делать и самое главное как...Спасибо) P.S. буду упрощать свое решение, под стать учительского)

Какая же радость накрывает порой, когда решишь очередную задачку на Hexlet.