这道题我做错了,顺便考下大家

king_827 2011-09-05 01:28:50
一辆汽车,要获取它行使中的速度,应该理解为:

A,速度为汽车的属性,所以获取的是汽车的一个属性.
Car model = new Car();
return model.Speed;

B,速度是不断变化的,所以不能理解为属性,只能通过方法来获取.
Car model = new Car();
return model.speed();

哪个才是最好的答案?或另有想法?
请大家积极发言.
...全文
2281 59 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
59 条回复
切换为时间正序
请发表友善的回复…
发表回复
广州接入 2011-09-17
  • 打赏
  • 举报
回复
[Quote=引用 60 楼 luozhongrong_06 的回复:]
引用 57 楼 hawksoft 的回复:

不要说出题人2,其实是你们自己2,思想和概念都没搞清楚,非得把概念和实现混淆起来,能怪别人么?


不要装的自己很懂,还在这里用攻击性的语言。我想考官说他错了,最重要的可能是他分析的更加的抽象, 或者换句话说他回答得角度不是考官所想听到的,没有抓住问题的重点。
[/Quote]
==============================================
我的攻击性语言,是针对那些攻击出题人的,为什么要随便说出题人2呢?至于装懂嘛,你认为我装那我就装吧.
luozhongrong_06 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 57 楼 hawksoft 的回复:]

不要说出题人2,其实是你们自己2,思想和概念都没搞清楚,非得把概念和实现混淆起来,能怪别人么?
[/Quote]

不要装的自己很懂,还在这里用攻击性的语言。我想考官说他错了,最重要的可能是他分析的更加的抽象, 或者换句话说他回答得角度不是考官所想听到的,没有抓住问题的重点。
luozhongrong_06 2011-09-13
  • 打赏
  • 举报
回复
[Quote=引用 44 楼 kevinmartin 的回复:]

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

speed不能作为属性。currentSpeed才有作为属性的理由。
[/Quote]
同意。
小龙卷卷风 2011-09-12
  • 打赏
  • 举报
回复
评论很精彩,受益匪浅,其实本人比较同意通过调用方法老获取速度。
广州接入 2011-09-10
  • 打赏
  • 举报
回复
不要说出题人2,其实是你们自己2,思想和概念都没搞清楚,非得把概念和实现混淆起来,能怪别人么?
广州接入 2011-09-10
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 king_827 的回复:]

考官最后说
并没有要求答案有多准确,而是想看看我对事物的分析与分解能力.
对于一个普通的事物能发掘多少细节.

而我的答案也很普通:
速度本身并不是属性.
要硬要说是一属性,那么应该附加在运动之上.
交通工具都拥有运动这个共有特性
然后不同种类的交通工具有不同的运动类型.
而运动本身才能反应速度.

最后考官说我错了.就这样.
[/Quote]
你确实是错了,你把面向对象的概念和内涵与语言的具体实现混淆了。在面向对象中属性就是指对象的特征,对象包括特征和行为,但在语言具体实现的时候,特征的表达可以用语言的属性,域成员甚至是方法来表征或获取,而行为当然只能用方法来实现了。面向对象是一种思想或者方法,这种思想如何实现和表达是语言的事情,不要混淆了范畴。
广州接入 2011-09-10
  • 打赏
  • 举报
回复
实现或者作为是一回事,但思考又是另外一回事情,如果从面向对象的角度来分析来讲:对象=特征(特征包括动态特征和静态特征)+行为。比如,人会说话,这是属性CanSay,人说话就是行为(Say)。速度当然是一种特征(就是平常说的属性,而且是动态特征),至于这个属性的获取是使用语言中的属性来实现还是方法来实现,无关概念的,而且大家要特别注意,我们平常说的对象的方法并不一定是对象的行为,它也可以是用来获取对象特征的。
类的方法和属性并不等同于面向对象编程中的属性和行为。至于,上面有人提出的驾驶员算不算属性,这完全要看你的对象内涵,并不能作为速度是不是属性这类问题的举证。
HackParent_3 2011-09-09
  • 打赏
  • 举报
回复
这得看上下文
personball 2011-09-09
  • 打赏
  • 举报
回复
这得看上下文
idaydayup 2011-09-09
  • 打赏
  • 举报
回复
前几天看C#高级编程,上面说像速度这种实时变化的东西 用方法来获得比较好,估计这道题也是根据那上边的例子写的.不过 因为出题人水平太2才出了这么道题
ID取的很后悔 2011-09-08
  • 打赏
  • 举报
回复
想想面试都可怕----菜鸟一只
pl1987123 2011-09-08
  • 打赏
  • 举报
回复
如果真的是问题,那也是个哲学上的问题,跟技术有个屁的关系,看到楼上某些专家的评论,我觉得很想笑啊。
其实意义上来说.NET的属性就是一种写法上的优化,和方法没有本质的区别,但是.NET提出这样一种概念,就表示他是一种.NET推荐的规范,个人习惯用属性把各种“属性”体现出来,不喜欢JAVA的方法式set和get,不够美观,仅此而已,就这么多。
用过的NET的库函数就能感受到大部分该是属性的东西都已经变成属性了,基本上没有用方法得到的属性,这就是.NET的编程规范,工作中碰到许多有2 3年经验的.NET程序员(以前搞JAVA和C的)仍然不习惯用属性这种东西,我也没有办法,这是别人的习惯,你能拿他怎么办呢,公司又没有哪个资深并且专制的.NET高手来统一武林,大家都只想把功能实现就可以了。
老实说如果真的有公司这么在意封装的效果和使用体验,那这肯定是个比较不错的公司了,一般的公司都是要你实现功能,管你是改底层还是修改页面,还是怎么地,这种公司太多了。
雨中一点风 2011-09-07
  • 打赏
  • 举报
回复
额 现在的面试......
随枫而来 2011-09-07
  • 打赏
  • 举报
回复
蛋疼的问题。直接回答他,这TM就是操蛋的问题~
kevinmartin 2011-09-07
  • 打赏
  • 举报
回复
我的答案最简洁:
客观上理解,2是对的。但2理解的不完整。
因为是速度,不是当前速度
所以定义为speed(Time t=CurrentTime)才是合理的

speed不能作为属性。currentSpeed才有作为属性的理由。
figurehubo 2011-09-07
  • 打赏
  • 举报
回复
使用Observer模式吧
Manonloki 2011-09-07
  • 打赏
  • 举报
回复
根据题目看
非要二选一……我选属性


总感觉如果要体现速度是变化的……应该用事件委托去实现 关属性方法毛事。。。。。

再说属性本身就是对方法的封装

这题得要看侧重点
速度 ---属性
获取速度 ---方法
实时速度 ---事件委托
polk6 2011-09-07
  • 打赏
  • 举报
回复
库存也是会变化的,那属于属性还是方法?
低头思蚊香 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 king_827 的回复:]
一辆汽车,要获取它行使中的速度,应该理解为:

A,速度为汽车的属性,所以获取的是汽车的一个属性.
Car model = new Car();
return model.Speed;

B,速度是不断变化的,所以不能理解为属性,只能通过方法来获取.
Car model = new Car();
return model.speed();

哪个才是最好的答案?或另有想法?
……
[/Quote]
错在“只能”上了
这题真没意义
风骑士之怒 2011-09-06
  • 打赏
  • 举报
回复
[Quote=引用 34 楼 king_827 的回复:]
考官最后说
并没有要求答案有多准确,而是想看看我对事物的分析与分解能力.
对于一个普通的事物能发掘多少细节.

而我的答案也很普通:
速度本身并不是属性.
要硬要说是一属性,那么应该附加在运动之上.
交通工具都拥有运动这个共有特性
然后不同种类的交通工具有不同的运动类型.
而运动本身才能反应速度.

最后考官说我错了.就这样.
[/Quote]
我怎么感觉你的这个回答有点道理呢,,
加载更多回复(39)

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧