小弟最近自学java,遇到小问题求大神指点

kaiseer8828 2013-12-13 03:48:10
有一游戏类game,类中has a 一个目标实例对象target,target中有一个实例对象int数组代表位置。 游戏流程为,用户输入一个数组,判断是否击中目标。
问题来了,我在game中写了一个方法isFire,参数为用户输入的值,但是在实现时,我想到了两种解决办法。虽然都可以正常运行使用,但我总觉得是有区别的,但自己又说不清楚。望众大神指点一下,小弟不胜感激。
小弟的方法一:使用target中的get方法,取得target中的数组,然后与传入的数字比较,最后返回结果。
小弟的方法二:将具体的逻辑实现推给target,在target中实现一个比较方法,参数为int,逻辑为将int与 target的数组比较,然后返回结果。game中的方法isFire直接调用target中的比较方法。
哪个方法好点,区别在哪里啊?求大神指点。一个同学告诉我第二种才是面向对象是不是真的啊?
...全文
436 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
kaiseer8828 2013-12-25
  • 打赏
  • 举报
回复
7楼基本猜中了 , 其实是headfirst java 里的例子 ,哈哈。 可是在这一步调用上,我的想法竟然和书上的不一样。。 是不是我又面向过程了捏。。
ybyq_xyl 2013-12-23
  • 打赏
  • 举报
回复
坦克大战。。。
lishikai500 2013-12-21
  • 打赏
  • 举报
回复
我猜是海盗船游戏
kaiseer8828 2013-12-20
  • 打赏
  • 举报
回复
引用 5 楼 wenchenyi 的回复:
早就不做开发了,转行修打印机 修电脑去了
吃不饱啊
「已注销」 2013-12-16
  • 打赏
  • 举报
回复
早就不做开发了,转行修打印机 修电脑去了
kaiseer8828 2013-12-16
  • 打赏
  • 举报
回复
引用 3 楼 ZuxiangHuang 的回复:
[quote=引用 2 楼 kaiseer8828 的回复:] [quote=引用 1 楼 ZuxiangHuang 的回复:] 我的想法。 面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为 首先游戏game,对象有什么属性,什么方法。 根据你的描述,geme有一个目标target,当然肯定有个play方法。 目标有一个数组属性。从你描述,目标应该只有提供数组的方法。 还有输入。目标应该没有输入功能,游戏也没。 只有player才有,玩家才有。 那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。 你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。 也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。 现在清楚了。 Target int[] arr; public int[] getArr(); Game Target target; private isFire(); public void play(input){isFire(target.getArr, input)//做判断} Player Game game; private int input(); game.play(input);
谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire(); public void play(input){isFire(target.getArr, input)//做判断}) 为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗? 大神告诉我呗,谢谢[/quote] 方法的规则,一个方法做一件事。不要在乎方法多。 在说,play方法的规则我可能会变化,这样我就改下调用就好了。 深层次考虑,如果现在是否击中的判断改规则了, 那么把game 抽象化,这时game是个抽象类。照样提供一个public 的play方法。还提供一个受保护的isFire()抽象方法方法。play方法还是调用isFire(); 这时写个判断击中这个具体游戏的实现类,继承game类,实现isFire()方法。 这样完成后,如果后续要加规则,我不用改原来的代码,只要加一个具体实现类,继承game,实现isFire()方法。就可以完成扩展。[/quote] 谢谢大神,真给力
zuxianghuang 2013-12-15
  • 打赏
  • 举报
回复
引用 2 楼 kaiseer8828 的回复:
[quote=引用 1 楼 ZuxiangHuang 的回复:] 我的想法。 面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为 首先游戏game,对象有什么属性,什么方法。 根据你的描述,geme有一个目标target,当然肯定有个play方法。 目标有一个数组属性。从你描述,目标应该只有提供数组的方法。 还有输入。目标应该没有输入功能,游戏也没。 只有player才有,玩家才有。 那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。 你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。 也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。 现在清楚了。 Target int[] arr; public int[] getArr(); Game Target target; private isFire(); public void play(input){isFire(target.getArr, input)//做判断} Player Game game; private int input(); game.play(input);
谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire(); public void play(input){isFire(target.getArr, input)//做判断}) 为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗? 大神告诉我呗,谢谢[/quote] 方法的规则,一个方法做一件事。不要在乎方法多。 在说,play方法的规则我可能会变化,这样我就改下调用就好了。 深层次考虑,如果现在是否击中的判断改规则了, 那么把game 抽象化,这时game是个抽象类。照样提供一个public 的play方法。还提供一个受保护的isFire()抽象方法方法。play方法还是调用isFire(); 这时写个判断击中这个具体游戏的实现类,继承game类,实现isFire()方法。 这样完成后,如果后续要加规则,我不用改原来的代码,只要加一个具体实现类,继承game,实现isFire()方法。就可以完成扩展。
kaiseer8828 2013-12-14
  • 打赏
  • 举报
回复
引用 1 楼 ZuxiangHuang 的回复:
我的想法。 面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为 首先游戏game,对象有什么属性,什么方法。 根据你的描述,geme有一个目标target,当然肯定有个play方法。 目标有一个数组属性。从你描述,目标应该只有提供数组的方法。 还有输入。目标应该没有输入功能,游戏也没。 只有player才有,玩家才有。 那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。 你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。 也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。 现在清楚了。 Target int[] arr; public int[] getArr(); Game Target target; private isFire(); public void play(input){isFire(target.getArr, input)//做判断} Player Game game; private int input(); game.play(input);
谢谢2楼大神 ,讲的真好,可是小弟还有一个地方不明白,(private isFire(); public void play(input){isFire(target.getArr, input)//做判断}) 为何这里要做一个private的isFire()方法与play()方法分开?都写在play()方法里不一样吗? 大神告诉我呗,谢谢
zuxianghuang 2013-12-13
  • 打赏
  • 举报
回复
我的想法。 面向对象,首先要弄清楚有什么对象,对象有什么属性,有行为 首先游戏game,对象有什么属性,什么方法。 根据你的描述,geme有一个目标target,当然肯定有个play方法。 目标有一个数组属性。从你描述,目标应该只有提供数组的方法。 还有输入。目标应该没有输入功能,游戏也没。 只有player才有,玩家才有。 那么应该有个玩家对象。玩家有个输入方法。还要有个game对象,玩什么游戏。 你要的判断是否击中目标,这个应该由game对象来完成。这个流程就是游戏的核心。 也game才有资格。也就是play方法。但是他需要玩家传入一个输入值。 现在清楚了。 Target int[] arr; public int[] getArr(); Game Target target; private isFire(); public void play(input){isFire(target.getArr, input)//做判断} Player Game game; private int input(); game.play(input);

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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