ООП в JS

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

Курс

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

PRO

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

Курс

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

PRO

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

Курс

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

PRO

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

Курс

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

PRO

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

Курс

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

PRO

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

Испытания

JS: Абстракция с помощью данных
Обработка ссылок
url.js Реализуйте абстракцию для работы с урлами. Она д...
JS: Полиморфизм
Будильник
Представьте себе будильник: Пусть у него имеются три...
JS: Введение в ООП
Построение двоичного дерева
Двоичное дерево — иерархическая структура данных, в кот...
JS: Введение в ООП
Агрегация в двоичном дереве
В данном испытании мы будем использовать двоичное дерев...
JS: Введение в ООП
Сбалансированное двоичное дерево
Особенность структуры двоичного дерева даёт хороший при...
JS: Введение в ООП
Круг
Circle.js Реализуйте и экспортируйте по умолчанию класс...
JS: Введение в ООП
Генератор случайных чисел
Random.js Реализуйте генератор случайных чисел, предста...
JS: Введение в ООП
Генератор квадратов
Square.js Реализуйте и экспортируйте по умолчанию класс...
JS: Введение в ООП
Url
Url.js В данном испытании вам предстоит реализовать кла...
JS: Введение в ООП
Поиск в двоичном дереве
Node.js Двоичное дерево поиска состоит из узлов, каждый...

Впечатления

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

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

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

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

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

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

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

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

Урок: toString()

Спасибо за задания, впервые за курс решила упражнение самостоятельно. Маленькая радость, что начинаю "въезжать" :)