一辆汽车,要获取它行使中的速度,应该理解为:A,速度为汽车的属性,所以获取的是汽车的一个属性.
Car model = new Car();
return model.Speed;B,速度是不断变化的,所以不能理解为属性,只能通过方法来获取.
Car model = new Car();
return model.speed();哪个才是最好的答案?或另有想法?
请大家积极发言.

解决方案 »

  1.   

    个人认为,  属性
    调用属性实际上是调用 get 或 set 方法。
      

  2.   

    我也认为是属性,get、set 就行.关于速度的改变,实际是因为状态和时间的改变而改变,在同一状态,同一时间,只有一个速度。
    就像 DataGridView 中的 CurrentCell(属性哦) 一样,这个值是不断变化的,是根据你的行列变化而得来的。
    汽车也一样: Car 中应该有 CurrentSpeed,这个值是不断变化的,是根据你的状态和时间而改变的。
    ======================================
    状态:停止,启动,加速,减速   等等。
    时间:结合状态,线性的 -------->个人分析,大家讨论一下吧。
      

  3.   

    第二个“答案”也显然是错误的。这个问题拿出两个晕菜的“答案”,让你二选一,我想大多数个性张扬的人也只能拂袖而去了。既然不是属性,那么怎么可能通过 model.speed() 来获得?它只能通过其它对象(例如“运动场景”)来获得。
      

  4.   

    获取汽车当前的速度是不是和获取当前的时间Datetime.Now有些类似,所以速度应该是汽车的属性。
      

  5.   

    两个答案是一个意思,属性不也是方法嘛,而且是两个方法的整合,即getter和setter一辆汽车,要获取它行使中的速度这个问题好像有点问题吧,首先,你查询某个对象的属性,那这个对象已经声明并初始化等操作了,他的属性值已经存在于 栈或堆了,而你只要取就行了。可是你这个问题,如果我用一个方法 GetSpeed(int timePoint),根据某个时间点来获取这个速度,那么如果你这个速度是匀速,那么这个获取没意义,直接取均速就行了,这个均速应该一开始就有了,如果加速或减速的话,你直接取是没意义的了,难道你每秒储存他的速度吗,那如果我要第12分12秒123毫秒的速度呢,你这个只能根据他的加速或减速公式,以及他的开始速度、阻力等,一个已经提高该汽车如何改变速度的算法,你调用该算法
      

  6.   

    属性是什么?属性本来就是调用 get_xxxx 这类代码。你的两个代码在设计上是完全重复的意思。比如说 a 的属性我可以用 a.Name 去取得,也可以用 a.get_Name() 去取得。这跟设计毫无关系,这顶多是同一个操作概念的编程的两种写法。你如果要了解如何设计对象之间的关系,就不要纠缠于某一个编程语言的编程语法,忘掉你会一点点编程,真正用不懂编程的人也能懂得的语言来分析出设计原则来。
      

  7.   

    属性通常以名词命名,方法通常以动词或动宾词组命名。第一选择中属性为Speed,是名词,通常理解为速度;第二选择中方法名为speed,是动词,通常理解为加速。而题目要求的是“速度”,所以第一选择命名更准确,更具可读性。至于题目中写的其它内容,如速度变化等,纯属扯蛋。
      

  8.   

    生在天朝,我们就要采取应试教育方式,从出题人的角度出发,当然出题人有可能是一时蛋疼。我解答的话,速度不是汽车的属性,获取汽车的当前速度应该用方法。
    理由如下:
    1)任何一个汽车网站或论坛上,关于汽车的介绍里,都没有当前速度这个概念。有的只是最高速度。
    2)属性,我当然认为他是GET SET,但出题人蛋疼的认为属性就是右边“属性”栏里显示的那部分,至于你类里写的属性,那不叫属性。
    3)参考9楼的回答:如果随便搞一个有关的东西就叫做属性,那么驾驶员算不算属性?售价算不算属性?出入证算不算属性?车库算不算属性?洗车价钱算不算属性?载货的价值算不算属性?
    4)10楼的说法,我不知道理解的对不对,你的意思是该方法要传参吗?传进去参照物的速度,方向,档位,发动机转速?如果是的话,那你可能高估那个蛋疼的出题人了。估计他平时喜欢,先给全局变量赋值,再调用无参数的方法这样的编程方式。另:LZ说自己做错了,我们更期待你告诉我们:你是如何回答的?谁说你错了?那个说你错了的人告诉你错在哪?那个人对这个问题是如何理解的?
      

  9.   

    不看我这个答案,你做不对这道题了.....................................属性 这是肯定的,既然你说速度是变化的,得用方法获取,这个也不错, 应该这样的public int Speed
    {
      get{Car model = new Car();
          return model.speed();} 
      set;
    }
      

  10.   

    这考官明显来找茬的所以答案不要那么死,用 即可以***  也可以*** 句式。我猜那个考官并不是想得到什么准确肯定的答案。
    这题本身也没有确定答案,什么设计都不是死的,项目要求怎么样合理,就怎么样,OOP? 那是工具,是你用它,吧是它用你。
      

  11.   

    个人认为是属性。
    汽车的颜色,汽车的大小,汽车的速度,汽车的型号,等等这些都应该是属性。如果说是行驶中的速度,那就是应该是
    B,速度是不断变化的,所以不能理解为属性,只能通过方法来获取.
    Car model = new Car();
    return model.speed();其实也有点类似与timer控件吧。
      

  12.   

    从底层来分析,如果燃油是属于汽车的属性则速度才可能是汽车的属性。
    从这个方面来看,速度只是一个状态,而这个状态不是相对于汽车的,而是汽车相对于周围环境的。
    再假使,汽车有油料,打着火,挂着档,轮子在转。你敢说汽车本身是有速度的吗?
    所以,轮子转本来就只是一种状态了。也就是说,由于轮子转动而出现的相对移动,只能算是一种状态,而且这种状态是不定的,那么这里就不用属性来取到了。
    如果放在属性里,在速度频繁变化的情况下,内存耗费大,cpu耗费次数频繁(因为你要不断的改写这个属性的值,而且伴有存取)。
    而获得状态的途径一般是 事件,也就是说想要知道这个状态,就要实行监测(监控),所以这个事件的触发源一般是监测设备。我们平时存储线性事件内的状态变化时,也只是存储变化节点的时间和变化后的状态值,统计数据也是根据节点计算的。当然不是说属性不能用,只是属性用在这里一个是定义偏离另一个是不太规范而已。
      

  13.   

    从底层来分析,如果燃油是属于汽车的属性则速度才可能是汽车的属性。
    从这个方面来看,速度只是一个状态,而这个状态不是相对于汽车的,而是汽车相对于周围环境的。
    再假使,汽车有油料,打着火,挂着档,轮子在转(轮子是悬空的)。你敢说汽车本身是有速度的吗?
    所以,轮子转本来就只是一种状态了。也就是说,由于轮子转动而出现的相对移动,只能算是一种状态,而且这种状态是不定的,那么这里就不用属性来取到了。
    如果放在属性里,在速度频繁变化的情况下,内存耗费大,cpu耗费次数频繁(因为你要不断的改写这个属性的值,而且伴有存取)。
    而获得状态的途径一般是 事件,也就是说想要知道这个状态,就要实行监测(监控),所以这个事件的触发源一般是监测设备。我们平时存储线性时间内的状态变化时,也只是存储变化节点的时间和变化后的状态值,统计数据也是根据节点计算的。当然不是说属性不能用,只是属性用在这里一个是定义偏离另一个是不太规范而已。
      

  14.   

    Speed是啥类型的?可以也是个类不?
      

  15.   

    我的答案最简洁:
    客观上理解,2是对的。但2理解的不完整。
    因为是速度,不是当前速度
    所以定义为speed(Time t=CurrentTime)才是合理的speed不能作为属性。currentSpeed才有作为属性的理由。
      

  16.   

    如果真的是问题,那也是个哲学上的问题,跟技术有个屁的关系,看到楼上某些专家的评论,我觉得很想笑啊。
    其实意义上来说.NET的属性就是一种写法上的优化,和方法没有本质的区别,但是.NET提出这样一种概念,就表示他是一种.NET推荐的规范,个人习惯用属性把各种“属性”体现出来,不喜欢JAVA的方法式set和get,不够美观,仅此而已,就这么多。
    用过的NET的库函数就能感受到大部分该是属性的东西都已经变成属性了,基本上没有用方法得到的属性,这就是.NET的编程规范,工作中碰到许多有2 3年经验的.NET程序员(以前搞JAVA和C的)仍然不习惯用属性这种东西,我也没有办法,这是别人的习惯,你能拿他怎么办呢,公司又没有哪个资深并且专制的.NET高手来统一武林,大家都只想把功能实现就可以了。
    老实说如果真的有公司这么在意封装的效果和使用体验,那这肯定是个比较不错的公司了,一般的公司都是要你实现功能,管你是改底层还是修改页面,还是怎么地,这种公司太多了。
      

  17.   

    实现或者作为是一回事,但思考又是另外一回事情,如果从面向对象的角度来分析来讲:对象=特征(特征包括动态特征和静态特征)+行为。比如,人会说话,这是属性CanSay,人说话就是行为(Say)。速度当然是一种特征(就是平常说的属性,而且是动态特征),至于这个属性的获取是使用语言中的属性来实现还是方法来实现,无关概念的,而且大家要特别注意,我们平常说的对象的方法并不一定是对象的行为,它也可以是用来获取对象特征的。
    类的方法和属性并不等同于面向对象编程中的属性和行为。至于,上面有人提出的驾驶员算不算属性,这完全要看你的对象内涵,并不能作为速度是不是属性这类问题的举证。