КУРС
DATA SCIENCE ACADEMY
Научитесь использовать инструменты анализа данных, включая языки программирования и средства визуализации.Представьте, что вы общаетесь с двумя людьми, которые рассказывают одну и ту же историю, но по-разному. Первый излагает факты: вчера я помогал Васе чинить мотоцикл. Второй излагает те же факты, но разбавляет их массой подробностей: вчера, еще дождь такой шел, я помогал Васе (ну помнишь Васю, он еще год назад ногу поломал, когда на лыжах катался, он тогда еще новый костюм прикупил) чинить мотоцикл (а мотоцикл ему достался от друга, который переехал в Рязань). С кем более удобно общаться – понятно сразу. И, прочитав статью, вы поймете, причем здесь абстракция в программировании.
Как и в обычной жизни, в программировании используют не только разные языки, но и способы мышления. Наиболее структурированным и понятным считается ООП – объектно-ориентированное программирование. Абстракция ООП – один из базовых принципов этого типа программирования, с ним вы и познакомитесь ниже. К двум другим относят инкапсуляцию и полиморфизм.
Основные принципы ООП просты. Метод построен вокруг объектов, которые принадлежат к определенному классу, а из этих классов образуется иерархия наследования. Это позволяет структурировать данные для их лучшей управляемости.
Благодаря ООП можно создавать программу, состоящую из отдельных частей, при этом каждую часть можно переделать, и это не повлияет на работу остальных частей или всей программы.
Абстракции данных в программировании, если говорить об ООП, это минимальное количество описаний и методов для каждого объекта – отбрасывается все лишнее, нужно оставить ключевые характеристики, которые нужны для создания объекта. И чем меньше описаний, тем абстракция лучше. При этом описанные свойства и методы не зависят от способа реализации задачи.
Особенность абстрактных классов в том, что их можно наследовать, но нельзя реализовать (создать объект), так как эти классы – базовые. Такие свойства используют для объединения нескольких классов, похожих между собой. Например, игровые и неигровые персонажи с общими свойствами и методами – они принадлежат к разным классам, но объединить их можно.
Итак, абстракция в ООП простыми словами – это структурирование информации и удаление лишних деталей. Что это дает:
Возьмем язык программирования Java, и на нем реализуем абстрактный класс, допустим, «Фигура», то есть, Shape. Он будет содержать методы и свойства для всех вариантов фигур.
У класса Shape есть два метода, реализуемых в наследниках: «Площадь», то есть getArea() и «Периметр», то есть getPerimeter().
Также класс Shape наследуют классы Circle и Rectangle – они реализуют методы для каждой созданной фигуры. Для этого создают соответствующие объекты в методе main(). Они, через метод printInfo(), выводят данные о каждой создаваемой фигуре.
Это простой пример абстракции в программировании, который отображает логичную и четкую структуру кода. То есть, первое преимущество метода. Но для оценки второго преимущества (возможность менять модули без изменения работы системы) нужно познакомиться с интерфейсом.
Интерфейсом называют способ работы с абстракциями, для которого не нужно знать, как работает объект – достаточно с ним взаимодействовать заданным способом. Вы не знаете, что происходит внутри смартфона, когда набираете номер – но вы знаете, что для соединения с абонентом нужно нажать определенную последовательность цифр. Этого достаточно.
Интерфейсы мы применяем и в жизни. Например, при вождении автомобиля водитель не задумывается над такими свойствами авто, как цвет, материал обивки салона – эти параметры есть, но никак не влияют на процесс езды. И в момент поездки они просто не имеют значения.
Интерфейс подразумевает определенные действия над объектом. При этом действия остаются прежними, даже если логика работы изменилась. Это позволяет избежать ошибок в работе программы, особенно, если ее блоки разрабатывают разные программисты.
У интерфейсов и абстрактов много схожего, но есть один важный момент: один класс может наследовать одновременно несколько интерфейсов. Но не наоборот.
Рассматриваемая концепция подразумевает несколько уровней абстракций. Рассмотрим на примере кулинарного рецепта:
Уровни абстракции в программировании важны все, но для конкретного разработчика интересен только «его» уровень, с которым он и работает. С остальными он взаимодействует при помощи интерфейсов или инкапсуляции.
Основные абстракции ООП, так или иначе, используют во всех языках программирования, но есть отличия по уровню абстракций. И если классифицировать языки по этому признаку, получим такой список:
Нельзя сказать, что наивысший уровень абстракции – лучший. Как видно из списка, распространенные языки программирования относятся к высокоуровневым, и это оправдано с точки зрения решения задач разной сложности.
Абстракты применимы в любых сферах программирования, в том числе, и для создания калькуляторов. Например, для маркетинга.
KPI – это показатель, отображающий пользу работника в его сфере. В данном случае это менеджер по работе с ключевыми клиентами. Расчет KPI основан на таким показателям:
Каждый показатель рассчитывают отдельно, по типовой формуле: (личный показатель менеджера/общий показатель)× 100%.
Эту формулу можно реализовать программно, используя ООП и абстракции.
КУРС
DATA SCIENCE ACADEMY
Научитесь использовать инструменты анализа данных, включая языки программирования и средства визуализации.