黑马程序员---思想是最重要的!!!

来源:互联网 发布:淘宝助理批量上架 编辑:程序博客网 时间:2024/04/30 12:52

---------------------- android培训java培训、期待与您交流! ------------------------

 学习java完全是在关门造车的情况下完成的,看了很多的书《think in java》 、《core java》、《设计模式》等等,这些都是一个前辈开列的书单。

还跟着网易的公开课看了斯坦福大学的《编程方法》,甚至连他的作业也做了很多,虽然代码写的不多,经验基本为零

但是和人吹起来,感觉自己还蛮自信的。就连几天前做的基础测试,也是信心满满。但是看完张孝祥老师的那个交通灯管理系统视频,我彻底hold不住了!!!!

原来自己以为已经掌握了面向对象编程,现在才知道自己根本就是连面向对象的门都没入!!!

再看看自己的基础测试,虽然每道题都回答了,但是连一点面向对象的味道都没有,用的编程思想还是自己大学学c语言时的水平

惭愧啊,惭愧啊!!!

知耻近乎勇,发现不足是进步的前提,以后我要多加思考和练习。下面是我一直琢磨的一个问题,明白了什么是面向对象编程

终于有了思路:问题是这样的,我有时下中国象棋,马能否一次不重复的经过棋盘上所有的点?怎样用计算机编程来实现?

解决思路是:首先创建三个对象,Horse和ChessBoard,一个辅助的对象Point

坐标点的对象Point

马的对象horse

public class Horse{

private Point curPosition;//当前位置

private Point backStep;//上一步位置

private ChessBoard board=new ChessBoard();//持有一个棋盘的对象

 

//一个方法,跳的方法

public void jump(Point curPosition){

 

//先问棋盘,还有没有下一步可以跳

if(有下一步可以跳){

curPosition=board.getNextPoint();

System.out.println("向前跳一步");

//把现在位置设为当前位置,刚才的位置设为上一步位置

backStep=curPosition;

//把跳过的位置放入已跳过的集合中

//把当前的位置从可以跳的位置删掉

 

//继续跳

jump(curPosition);

}else{

棋盘所有点都跳完,退出程序//这里可能有大大的问题,如果没有下一步可跳,并且棋盘没有跳完,怎么办?

//应该回到上一步,再选择一条新路

 

        }

}

棋盘的对象ChessBoard

public class Board{

属性1 棋盘所有点的坐标,是个set

属性2 马已跳过的点的坐标,也是一个set

属性3 马还没有跳过的坐标,是个set

属性4 马下一步可以跳的坐标,是个set

 

setter和getter方法

 

方法一:计算马下一步可以跳的坐标,以马的当前坐标为参数

public set  canJumpPoints(Point currentPoint){

//计算两个点距离就可以了,因为马走日,如果小方格的边长为一

那么利用勾股定理很容易计算下一步可以跳的点

return set;

}

方法二:给马一个下一步可以跳的点的坐标,从可以跳的坐标中,随机选取一个

public Point getNextStep(参数为下一步可以跳的点的集合){

//用一个随机函数实现

}

}

 

必须要说明的是:上面说的都是思路,我还没有把问题解决:这里主要是想练习

一下如何用面向对象来思考问题!

顺便说一句,这个问题最大的难处是随后马跳的策略,也就是算法问题,这里就不详细说了!!!

我是新手,欢迎指正

 

 

--------------------android培训java培训、期待与您交流! ----------------------

原创粉丝点击