【发布时间】:2011-05-13 21:51:51
【问题描述】:
是的,我正在为此苦苦挣扎。我无法区分它们,因为我读到的每一个解释都不够清晰和富有哲理。有人可以为我澄清这些定义吗?谢谢各位。
这些定义与 oop 一样适用于过程式编程?谢谢。
【问题讨论】:
-
谢谢...答案非常有用...
标签: oop function properties terminology procedural-programming
是的,我正在为此苦苦挣扎。我无法区分它们,因为我读到的每一个解释都不够清晰和富有哲理。有人可以为我澄清这些定义吗?谢谢各位。
这些定义与 oop 一样适用于过程式编程?谢谢。
【问题讨论】:
标签: oop function properties terminology procedural-programming
a)功能 指执行特定任务并返回值的语句块。
b)程序 指调用时不返回值的程序的构建块。
c)方法 指对象可以执行的动作。
【讨论】:
功能是指令的组合,它们耦合在一起以达到某种结果。它可能需要参数并返回结果。如果一个函数不返回结果,它通常被称为过程。例子:
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
所以函数是做一些特定的工作。例如,当您需要绘制一个由 3 条线组成的多边形作为矢量图像的一部分时,调用 drawLine 三次比将所有用于绘制线条的例程内联更方便。
方法(“成员函数”)类似于函数,属于类或对象,通常表示对象/类的动词。例如,Window 类型的对象通常会有方法 open 和 close 对它们所属的对象进行相应的操作。
属性与日常语言一样,从技术上讲是具有专用 getter/setter 例程的对象/类的字段(可以被视为方法。有些语言没有属性和这种行为是使用私有字段+get/set 方法实现的。)。
【讨论】:
随着时间的推移,人们使用这些术语的方式已经发生了变化(并且可能会不断变化),但如果您正在阅读过去十年左右撰写的文章,它们可能意味着:
函数(又称子例程)是相对独立、相对独立的代码片段,它们构成了一个更大的程序。
方法是附加到面向对象编程中特定类(或实例)的函数。
Properties 是一种面向对象的习惯用法。该术语描述了一个或两个函数(取决于所需的程序行为) - 一个检索值的“getter”和一个设置值的“setter”。按照惯例,属性通常没有太多副作用。 (而且它们确实具有的副作用通常范围有限:它们可能会验证正在设置的项目,通知侦听器更改,或将对象的私有数据转换为公开声明的类型或从公开声明的类型转换。)
【讨论】:
在 OOP 中,主要结构是一个对象。
方法是可以应用于对象的命名动作。 属性是对象具有的命名值。例如,对象 Human 具有属性“Age”。 函数是一个比方法更通用的东西。它只是一个动作,不属于任何对象。但是方法是属于对象的函数。
【讨论】:
函数是一个独立的结构,如trim()、strlen()、fopen() 等。
function myAbcFunction() { ... }
方法是对象的函数。它是在类中定义的。属性只是对象的属性:
class MyClass {
public $property; // Public property: $objInstance->property
protected $property2; // Protected property
public function doSth() {
// That's a method. $objInstance->doSth();
}
}
我建议阅读手册Classes and Objects 章节。
【讨论】: