• Property和attribute的区别[转]


    Attribute和Property都可以翻译成“属性”,有的地方用Attribute表示“属性”,有的地方又在用Property,初 学者常常在这两个单词间“迷失”,甚至认为二者没有区别,是一样的。
     
    可是Attribute不等于Property。二者之间到底有何区别?
     
    我们从OOA/OOD(Object Oriented Analysis / Object Oriented Design,面向对象分析与设计)说起。在OOA/OOD中的使用Attribute表示属性,指对象(Object)的特征(Feature)。
     
    我们 在一些编程语言(如C#、Delhpi等)中遇到的“属性”一词,为何是Property,而不是Attribute呢?
     
    为了理解这一点,我们把C++拽进来看看。OOA/OOD中的Attribute在C++中称为Member Variable(成员变量),慢慢开始明白了吧。
     
    C++中的Member Variable在C#中可以继续延用,但有了一个新的称呼:Field(字段)
     
    看一个简单的C#示例:
     
    public class Student {              // Student类
        private string name;         // C#中称为Field(字段),C++中称为Member Variable(成员变量),OOA/OOD中称为Attribute(属性)
    }

    我们整理出下表,可以看到同样的概念在OOA/OOD、C++和C#中的不同称呼:

    Description
    OOA/OOD
    C++
    .NET(C#) /Delphi
    Feature
    Attribute
    Member Variable
    Field

     

     

     

    OOA/OOD中的方法(Method)是指对象的操作(Operation)。

    在C++中称为Member Function(成员函数),而在C#中还是叫做Method。在表中加入对方法(Method)的称呼:

    Description
    OOA/OOD
    C++
    .NET(C#) /Delphi
    Feature
    Attribute
    Member Variable
    Field
    Operation
    Method
    Member Function
    Method

    也可以看出,C++中将Attribute称为Member Variable,将Method称为Member Function,其实还是很贴切的。

    从本质上说,确实是在声明变量、定义函数。后来者(C#等)可能觉得这样的称呼不够OO(Object Oriented,面向对象),于是做了些改变。

    Method延用OOA/OOD的称呼不用说,但将Attribute称作Field,总觉得欠妥。因为 DB(Database,数据库)中有Field的概念,也译作“字段”,实在是容易混淆。

    现在我们可以把OOA/OOD中提到的属性(Attribute)同C#中提到的属性(Property)区分开来。

    继续上面的示例:

    public class Student {              // Student类
        private string name;         // C#中称为Field(字段),C++中称为Member Variable(成员变量),OOA/OOD中称为Attribute(属性)
    public string Name { // C#中称为Property(属性) get { return name; } set { name = value;} } }

    我们顺便看看private和public:

    Property本质上是一对get/set方法,可以进行访问控制,因而可以设置为public;

    而按照OOA/OOD原则,Attribute不能设为public,而要设为private。

    C#中确实也有Attribute,把它译作“特性”似乎更好些。如:
     
    [WebMethod]
    在不少的.NET/C#书籍中看到有把Attribute译成“属性”的,这样一来,老鸟倒是可以通过语境判断出来不是在说Property,初学者恐怕一下子就跌进云里雾里了。
     
    虽然不至于“一个馒头引发的血案”,但“两个属性引发的歧异”,终究不是什么好事情。
     
    另外,在Web编程中也常见到Attribute和Property混用的情况。
     
    比如用VS 2003或2005创建一个ASP.NET应用程序,如果在代码视图添加控件:
    <asp:TextBox id=”txtName” text=”Hello” runat=”server” />
    此时TextBox控件中的id、text和runat都称为Attribute,这是延用了HTML中对属性(Attribute)的称呼。
     
    如果是在设计视图中拖放控件,然后在属性(Properties)窗口中设置ID或Text,此时又会将ID或Text称为Property。 因为控件在服务器上是作为控件类(Control Class)实现,使得可以用编程的方式来访问控件。那么属性必然是Class中的Property。
     
    在我们平日里使用术语的时候,一定要准确,否则在交流时遇到不必要的障碍

     From: http://www.cnblogs.com/mfryf/archive/2012/02/14/2350988.html

  • 相关阅读:
    第六章 优化服务器设置--高性能MySQL 施瓦茨--读书笔记
    skip-external-locking --mysql配置说明
    mysql配置文件my.cnf详解
    Response.Redirect 打开新窗口的两种方法
    .net中Response.End() 和Response.Redirect("http://dotnet.aspx.cc");
    onclientclick与onclick的问题.
    a href="javascript:void(0)" 是什么意思?加不加上有什么区别?
    ashx是什么文件
    CSS里的 no-repeat
    css中 repeat-x 的简单用法
  • 原文地址:https://www.cnblogs.com/iiwen/p/5504296.html
Copyright © 2020-2023  润新知