Вот тут нам на помощь и приходит объектно-ориентированное программирование. Оно упрощает организацию данных и кода, делая их универсальными для разработки любых проектов. Методами в ООП называют функции для работы с объектами (что и как с этим делать, как и с чем это https://deveducation.com/ взаимодействует). Методы могут быть доступны другим классам и управлять их действиями, а могут быть действительны только внутри класса. Фабричная функция — это функция, которая принимает несколько аргументов и возвращает новый объект, состоящий из этих аргументов.
На основе базовых классов (или суперклассов) создаются производные классы. Однако по мере расширения иерархии такое наследование со временем будет невозможно поддерживать. Объекты, созданные с помощью ключевого слова new, изменяемы. Другими словами, изменения в классе повлияют на все объекты, являющиеся экземплярами этого класса, а также на дочерние классы, которые его расширяют (extends). В классовом ООП классы являются чертежами для объектов. Объекты (или экземпляры) создаются на основе классов.
У каждой из них был свой собственный класс, генерирующий уникальное поведение и данные каждого отдельного экземпляра. При использовании чего-либо (предмета или метода) — вам не обязательно знать, как он работает. Для примера возьмем кофе-машину, внутри которой довольно сложный механизм.
Это упрощает написание, отладку и поддержание программы. Анализ причин этих неудач показал недостатки процедурной парадигмы. Независимо от того, насколько хорошо реализован структурированный подход к программированию, крупные приложения становятся чрезмерно сложными. Когда приложения становятся больше, список получается громоздким. Немногие могут понять более нескольких сотен инструкций, пока они не будут сгруппированы.
Взгляд на программирование «под новым углом» (отличным от процедурного) предложили Алан Кэй и Дэн Ингаллс в языке Smalltalk. Здесь понятие класса стало основообразующей идеей для всех остальных конструкций языка (то есть класс в Смолтоке является примитивом, посредством которого описаны ооп принципи более сложные конструкции). Именно он стал первым широко распространённым объектно-ориентированным языком программирования. Субъектно-ориентированное программирование расширяет понятие объекта посредством обеспечения более унифицированного и независимого взаимодействия объектов.
Продакшн подразумевает постоянные изменения кода и его поддержку. Отсюда следует второй принцип ООП — инкапсуляция кода, который с большой вероятностью будет изменён в будущем. Например, один и тот же код не подойдёт для проверки OrderId и SSN. Их форматы могут не совпадать, и на выходе функция выдаст некорректный результат. В качестве решения можно предусмотреть в методе проверку форматов для подобных наборов чисел.
Интерфейсы и классы в ООП могут легко преобразовываться в подобие библиотек, которые можно использовать заново в новых проектах. Также ООП экономит время при поддержке и доработке приложения. Все, что ему нужно для работы, уже есть у него внутри. Если он пользуется какой-то переменной, она будет описана в теле объекта, а не снаружи в коде. Даже если внешний код перепишут, логика работы не изменится. Абстрагирование — это способ выделить набор наиболее важных атрибутов и методов и исключить незначимые.
Давайте рассмотрим несколько повседневных примеров, чтобы лучше понять это. При этом многие современные книги по ООП представляют собой огромные фолианты и не подходят для базового изучения этой темы. Базовая книга по приёмам объектно-ориентированного программирования (ООП) с примерами на языке C++. В дополнение к классам, объектно-ориентированные языки программирования также имеют подклассы.
Например, использовать для хранения объекта суперкласс, а не подкласс. Композиция позволяет изменять поведение класса прямо во время выполнения через установку его свойств. Реализуя интерфейсы, вы, таким образом, используете полиморфизм, который обеспечивает более гибкую реализацию. Где position1, position и origin – пары независимых численных величин. Создание класса, включающего в себя эти два значения, и объявление переменных его объектами создает новый тип данных. Следует помнить, что ориентация на объекты не касается подробностей работы программы.
Полное понимание этой концепции требует некоторых знаний в области программирования, поэтому здесь мы будем придерживаться основ. Полиморфизм позволяет программистам использовать методы с одним и тем же именем, но с разными объектами. У некторых языков вроде Haskell монада является встроенным типом, но в JavaScript вам придётся создавать свою реализацию. В ES6 появились Promise — монады для работы с задержкой. Иногда нам требуются данные, на получение которых требуется время. Promise дают возможность писать синхронный код, откладывая работу с данными до того момента, когда они станут доступными.
Как и стандарты художников, парадигмы со временем меняются. Раньше единственно верным было процедурное программирование. Сейчас всё зависит от задачи и умений программиста сделать просто и понятно. Возможности ООП поддерживает большинство популярных языков программирования, включая JavaScript, PHP, Python и другие.
Классическим примером этого принципа являются методы equals() и hashCode() в Java. Если нужно сравнить два объекта, это действие поручается соответствующему классу вместо клиентского. Другими словами, нужно использовать тип интерфейса для переменных, возвращаемых типов или типа аргумента метода.
Молекулярные биологи из США обнаружили сотни мутаций непосредственно в структуре белков оболочки ВИЧ, за счет…
Медики выяснили, что вещество дигоксин, которое имеется в экстракте красной наперстянки, примерно на 18% снижает…
Канадские ветеринары выяснили, что как минимум две вариации известного ученым высокопатогенного птичьего гриппа, H5N1 и…
Молекулярные биологи из США и Японии обнаружили, что один из компонентов выдержанного чесночного экстракта, аминокислота…
Американские молекулярные биологи случайно выявили в образцах крови одного добровольца сразу несколько антител, которые умеют…
Специалисты Сеченовского Университета придумали инновационную систему доставки противоопухолевых препаратов непосредственно в головной мозг пациента через…