метод против функции против процедуры против класса? - PullRequest
14 голосов
/ 14 июня 2010

Я знаю основы этих методов, процедур, функций и классов, но мне всегда непонятно, когда проводить различие между теми, которые отличаются от объектно-ориентированного программирования, поэтому, пожалуйста, кто-нибудь может рассказать мне разницу между теми, кто использует простые примеры?

Ответы [ 2 ]

30 голосов
/ 14 июня 2010

A class в текущем традиционном ООП - это набор данных (переменных-членов), связанных вместе с функциями / процедурами, которые работают с этими данными (функциями-членами или методами).Класс не имеет отношения к другим трем терминам, за исключением того факта, что он «содержит» (точнее, «связан с») последний.

Остальные три термина ... ну, это зависит.

A function представляет собой набор вычислительных операторов.Такова процедура .В некоторых очень анальных сохраняющих языках функция возвращает значение, а процедура - нет.В таких языках процедуры обычно используются для их побочных эффектов (таких как ввод / вывод), в то время как функции используются для вычислений и имеют тенденцию избегать побочных эффектов.(Это использование, которое я склоняюсь к предпочтению. Да, я - анальный ретентив.)

Однако большинство языков не являются такими анальными, и в результате люди будут использовать термины «функция» и «процедура»."взаимозаменяемо, предпочитая одно другому на основании их фона.(Программисты Modula- * будут склонны использовать «процедуру», в то время как C / C ++ / Java / что угодно будут использовать, например, «функцию».)

A Метод - просто жаргон дляфункция (или процедура), связанная с классом.Действительно, не все языки ООП используют термин «метод».В типичной (но не универсальной!) Реализации методы имеют подразумеваемый первый параметр (называемый такими вещами, как this или self или тому подобное) для доступа к содержащему классу.Это, как я уже сказал, не универсально.Некоторые языки делают этот первый параметр явным (и, таким образом, позволяют называть все, что вы хотите), тогда как в других языках первый магический параметр вообще отсутствует.


Отредактировано, чтобы добавить этот пример:

Следующий непроверенный и нескомпилированный C ++ -подобный код должен показать вам, какие вещи задействованы.

class MyClass
{
  int memberVariable;

  void setMemberVariableProcedure(int v)
  {
    memberVariable = v;
  }

  int getMemberVariableFunction()
  {
    return memberVariable;
  }
};

void plainOldProcedure(int stuff)
{
  cout << stuff;
}

int plainOldFunction(int stuff)
{
  return 2 * stuff;
}

Вэтот код getMemberVariableProcedure и getMemberVariableFunction оба метода.

3 голосов
/ 14 июня 2010

Процедуры, функции и методы, как правило, похожи, они содержат некоторые операторы обработки.

Единственные различия, которые я могу представить между этими тремя и местами их использования.

Я имею в виду, что «метод» обычно используется для определения функций внутри класса, где могут быть определены несколько типов прав доступа пользователя, таких как public, protected, private.функции, но, как правило, они представляют собой серию функций, которые необходимо выполнить после завершения одной функции или параллельно с другой.


Классы - это набор связанных атрибутов и методов.Атрибуты определяют объект класса, где в качестве методов используются действия, выполняемые или выполняемые над классом.

Надеюсь, это было полезно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...