Неоднократно на собеседовании я сталкивался с тем, что студент испытывает трудности с пониманием того, какие проблемы решает ООП и его принципы в частности. А ведь понимание проблематики это важнейший фактор правильного использования любого инструмента. Это сподвигло меня посвятить принципам ООП один из дней в рамках серии наших встреч InterLink Meetup.
На встрече мы прошлись по истории возникновения объектно-ориентированных языков программирования. Simula из 60х и Smalltalk из 70х передавали нам привет 🙂 Мы на простых (я очень на это надеюсь) примерах разобрали, что ООП призвано помочь программистам в моделировании внешнего мира в программном коде. Что интерфейсы, это наборы допустимых операций над объектом, а классы – своего рода фабрики для этих объектов, позволяющие создавать одинаковые по поведению и структуре экземпляры. Те из вас, кто работал с JavaScript до версии EC6 знают, что в нем нет явно выделенных инструкций для создание пользовательских классов, при этом вы можете создавать объекты с одинаковым интерфейсом с помощью прототипов.
Также мы разобрали, что абстракция – это выделение значимых и игнорирование не важных для конкретной задачи свойств объекта; инкапсуляция – это сокрытие деталей реализации объекта и моделирование правил взаимодействие с ним в реальном мире; наследование – это временами не самый лучший способ устранения дублирования; полиморфизм – это возможность предоставить вариативность поведения прозрачным для клиента образом, которую не стоит путать с перегрузкой функции через разные аргументы.
Мы подчеркнули, что самый значимый принцип в ООП – это полиморфизм, так как он позволяет решить наиболее опасные и сложные проблемы, с которыми сталкивались программисты до появления объектно-ориентированной парадигмы.
В практической части мы проектировали систему, которая использовала бы все принципы ООП. Самыми удачными были примеры модели игрового мира. Спасибо всем, кто присоединился к нам и принимал активное участие. С вами было весело!
Постигайте мастерство владения доступными вам инструментами и да прибудет с вами сила! 😉
Post A Reply