OOP:谈论方法和属性的正确术语是什么?这两个类及其实例?

时间:2013-12-16 22:40:23

标签: oop terminology

假设我有一门编程语言课程:

class name {

    variable_name = 1;

    method_name(x) {
        // return something
    }
}

foo = new name();

print(foo.method_name(foo.variable_name));

以下内容有多正确?我们可以让它更正确吗?

  • 如果我想谈谈方法的特定实例(foo.method_name),我会说'对象foo的method_name方法'吗?或者是其他东西?或者谈论方法变量的实例是否没有意义?

  • 如果我想谈谈任何名称的一般对象,并参考其method_name-method或variable,我会说什么?我会说'类名的method_name-method / variable_name-variable?'或其他什么?

感谢您的时间。

亲切的问候,

的Marius

2 个答案:

答案 0 :(得分:1)

  • 如你所说,谈论某个方法的特定实例并没有任何意义。通常我们讨论类的实例 - 对象 - 及其方法。因此,人们通常会谈论类似“在foo上调用method_name”或只是foo dot method_name。

  • 这是一个很好的说法。根据我的经验,它在日常沟通中并不重要,因为方法确实做了同样的事情,只是在它的范围内有不同的值。这才是真正重要的事情(例如:accele()或toString())。在讨论方法,变量等时,最重要的部分可能是如果它们碰巧是静态的那么清楚地传达 - 即不属于任何给定的实例。在日常工作中,我不会做出任何努力来区分“然后我们可以在我们的汽车实例上调用加速”和“汽车类有一个名为加速的方法”(这是非静态的)方法) - 但我可以指定“我们的汽车类有静态方法来帮助我们计算加速度。

答案 1 :(得分:1)

简而言之:

Classes: (which may be instantiated to objects)
   can have - 

       (non-static / instance) members 
                 - public 
                    - methods
                    - properties
                 - private
                    - methods
                    - properties
       (static / class) members
                 - public
                    - methods 
                    - properties
                 - private
                    - methods 
                    - properties

但是,方法/也可以称为消息选择器行为(取决于所讨论的语言,特别是上下文。)将它们称为 functions 偶尔被认为是不正确的,但是在他们正确的思想中没有人会带你去完成这些事情的任务。 (特别是ECMAScript中关键字功能的出现显示了其可接受程度。根据经验,语言域总是定义正确性,否则通常该术语很好/可理解但可能导致歧义。)类似的属性被不同地称为,字段属性变量

非静态方法或属性的替代名称是将它们称为实例方法或属性。静态方法/属性可以称为 class 方法/属性。顺便说一句,省略非静态限定符,是通常的和隐含的。

作为一般准则,请参阅正在使用的语言以确定正确的术语,因为它们特定于各种语言文化。

写这篇文章的假设是,没有必要概述这些类成员的范围/访问差异。如果需要,我很乐意添加一个注释。