Чем отличается "метод" от "функции"
Неоднократно видел использование термина «метод» для обозначения функций-членов классов в противоположность термину «функция» для обозначения «свободных» функций нечленов. С другой стороны, в текстах о Си++, часто всё называют «функцией» и члены и нечлены.
Собственно, какова разница между терминами «метод» и «функция», почему в Си++ члены не называют «методами»?
И чего так много слов то? Все просто:
Метод всегда является функцией, а функция не всегда является методом.
Нет единой устоявшейся техники наименования сущностей в языках программирования и каждый язык, чтобы немного отличаться от других, по историческим причинам имеет свой набор названий и соглашений.
Так как программирование пришло с математики, то начальные корни нужно искать там. А там были функции и процедуры. Функция на основании своих аргументов генерирует какой-то результат. sin , cos — яркие примеры. Функция без аргументов — вырожденный вариант и обычно это константа. В математике обычно функции являются чистыми — то есть, у них нет побочных эффектов. То есть, вызов функции с одними и теми же аргументами дает один и тот же результат.
Параллельно существуют процедуры. Процедура — это последовательность действий, приводящая к определенному результату (да, обычная программа — это также может быть процедура, хотя. ). В паскале и фортране принято, что процедура не возвращает результат. Но я считаю, что это исключительно соглашение, потому что иначе нужно было бы делать как в C/C++ и вводить пустой тип (void).
почему в Си++ члены не называют «методами»?
Во многих языках 60-70 годов не было ООП в том понимании, которое известно сейчас. С++ изначально был просто «фронтом» (то есть надстройкой) над обычным Си. Был долгий период, когда это уже был не Си, но и ещё и не C++. Компилятора C++ не было, а был транслятор в Си. Видимо, поэтому там закрепилось функция класса/переменная класса. Сейчас Страуструп предлагает N4174, и если его примут, то грань между обычными функциями и функциями класса размоется ещё больше.
В других языках — Java и семейство, проектировались, когда уже ООП был немного сформированным. От обычных функций они решили отказаться и, видимо, чтобы не вызывать путаницу, обозвали все методами. Да, потом им пришлось функции все-таки вернуть назад, но, чтобы ничего не сломать, назвали это статическими методами.
Собственно, какова разница между терминами «метод» и «функция»
Правильный ответ — историческая. Как правильно называть сущности в разных языках, нужно уточнять в их документации.
многие автора книг по с++ называют функции класса методами. Как быть?
Тут все сложно. Например, Эккель так делает видимо потому, что он ещё и много книг о Java написал. Также не стоит забывать, что многие книги мы читаем в переводе, а они «исправляют», потому что переводчику так понятнее.
так можно ли называть функции класса с++ методами?
Это точно так же, как использовать мат/обсценную лексику в высшем обществе. Или пытаться объясниться с гопниками языком Тургенева и стихами Пушкина/Блока.
Чем отличаются понятия функции, процедуры и метода в программировании?
1 — в контексте парадигм, из данных понятий уникально одно Метод, как уже было сказано D3lphi, это нечто принадлежащее классу. класс, в свою очередь, это фундаментальное понятие ООП основанного на классах (шарм ситуации в том, что ООП бывает тоже разное ;))
в этом случае чаще принято уточнять что метод — это один из видов челнов класса (бывают еще поля, свойства, интерфейсы но это уже контекст конкретного языка) .. и как верно заметил Griboks — он реализуется функцией или процедурой
но .. есть много языков, где понятия метод нет вообще
а еще есть функциональное программирование .. эта парадигма частично присутствует во многих современных языках, однако есть языки, где любой код только функция
2 — из контекста языков:
понятие процедура в явном виде, чаще всего употребляют преподаватели, которые сами учились на языках типа Fortran, Pascal или родственных, и либо не имели другого опыта вообще, либо иной опыт был на много скромнее
сейчас доминируют языки, основывающиеся на Си синтаксисе, даже java и js в данном вопросе станут родственниками классического Си
а в нем нет понятия процедуры, только функции.. а на случай, когда функция не обязана возвращать какую либо величину, просто указывается тип возвращаемого значения void
смешение всего этого на примере C# — в этом языке, все есть объект. а любой исполняемый код это метод, и методы реализуются только функциями (в тч void функциями)
Функция против метода: разница и сравнение
В эпоху технологий и компьютеров важную роль играет язык программирования. Язык программирования — это способ, с помощью которого мы можем общаться с программным обеспечением на компьютере. Компьютер понимает только язык машинного уровня. Основой языка программирования являются функции и методы.
Основные выводы
- Функция — это блок кода, выполняющий определенную задачу, тогда как метод — это функция, связанная с объектом или классом.
- Функции возвращают значение по умолчанию, тогда как метод может возвращать значение или нет, в зависимости от его реализации.
- Функции не связаны с конкретным объектом или классом, тогда как методы всегда связаны с объектом или классом.
Функция против метода
Разница между функцией и методом заключается в том, что функция свободна от какого-либо объекта, тогда как сам метод является статическим или находится на объекте. В языке C нет методов, в нем есть только функции, тогда как в C++ и JAVA нет функций, а есть только методы. Объектно-ориентированное слово для метода — функция.
Хотите сохранить эту статью на потом? Нажмите на сердечко в правом нижнем углу, чтобы сохранить в свой собственный блок статей!
Функция — это фрагмент кода с именем, который может передавать и, при необходимости, возвращать данные для работы. Другими словами, работа функции на любом языке программирования заключается в предоставлении результата в обмен на заданные данные (параметры). Функцию можно использовать несколько раз. Функция также может быть вызвана из любой другой функции.
Хотя этот метод известен как ООП (объектно-ориентированный язык программирования), потому что объект включает в себя данные и поведение, а это включает в себя интерфейс. Таким образом можно определить, можно ли использовать объект или нет. Например, «окно» — это объект, состоящий из методов «открыть» и «закрыть», имеющих некоторые данные и поведение.
Сравнительная таблица
Что такое функция?
Функции представляют собой группу инструкций, объединенных вместе для достижения определенного результата. Функция может повысить возможность повторного использования определенного кода. Любые значения могут быть переданы через переменные в функцию. Переменные делятся на две категории — аргументы и параметры.
В JAVA мы начинаем программирование с класса, за которым следует следующая строка с указанием «public static void main ()». «public» обозначает спецификатор доступа и используется для управления тем, какая часть содержимого должна быть доступна.
Существуют определенные правила, которым необходимо следовать при определении функции в таких языках программирования, как JAVA и C++. Например, в JAVA правила определения функции заключаются в том, что нельзя объявлять несколько функций, имеющих одну и ту же сигнатуру, т. е. функции, имеющие одинаковые параметры и номера, не могут повторяться. Пример функции в JAVA приведен ниже для справки: Int findMinimum (int num1, int num2, int num3) < If (num1 >num2) return num1; < elseif (число3 >число1) вернуть число3; иначе вернуть число1; > > В языке программирования C функции бывают двух типов: предопределенные и определяемые пользователем функции.
Такие функции, как puts(), gets(), printf(), scanf() и т. д., предопределены. библиотека функции. Например, – функция printf() описана в заголовочный файл поэтому, чтобы использовать функцию printf(), заголовочный файл должен быть включен в программу с помощью #include .
Функции, созданные пользователем в программе, называются пользовательскими функциями. Синтаксис определяемой пользователем функции: return_type имя_функции (список аргументов) <Набор операторов — Блок кода>. Тип возвращаемого значения может быть таким, как char, int, void и т. д. Список аргументов предназначен для сравнения двух данных возвращаемого типа. Блок кода — это группа операторов программирования на языке C, которые будут выполняться всякий раз, когда во время выполнения выполняется вызов функции.
Что такое Метод?
Методы определены как объектно-ориентированные языки программирования. Методы также делятся на три типа: метод интерфейса, метод конструктора и метод реализации.
В программировании метод записывается как; String getMyName() < return «Давина Клэр»; >В приведенном выше примере метода getMyName() является сигнатурой метода. < вернуть «Давина Клэр»; >— тело метода. Строка является возвращаемым типом и возвращает «Davina Claire»; является оператором возврата.
Полная программа будет; эхо $альт -> цвет; // черное эхо» ”; эхо $swiftDzire -> цвет; // черное эхо» ”; // Установить значения $alto -> color = ‘red’; $alto -> comp = «ALTO»; $swiftDzire -> comp = «SWIFTDZIRE»; // Снова получаем значения echo $alto -> color; // красное эхо » ”; эхо $swiftDzire -> цвет; // черное эхо» ”; эхо $ альт -> комп; // АЛЬТНОЕ эхо » ”; эхо $swiftDzire -> комп; // СВИФТДЗИРЭ эхо » ”; // Используйте методы для получения звукового эха $alto -> hello(); // звуковое эхо » ”; эхо $swiftDzire -> привет(); // звуковой сигнал
Основное различие между функцией и методом
- Функция вызывается непосредственно по ее имени, тогда как метод включает в себя код, который вызывается по имени объекта.
- Функция может передавать, а затем возвращать обрабатываемые данные, в то время как метод обрабатывает данные в классе.
- Функция независима, а метод — это функция, связанная с объектом.
- Явные данные передаются функции, тогда как метод полностью передает объект, для которого он был вызван в программе.
- Метод — это объектно-ориентированное программирование, а функция имеет автономную функциональность.
Я приложил столько усилий, чтобы написать этот пост в блоге, чтобы предоставить вам ценность. Это будет очень полезно для меня, если вы подумаете о том, чтобы поделиться им в социальных сетях или со своими друзьями/родными. ДЕЛИТЬСЯ ♥️
Сандип Бхандари имеет степень бакалавра вычислительной техники Университета Тапар (2006 г.). Имеет 20-летний опыт работы в сфере технологий. Он проявляет большой интерес к различным техническим областям, включая системы баз данных, компьютерные сети и программирование. Подробнее о нем можно прочитать на его био страница.
Лекция . Процедуры и функции — функциональные модули и методы класса
Первыми формами модульности, появившимися в языках программирования, были процедуры и функции. Они позволяли задавать определенную функциональность и многократно выполнять один и тот же параметризованный программный код при различных значениях параметров. Поскольку функции в математике использовались издавна, то появление их в языках программирования было совершенно естественным. Уже с первых шагов процедуры и функции позволяли решать одну из важнейших задач, стоящих перед программистами, — задачу повторного использования программного кода. Встроенные в язык функции давали возможность существенно расширить возможности языка программирования. Важным шагом в автоматизации программирования было появление библиотек процедур и функций, доступных из используемого языка.
Долгое время процедуры и функции играли не только функциональную, но и архитектурную роль. Весьма популярным при построении программных систем был метод функциональной декомпозиции «сверху вниз», и сегодня еще играющий важную роль. Но с появлением ООП архитектурная роль функциональных модулей отошла на второй план. Для ОО-языков, к которым относится и язык C#, в роли архитектурного модуля выступает класс. Программная система строится из модулей, роль которых играют классы, но каждый из этих модулей имеют содержательную начинку, задавая некоторую абстракцию данных.
Процедуры и функции связываются теперь с классом, они обеспечивают функциональность данных класса и называются методами класса. Главную роль в программной системе играют данные, а функции лишь служат данным. Напомню здесь, что в C# процедуры и функции существуют только как методы некоторого класса, они не существуют вне класса.
В данном контексте понятие класс распространяется и на все его частные случаи — структуры, интерфейсы, делегаты.
В языке C# нет специальных ключевых слов — procedure иfunction, но присутствуют сами эти понятия. Синтаксис объявления метода позволяет однозначно определить, чем является метод — процедурой или функцией.
Прежнюю роль библиотек процедур и функций теперь играют библиотеки классов. Библиотека классов FCL, доступная в языке C#, существенно расширяет возможности языка. Знание классов этой библиотеки и методов этих классов совершенно необходимо для практического программирования на C# с использованием всей его мощи.
Уже в лекции 1 мы говорили о роли библиотеки FCL — статическом компоненте Framework .Net. В лекции 4 рассматривались возможности класса Convert этой библиотеки, а в лекции 7 — классы Math и Random. Изучение классов FCL будет постоянно сопровождать наш курс.
Процедуры и функции. Отличия
Функция отличается от процедуры двумя особенностями:
• всегда вычисляет некоторое значение, возвращаемое в качестве результата функции;
• вызывается в выражениях.
Процедура C# имеет свои особенности:
• возвращает формальный результат void, указывающий на отсутствие результата;
• вызов процедуры является оператором языка;
• имеет входные и выходные аргументы, причем выходных аргументов — ее результатов — может быть достаточно много.
Хорошо известно, что одновременное существование в языке процедур и функций в каком-то смысле избыточно. Добавив еще один выходной аргумент, любую функцию можно записать в виде процедуры. Справедливо и обратное. Если допускать функции с побочным эффектом, то любую процедуру можно записать в виде функции. В языке С — дедушке C# — так и сделали, оставив только функции. Однако значительно удобнее иметь обе формы реализации метода: и процедуры, и функции. Обычно метод предпочитают реализовать в виде функции тогда, когда он имеет один выходной аргумент, рассматриваемый как результат вычисления значения функции. Возможность вызова функций в выражениях также влияет на выбор в пользу реализации метода в виде функции. В других случаях метод реализуют в виде процедуры.