火星车(面向对象思想编程)
2017-07-04 00:00
190 查看
摘要: 在九宫格内移动,输出坐标,越界了就不移动
1,Test类,可以进行单个命令,也可以进行多个命令
2,MarsCar类
3.MarsMap类
4,Point类
5,Engine类
6,ForwardEngine类
7,BackEngine类
8,LeftEngine类
9,RightEngine类
10,EngineFactory类
1,Test类,可以进行单个命令,也可以进行多个命令
package com.dayuanit.MarsCar.test; import com.dayuanit.MarsCar.Car.MarsCar; public class Test { public static void main(String[] args) { String order = "w"; MarsCar ms = new MarsCar("haha"); //ms.process("w"); ms.processes("w", "s", "d", "g"); } } D:\java312\MarsCar\MarsCarMyselt>javac -d classes src/*.java D:\java312\MarsCar\MarsCarMyselt>java -cp .;classes com.dayuanit.MarsCar.test.Te st w 0 1 s 0 0 d 1 0 g 1 0
2,MarsCar类
package com.dayuanit.MarsCar.Car; import com.dayuanit.MarsCar.map.Point; import com.dayuanit.MarsCar.auto.Engine; import com.dayuanit.MarsCar.factory.EngineFactory; public class MarsCar { private String name; private Point point; private Engine engine; public MarsCar() { } public MarsCar(String name) { this.name = name; this.point = new Point(); } public void processes(String ... orders) { for(String order:orders) { process(order); } } public void process(String order) { System.out.println(order); EngineFactory enginefactory = new EngineFactory(); engine = enginefactory.creatEngine(order); if(null !=engine) { engine.move(point); } System.out.println(point.getXpoint()+ " " + point.getYpoint()); } }
3.MarsMap类
package com.dayuanit.MarsCar.map; import com.dayuanit.MarsCar.map.Point; public class MarsMap{ public static final int MAX_xpoint = 9; public static final int MIN_xpoint = 0; public static final int MAX_ypoint = 9; public static final int MIN_ypoint = 0; public static boolean checkMaxYpoint(Point point) { return MAX_ypoint > point.getYpoint() + 1; } public static boolean checkMinYpoint(Point point) { return MIN_ypoint <= point.getYpoint() - 1; } public static boolean checkMaxXpoint(Point point) { return MAX_xpoint > point.getYpoint() + 1; } public static boolean checkMinXpoint(Point point) { return MIN_xpoint <= point.getYpoint() - 1; } }
4,Point类
package com.dayuanit.MarsCar.map; public class Point { private int xpoint; private int ypoint; public Point() { } public Point(int xpoint, int ypoint) { this.xpoint = xpoint; this.ypoint = ypoint; } public void setXpoint(int xpoint) { this.xpoint = xpoint; } public int getXpoint() { return xpoint; } public void setYpoint(int ypoint) { this.ypoint = ypoint; } public int getYpoint() { return ypoint; } }
5,Engine类
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.Point; public abstract class Engine { public abstract void move(Point point); }
6,ForwardEngine类
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.MarsMap; import com.dayuanit.MarsCar.map.Point; public class ForwardEngine extends Engine { public static final String ORDER = "w"; public void move(Point point) { if(MarsMap.checkMaxYpoint(point)) { point.setYpoint(point.getYpoint() + 1); } } }
7,BackEngine类
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.MarsMap; import com.dayuanit.MarsCar.map.Point; public class BackEngine extends Engine { public static final String ORDER = "s"; public void move(Point point) { if(MarsMap.checkMinYpoint(point)) { point.setYpoint(point.getYpoint() - 1); } } }
8,LeftEngine类
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.MarsMap; import com.dayuanit.MarsCar.map.Point; public class LeftEngine extends Engine { public static final String ORDER = "a"; public void move(Point point) { if(MarsMap.checkMinXpoint(point)) { point.setXpoint(point.getXpoint() -1); } } }
9,RightEngine类
package com.dayuanit.MarsCar.auto; import com.dayuanit.MarsCar.map.MarsMap; import com.dayuanit.MarsCar.map.Point; public class RightEngine extends Engine { public static final String ORDER = "d"; public void move(Point point) { if(MarsMap.checkMaxXpoint(point)) { point.setXpoint(point.getXpoint() + 1); } } }
10,EngineFactory类
package com.dayuanit.MarsCar.factory; import com.dayuanit.MarsCar.auto.ForwardEngine; import com.dayuanit.MarsCar.auto.BackEngine; import com.dayuanit.MarsCar.auto.LeftEngine; import com.dayuanit.MarsCar.auto.RightEngine; import com.dayuanit.MarsCar.auto.Engine; public class EngineFactory { public Engine creatEngine(String order) { Engine engine = null; if(ForwardEngine.ORDER.equals(order)) { engine = new ForwardEngine(); } if(BackEngine.ORDER.equals(order)) { engine = new BackEngine(); } if(LeftEngine.ORDER.equals(order)) { engine = new LeftEngine(); } if(RightEngine.ORDER.equals(order)) { engine = new RightEngine(); } return engine;//返回engine到MarsCar进行判断 } }
相关文章推荐
- JS注入面向对象思想编程(1)
- 【设计分享】一个面向对象思想的perl编程实例
- Java - 面向对象思想进行JDBC编程
- 面向对象思考之类和对象的深入思考与理解,那些我们忽略的编程思想
- 【学习java编程思想】day_1面向对象程序设计的方法
- 编程思想:面向对象和面向过程
- Java面向对象设计编程思想(Essential Object Oriented Software Construction)的本质----百家争鸣 陈光剑
- Android编程思想,面向对象程序设计第四篇——继承(上)重复代码放在基类
- 面向对象思想编程
- 面向对象思想编程
- [置顶] 编程思想:面向对象和面向过程
- 编程思想:面向对象和面向过程
- 面向对象思想编程
- 在VB编程中使用面向对象思想
- java编程面向对象思想:封装,继承,多态
- 编程思想:面向对象和面向过程
- 编程思想:面向对象和面向过程
- 面向对象思想编程
- 封装,面向对象设计编程思想
- Android编程思想,面向对象程序设计第六篇——封装(下)功能模块化,MVC分离