方法vs功能vs程序vs类?

14 c oop objective-c

我知道这些方法,程序,函数和类的基础知识,但我总是混淆区分面向对象编程的对比,所以请问任何机构能告诉我那些简单例子之间的区别吗?

JUS*_*ION 30

,在电流,常规的面向对象,是与功能/程序,该数据(成员函数或方法)的工作结合在一起的数据(成员变量)的集合.除了"包含"(更恰当地"与......相关联")后者之外,该类与其他三个术语没有任何关系.

其他三个术语......嗯,这取决于.

一个功能是计算语句的集合.一个程序也是如此.但是,在一些非常肛门的保持性语言中,函数返回一个值而一个过程不返回.在这些语言中,程序通常用于它们的副作用(如I/O),而函数用于计算并且倾向于避免副作用.(这是我倾向于使用的用法.是的,我是那种肛门保留.)

然而,大多数语言并不是那种肛门保留,因此人们可以互换地使用术语"功能"和"程序",根据他们的背景优先选择其中一种.(Modula-*程序员倾向于使用"过程",而C/C++/Java /则会倾向于使用"函数",例如.)

方法是用于结合到类的功能(或步骤)只是术语.实际上,并非所有OOP语言都使用术语"方法".在典型的(但不是通用的!)实现中,方法具有用于访问包含类的隐含的第一参数(称为类似thisself类似的东西).正如我所说,这不是普遍的.有些语言使第一个参数显式化(因此允许命名你想要的任何东西),而在其他语言中根本没有神奇的第一个参数.


编辑添加此示例:

以下未经测试未编译的 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;
}
Run Code Online (Sandbox Code Playgroud)

在这个代码中getMemberVariableProcedure,getMemberVariableFunction都是方法.

  • 功能/程序差异并不是真正的肛门 - 这是一个非常好的主意,通常称为命令/查询分离. (4认同)