我的java学习思路

来源:互联网 发布:mac版的飞秋 编辑:程序博客网 时间:2024/06/17 16:17

写这个主要是因为身边有且不止一个人问过我这个,基本上都是有点基础,然后想学编程然后又一头雾水茫茫然到那种,被问到多了觉得可以写写,以后再有人问就可以直接甩链接,想想都好happy。

注:本人并不是什么大拿只能记录一些自己的心得,看不起的请绕行,另外针对的是有一些基础的所以并不会讲一些很基础的东西,主要是涉及一些思路。

首先由于非科班出身,所以总会有种感觉,好像会一点又好像啥都不会,会一点是因为对于java有些了解,啥都不会是因为你丢点东西过去他就啥都写不出来。

个人认为写代码最重要的是思路,而并不是你学了多少框架,读了多少代码,当然,正常来说既然能读懂很多代码也不会来看我在这扯犊子了是吧。

java是一门面向对象的语言,夸张点说就是万物皆对象,就看你怎么new。但是我不认为刚开始写java的菜鸟能很清楚的切割开对象(从别的语种转行过来的请不要跟我抬杠,手动斜眼)。打个比方说,一个车,对于一个销售汽车的项目来说车就是一个基本对象,你没必要再切割下去,但是如果是一个汽车制造原料的项目,你可能就要把轮子啊方向盘啊引擎啊都切割出来,由他们来组成一个车。

因为个人爱好来说(玩游戏不算爱好?算爱好?管他人怎么说,我觉得算),一般推荐就是,你来写个猜数字吧!

猜数字其实是个很简单的小游戏,大概规则就是一个人出一个随机不重复4位数,另一个人来猜,每次猜一个四位数,出题者给出xAxB,A的意思就是数字也对位置也对,B的意思就是数字对位置不对,x指代的就是符合要求的AB的个数,然后一般有可能会规定猜测次数。大概就是这个样子,如果觉得我讲不清楚的可以百度猜数字。

为啥是猜数字呢,因为这个简单啊,不用做什么ai策略,然后,可以不new对象直接写流水账代码。其实我感觉对菜鸟要求不要太高,能把这个功能先实现,才有可能继续写下去,而不是一开始就new对象new的要死要活然后又不知道啥用。

流水账代码的大概流程其实很简单:1、代码生成思维不重复随机数;2、输入你猜测的数字(刚开始就可以直接从控制台输入,简单粗暴);3、代码判断AB个数并显示;4、判断是否正确并提示,正确结束,不正确判断是否达到次数限制,达到限制结束并提示答案,未到次数限制回到2。

别吐槽为毛不画图因为我懒啊,装visio好烦啊!如果谁有简单粗暴的流程图软件可以告诉我,拜谢!顺便是mac版的。

然后你就可以啥都不管,去他的结构规范对象,先把这个功能给实现了,这个时候还要对每个功能点进行细化,比如产生四位不重复随机数的方式,比如输入的规范,比如结束的判断。对于刚开始学写代码的同学,我的建议是先把思路写下来,然后再一步一步去实现,然后你就会发现你的思路就成了所谓的注释,大概不就是这样?

如果成功把流水账完成了,再来说说我们的对象,程序猿不怕没对象啊!没有就new几个啊!是吧?

猜数字这个游戏,了解规则之后我们就会发现,这是一个双人游戏,而上面的流水账代码可以看出,pc负责的其实是出题者的角色,那么对于猜数字来说我们的对象就有了:出题者,而另一个对象?自然就是玩家咯(啥?你说没人玩?那就你自己玩呗!)。

对于一个对象来说,基本的就是属性跟动作(也就是方法?反正我爱这么叫),对于出题者来说,他的属性大概是:生成的四位数、猜测的次数上限,而动作就是生成四位数、核对四位数、玩游戏,大概的架子如下:

public class TestMaker {// 持有的四位不重复随机数private int[] nums;// 最多猜测次数private int maxTimes;// 产生随机数public void setNums(){}// 核对数字public void checkNums(int[] nums){}// 开始玩public void play(){}}


然后你要做的就是把你的流水账代码一点一点拆开,放入这些动作中,完事了一个对象就完成了。

啥?你说流水账能完成为啥要做成对象?没对象你new个啥子哟?

然后说说我对对象粒度的看法,其实java的对象粒度是基于你这个项目,而不是客观存在的事物,如果你硬要按照客观存在来切,那么很好,请你努力切割到分子之类的玩意,然后发现对你的项目并没有卵用。所以对你的项目来说,最基础的对象就是你所需要使用的最底层的事物,比如说猜数字,对象其实就是2个人,那我们一个人没法玩所以我们只好去new一个出题者,那么基础对象就是出题者。

再说动作,也就是所谓的方法,方法这个东西其实是对一段代码的公共抽取,也是基于你要使用的最低粒度,比方说打拳,你有组合拳1跟组合拳2两种组合,其中都有一个动作是左勾拳,那么左勾拳就可以提取出来作为一个公告的方法也就是一个动作,这样的好处就是打个比方我需要修改这2个组合拳中的左勾拳的时候只需要修改一个地方就好。当然如果你说我就这么一套组合拳而且我打来打去就这一套,那么很好,你就只有这一个方法,没有必要再做细分。

所以我们可以看出,其实对于猜数字来说,对象有且只有一个,那就是出题者,而且动作也只有一套,所以你会觉得流水账代码也可以完成,但是如果稍微复杂点的玩意,你就祈祷吧。

原创粉丝点击