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
оба метода.