什么是方法,属性和功能?

Han*_*ans 7 oop procedural-programming terminology properties function

是的,我正在努力解决这个问题.我无法区分它们,因为我读到的每一个解释都是如此不清楚和充满哲学.有人可以为我清理这些定义吗?多谢你们.

这些定义同样适用于程序编程和oop一样多吗?谢谢.

kha*_*hik 8

函数是耦合在一起的指令组合,以实现一些结果.它可能需要参数并返回结果.如果函数没有返回结果,则通常称为过程.例子:

function drawLine(x1, y1, x2, y2):
  // draws a line using Bresenham's algorithm from x1,y1 to x2,y2.
  // doesn't return anything

function <number> add(a, b):
  // adds a to b and returns the result as a number
  return a + b
Run Code Online (Sandbox Code Playgroud)

所以功能是做一些特别的工作.例如,当您需要绘制3行的多边形作为矢量图像的一部分时,调用drawLine三次比将内部线条绘制的所有例程放入内联更方便.

方法("成员函数")类似于函数,它们属于类或对象,通常表示对象/类的动词.例如,类型的对象Window通常具有方法open,close并且对它们所属的对象进行相应的操作.

属性与日常语言一样,技术上是具有专用getter/setter例程的对象/类的字段(可以将其视为方法.有些语言不具有属性,并且使用私有字段+ get/set实现此行为方法.).


Jef*_*nal 7

随着时间的推移,人们使用这些术语的方式已经发生了变化(并且可能会不断变化),但如果您正在阅读过去十年左右的文章,那么这就是他们的意思:

函数(aka子例程)是相对独立的,相对独立的代码片段,构成一个更大的程序.

方法是附加到面向对象编程中的特定类(或实例)的函数.

属性是面向对象的习语.该术语描述了一个或两个函数(取决于所需的程序行为) - 一个检索值的'getter'和一个设置值的'setter'.按照惯例,属性通常没有很多副作用.(并且它们所具有的副作用通常具有有限的范围:它们可以验证正在设置的项目,通知侦听器更改,或将对象的私有数据转换为公开声明的类型或从公开声明的类型转换.)