В кодировании, в чем разница между методами и функциями

Опубликовано: 2018-09-21

Терминология в кодировании

В программировании есть много разных терминов, которые используются для описания одного и того же объекта, а также есть некоторые термины, которые, кажется, относятся к одному и тому же объекту, но на самом деле это не так. Чтобы еще больше запутать. Некоторые термины используются по-разному в зависимости от того, о каком языке идет речь, или даже при переходе с одного языка на другой язык того же типа. Таким образом, некоторые термины, такие как «метод», «функция», «интерфейс» или «абстрактный класс», могут быть очень запутанными для некоторых людей, поскольку они могут означать одно в одном контексте, но совершенно другое в другом.

Обзор методов ООП

Метод — это, по сути, пошаговая процедура, которая применяется к обозначенному объекту. Методы используются только в объектно-ориентированных языках программирования, таких как C++. По сути, метод может либо изменять характеристики объекта, который передается через метод, либо метод может выполнять определенную процедуру на основе ранее существовавших характеристик объекта, проходящего через него. Иногда метод может выполняться даже через код, который не влияет ни на проходящий через него объект, ни на изменение уже существующих характеристик объекта. Но это гораздо менее распространено и не является продвинутым способом обработки методов.

Читать — Какой JavaScript-фреймворк выбрать

Функции в процедурном кодировании

С другой стороны, функция — это гораздо более общий термин, который относится к процедуре, которая принимает ряд входных данных и возвращает некоторое количество значений. Как ни странно, функция и метод звучат так, как будто они делают одно и то же или ссылаются на одну и ту же процедуру при программировании, но это не так. Функции не связаны с объектами и используются практически во всех языках высокого уровня, не являющихся объектно-ориентированными. С другой стороны, методы связаны только с объектами, и этот термин используется только при работе с объектами или когда процедура находится внутри класса. Таким образом, функции возвращают значения на основе заданных входных данных, тогда как методы либо изменяют характеристики объекта, либо возвращают значения на основе ранее существовавших характеристик объекта.

Кодирование интерфейсов и абстрактных классов

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

Подробно об интерфейсах

Интерфейс — это, по сути, база, которую вы создаете и которая учитывает все сходства между классами. Итак, скажем, вы хотите создать разные объекты, но все они животные. Итак, люди, человекообразные обезьяны и шимпанзе. Очевидно, что у этих трех животных много общего, и было бы разумно определить все эти сходства, чтобы вы могли убедиться, что все они реализованы в каждом классе. Например, у каждого есть голова, четыре конечности, рот, нос, язык и т. д.

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

Читайте — Причины, по которым Laravel — лучший PHP-фреймворк в 2018 году

Как использовать абстрактные классы

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

Абстрактные классы великолепны. Однако если есть некоторые идентичные характеристики, которые имеют одинаковые способы реализации. Но если есть и такие, которые имеют разные реализации для разных объектов. Например, если у вас есть два класса, мужчины и женщины, и вы хотите определить сходство между ними, лучше всего использовать абстрактный класс. Почему? Потому что определенные характеристики между полами идентичны и реализуются точно так же. Например, рты примерно одинакового размера и служат одной цели; глаза примерно одинакового размера и функционируют одинаково у представителей обоих полов и т. д.

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

Резюме

Надеюсь, эти объяснения не были слишком запутанными или многословными. Если вы новичок в программировании, не волнуйтесь, если вы все еще запутались. Существует множество доступных ресурсов, которые вы можете использовать для понимания основ программирования и тонких различий между некоторыми терминами.

Это очень важно отметить, если вы хотите стать профессиональным программистом. Необходимо знание концепций процедурного и объектно-ориентированного программирования (ООП). Конечно. Многие инженеры-программисты используют унифицированный язык моделей для сопоставления требований проекта или приложения с объектами и диаграммами, прежде чем приступать к программированию ООП. Существует множество онлайн-ресурсов для изучения программной инженерии. Для подростков и старшеклассников High School Technology Services предлагает разнообразные практические занятия. Для взрослых и профессионалов институт Coding Bootcamps предлагает множество базовых курсов по программированию с упором на процедурное и ООП-кодирование.

Об авторе

Мэтт Занд — программист, бизнесмен, ИТ-консультант и писатель. Он является основателем и владельцем WEG2G Group. Он также является основателем DC Web Makers. Его хобби - походы, езда на велосипеде, активный отдых, путешествия и альпинизм.