метод по сравнению с функцией по сравнению с процедурой по сравнению с классом?

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

14
задан 14 June 2010 в 10:01
поделиться

2 ответа

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

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

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

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

Метод - это просто жаргон для функции ( или процедура), привязанный к классу. Действительно, не все языки ООП используют термин «метод». В типичной (но не универсальной!) Реализации методы имеют подразумеваемый первый параметр (называемый такими вещами, как 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 являются методами.

30
ответ дан 1 December 2019 в 08:15
поделиться

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

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

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

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


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

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

3
ответ дан 1 December 2019 в 08:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: