Java面向对象程序设计
在MOOC学习的东西。
千树line
csdn不再更新,目前已转置博客园
展开
-
控制反转
城堡的Handler类在第5周的城堡程序那里,我们做的Handler是需要在构造的时候注入Game的。那么,在学习了内部类之后,能否用Game的内部类来实现这些Handler呢?应该怎么做? public Game() { // handlers.put("bye", new HandlerBye(this));// handlers.put("help", new HandlerHelp(this));// handlers.put("go",ne原创 2020-08-05 16:06:35 · 122 阅读 · 0 评论 -
狐狸与兔子,代码解析
看懂代码从main函数开始这是主类package foxnrabbit;import java.util.ArrayList;import javax.swing.JFrame;import field.Field;import field.View;import field.Location;import animal.Animal;import animal.Fox;import animal.Rabbit;import cell.Cell;public class原创 2020-07-31 18:28:57 · 1423 阅读 · 3 评论 -
翁恺老师的讨论,狐狸与兔子【0】
Fox.breed()和Rabbit.breed()几乎一样Fox.breed()和Rabbit.breed()几乎一样,有什么好办法修改?注意Fox和Rabbit的breed()返回的具体类型不同。修改之前哪的代码: //Animal类 public abstract Animal breed(); //Rabbit类 @Override public Animal breed() { Animal ret=null; if(sBreedable()&原创 2020-07-30 15:06:01 · 604 阅读 · 0 评论 -
翁恺老师的讨论,细胞自动机【2】
【讨论2】Cell为什么不自己判断邻居情况?为什么不是由Cell自己判断自己的邻居的情况来决定自己是否应该被die或reborn?如果由Cell字简短自己是死亡还是复活,它需要从Field获取一大堆数据,首先,要获取Field的大小来让自己判断位置。然后它要自己定义Field的对象作为自己的成员函数,这样Cell就知道Field的存在,耦合就更紧了在Field里面,他要定义函数,把width和height传给Cell,实现起来很麻烦,因此不再写代码了。能理解就好。...原创 2020-07-29 12:01:59 · 284 阅读 · 0 评论 -
翁恺老师的讨论:细胞自动机【1】
【讨论1】关于Field.getNeighbour()为什么Field.getNeighbour()不直接看Cell.isAlive()来返回一个数字,而是要返回一个数组让外面来数数?代码更改:改之前的Field 和 CellMechine public Cell[] getNeighbour(int row, int col) { ArrayList<Cell> list = new ArrayList<Cell>();//储存细胞 int sum=0;原创 2020-07-29 11:36:41 · 323 阅读 · 0 评论 -
翁恺老师的Java课程,面向对象,细胞自动机的讨论【0】
为什么没有Cell.setAlive()?为什么不是在Cell提供setAlive(boolean)函数?而是采用复杂的die()、reborn()两个函数?上次博客补图(代码关系图:cell修改之后的代码://import java.awt.Color;//测试代码import java.awt.Graphics; public class Cell { private boolean alive = false; // public void die() { alive =原创 2020-07-28 18:54:26 · 388 阅读 · 0 评论 -
细胞自动机代码解析
import javax.swing.JFrame;import cell.Cell;import field.Field;import field.View;public class CellMachine { //看懂代码从 main 函数开始,这是老师数次在课堂上强调的 public static void main(String[] args) { //定义一个30x30的网格 Field field = new Field(30,30); /*---------原创 2020-07-28 12:20:08 · 634 阅读 · 0 评论 -
翁恺老师的作业,面向对象第五周,城堡游戏
更新:给房间添加了动作,你到一个房间里面之后,可以执行相应的动作本次只更新了三个房间的动作,你要是有更好玩的做法,欢迎在评论区留下你的博客。更新方法是用哈市表记录每个房间和对应的动作,另外重构了房间的地图,地图如下:以下为代码:Game类:package custome_castle;import java.util.ArrayList;import java.util.HashMap;import java.util.Scanner;public class Game { priv原创 2020-07-25 18:53:03 · 540 阅读 · 0 评论 -
翁恺老师的Java讨论,面向对象第五周,给HandlerHelp增加可扩展性
代码很简单,前提是要看懂之前的代码.首先在Game类里面添加一个函数 //获取命令函数 public String getHandlers() { StringBuffer sb=new StringBuffer(); for(String s:handlers.keySet()) { sb.append(s); sb.append(" "); } return sb.toString(); }原创 2020-07-24 17:14:55 · 135 阅读 · 0 评论 -
翁恺老师的Java课程,讨论,任意门
城堡游戏的任意门。实现过程很简单,但是我想了一天,操作步骤就是扩展一个Handler类,在Game类里面加一个函数,在Handler里面调用。其实怎么加上去的不重要,重要的是,读懂函数与函数之间的关系,这个代码关系非常复杂,要看关系图才能看懂。这个关系图只能在纸上写,如果不想画关系图,另一个看懂代码的办法就是把每一行都写上注释。三个主类:game类:import java.util.ArrayList;import java.util.HashMap;import java.util.Scanne原创 2020-07-24 16:33:57 · 532 阅读 · 0 评论 -
翁恺老师的Java作业,面向对象第四周
public class MP3 extends Item{ private String singer;//歌手 private String zhuanji;//所属专辑 private String liupai;//所属流派(pop,jazz,classical...) //从Item集成的构造函数 public MP3(String title, int playingTimes, boolean gotIt, String comment,String s,String z原创 2020-07-21 10:30:45 · 354 阅读 · 0 评论 -
翁恺老师的Java作业,面向对象第三周
查找里程(10分)题目内容:下图为国内主要城市之间的公路里程:你的程序要读入这样的一张表,然后,根据输入的两个城市的名称,给出这两个城市之间的里程。注意:任何两个城市之间的里程都已经给出,不需要计算经第三地中转。注意:你并不需要去录入上图的数据,数据是在程序输入中给的。输入格式:首先,你会读到若干个城市的名字。每个名字都只是一个英文单词,中间不含空格或其他符号。当读到名字为“###”(三个#号)时,表示城市名字输入结束,###并不是一个城市的名字。如果记读到的城市名字的数量为n。然后,你会原创 2020-07-19 12:53:22 · 517 阅读 · 2 评论 -
翁恺老师的面向对象作业,第二周
【编程题】有秒计时的数字时钟(10分)题目内容:这一周的编程题是需要你在课程所给的时钟程序的基础上修改而成。但是我们并不直接给你时钟程序的代码,请根据视频自己输入时钟程序的Display和Clock类的代码,然后来做这个题目。我们需要给时钟程序加上一个表示秒的Display,然后为Clock增加以下public的成员函数:public Clock(int hour, int minute, int second);用hour, minute和second初始化时间。public void tic原创 2020-07-17 17:30:24 · 386 阅读 · 3 评论 -
翁恺老师的Java作业,面向对象设计,第一周
* 1.x 关于编程题 分数(10分)题目内容:设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。这个类的构造函数是:Fraction(int a, int b)构造一个a/b的分数。这个类要提供以下的功能:double toDouble();将分数转换为doubleFraction plus(Fraction r);将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。Fraction multi原创 2020-07-16 16:21:51 · 984 阅读 · 0 评论