Если вы чувствуете, что читаете здесь, это «Мое введение в ОО методы»
Идея, лежащая в основе объектно-ориентированной парадигмы, заключается в том, чтобы «угрожать» программному обеспечению из… хорошо «объектов». Объекты в реальном мире имеют свойства, например, если у вас есть Сотрудник, у сотрудника есть имя, идентификатор сотрудника, должность, он принадлежит отделу и т. Д. И т. Д.
Объект также знает, как обращаться со своими атрибутами и выполнять с ними некоторые операции. Допустим, если мы хотим знать, что сотрудник делает прямо сейчас, мы спросим его.
employe whatAreYouDoing.
То, что whatAreYouDoing - это "сообщение", отправленное объекту. Объект знает, как ответить на эти вопросы, говорят, что у него есть «метод» для решения вопроса.
Итак, способ, которым объекты должны демонстрировать свое поведение, называется методами. Методы, таким образом, являются объектом артефакта, который должен что-то «делать».
Другие возможные методы:
employee whatIsYourName
employee whatIsYourDepartmentsName
и т.д.
Функции с другой стороны - это способы, которыми язык программирования должен вычислять некоторые данные, например, у вас может быть функция addValues (8, 8), которая возвращает 16
// pseudo-code
function addValues( int x, int y ) return x + y
// call it
result = addValues( 8,8 )
print result // output is 16...
Поскольку первые популярные языки программирования (такие как fortran, c, pascal) не охватывали парадигму ОО, они только называют эти артефакты «функциями».
например, предыдущая функция в C будет:
int addValues( int x, int y )
{
return x + y;
}
Не естественно говорить, что у объекта есть «функция» для выполнения какого-либо действия, потому что функции больше связаны с математическими вещами, в то время как у Сотрудника мало математики, но у вас могут быть методы, которые делают точно так же как функции, например, в Java это будет эквивалентная функция addValues.
public static int addValues( int x, int y ) {
return x + y;
}
Выглядит знакомо? Это потому, что Java имеет свои корни на C ++ и C ++ на C.
В конце концов это просто концепция, в реализации они могут выглядеть одинаково, но в документации ОО это называется методом.
Вот пример ранее работающего объекта Java в Java.
public class Employee {
Department department;
String name;
public String whatsYourName(){
return this.name;
}
public String whatsYourDeparmentsName(){
return this.department.name();
}
public String whatAreYouDoing(){
return "nothing";
}
// Ignore the following, only set here for completness
public Employee( String name ) {
this.name = name;
}
}
// Usage sample.
Employee employee = new Employee( "John" ); // Creates an employee called John
// If I want to display what is this employee doing I could use its methods.
// to know it.
String name = employee.whatIsYourName():
String doingWhat = employee.whatAreYouDoint();
// Print the info to the console.
System.out.printf("Employee %s is doing: %s", name, doingWhat );
Output:
Employee John is doing nothing.
Разница тогда заключается в «домене», где он применяется.
У AppleScript есть идея «естественного языка», которая в какой-то момент была у ОО. Например, Smalltalk. Я надеюсь, что после прочтения вам, возможно, будет легче понять методы объектов.
ПРИМЕЧАНИЕ: код не должен быть скомпилирован, только в качестве примера. Не стесняйтесь изменять пост и добавлять пример Python.