4个java文件:猪(Pig类);农夫养猪(返回Pig类型);屠夫杀猪(传入参数为Pig类型);java主方法程序运行的入口;
java中使用到了包,方便类的查找和使用;
各个java文件代码如下:
package relyon; public class Farmer{ public Pig raise(int month){ Pig aa=new Pig("黑猪");//依赖 aa.growUp(month); return aa; } }//参数几个月,返回值一头猪;
package relyon; public class Butcher{ public void killPig(Pig aa){ System.out.println("屠夫开始杀猪"); int tizhong=aa.getWeight(); String name=aa.getName(); System.out.println(name+"体重:"+tizhong); aa.beKilled(); } }
package relyon; public class Pig{ public String name; public int weight=20; public Pig(){ } public Pig(String name){ this.name=name; }//构造方法; public void beKilled(){ System.out.println(name+"好惨"); } public void growUp(int month){ for(int i=1;i<=month;i++){ weight*=2; } }//每月体重是上一个月的2倍;长的过程; public int getWeight(){ return weight; }//查看体重; public String getName(){ //this.name=name; return name; } }
package relyon; public class Test{ public static void main(String[] args){ Farmer xixi=new Farmer(); Pig zhuzhu=xixi.raise(3); Butcher qq=new Butcher(); qq.killPig(zhuzhu); } }
编译执行
分析思路:
1.分析一共有几个具体的类;
机房 电脑 学生;
2.分析类和类之间的关系
学生--电脑 依赖关系
机房--电脑 聚合关系
机房--学生 依赖关系
3.分别描述3个类;
电脑;属性--状态;方法--被打开,被关闭,被使用;
机房;属性--电脑;方法--欢迎学生进来;
学生;方法--使用电脑;
4.测试
创建对象 对象去做事情;
package student; public class Computer{ private int number;//电脑编号; private boolean used=false;//true 开着的; public Computer(){ } public Computer(int number){ this.number=number; }//构造方法重载; public void beOpen(){ used=true; System.out.println("开机成功"); } public void beUsing(){ System.out.println("正在被使用"); } public void beClose(){ used=false; System.out.println("关机成功"); } }
package student; public class MachineRoom{ public Computer cc=new Computer(1); public void welcomeStudent(Student aa){ String bb=aa.getName();//获取学生名字 System.out.println(bb+"学生欢迎您来"); aa.useComputer(cc); } }
package student; public class Student{ private String name;//名字 public Student(){}; public Student(String name){ this.name=name; }//构造方法重载; public String getName(){ return name; }//获取名字 public void useComputer(Computer aa){ System.out.println(name+"学生开始使用电脑啦"); aa.beOpen(); aa.beUsing(); aa.beClose(); }//学生使用电脑 }
package student; public class Test{ public static void main(String[] args){ MachineRoom x=new MachineRoom(); Student y=new Student("夏雨"); x.welcomeStudent(y); } }
5个学生陆续进入机房;
package student; public class Computer{ private int number;//电脑编号; private boolean used=false;//true 开着的; public Computer(){ } public Computer(int number){ this.number=number; }//构造方法重载; public int getNumber(){ return number; }//获取编号 public boolean isUsed(){ return used; }//查看状态; public void beOpen(){ used=true; System.out.println(number+"号电脑,开机成功"); } public void beUsing(){ System.out.println(number+"号电脑,正在被使用"); } public void beClose(){ used=false; System.out.println(number+"号电脑,关机成功"); } }
package student; public class MachineRoom{ public Computer[] cc=new Computer[5];//电脑数组 { for(int i=0;i<cc.length;i++){ cc[i]=new Computer(i+1); } }//代码块,给每台电脑编号//12345 public void welcomeStudent(Student aa){ String bb=aa.getName();//获取学生名字 System.out.println(bb+"学生欢迎您来机房"); //学生找一台关闭的电脑 for(int i=0;i<cc.length;i++){ System.out.println("==="+cc[i].isUsed()+"==="); if(!(cc[i].isUsed())){ //false, aa.useComputer(cc[i]);// break; } }//思考,每台电脑的开机/关机,保存在哪里?这个开机/关机,是Computer类属性;每台电脑默认是false;当调用weblcomStudent方法时,可能被修改;然后存储在Computer引用类型的cc[i]变量中; } }
package student; public class Student{ private String name;//名字 private int RP=(int)(Math.random()*10); public Student(){}; public Student(String name){ this.name=name; }//构造方法重载; public String getName(){ return name; }//获取名字 public void useComputer(Computer aa){ System.out.println(name+"学生开始使用电脑啦"); aa.beOpen(); aa.beUsing(); if(this.RP<5){ System.out.println(name+":人品极差,不关电脑"); }else{ aa.beClose(); } }//学生使用电脑 }
package student; public class Test{ public static void main(String[] args){ MachineRoom x=new MachineRoom(); String[] name={"春天","夏天","秋天","冬天","夏雨天"}; for(int i=0;i<name.length;i++){ Student y=new Student(name[i]);//春天 x.welcomeStudent(y); } } }
package velometer; public class Car{ private int speed;//小车速度 public Car(){ } public Car(int speed){ this.speed=speed; }//构造方法重载; public int getCarSpeed(){ return speed; }//获取小车速度; }
package velometer; public class PoliceCar{ private int speed;//警车速度 public PoliceCar(){} public PoliceCar(int speed){ this.speed=speed; }//构造方法重载; public void chase(Car a){ //传参,参数为Car类型 int carspeed=a.getCarSpeed();//可直接获取,不用创建对象;//获取小车速度; if(speed>carspeed){ int time=100/(speed-carspeed); System.out.println(time+"s后警车追上小汽车"); }else{ System.out.println("小汽车跑太快了,追不上"); } }//追车; }
package velometer; public class Velometer{ public int stime;//标准时间 public Velometer(){} public Velometer(int time){ stime=time; }//构造方法重载; public void isChase(Car x){ int carspeed=x.getCarSpeed();//获取小车速度 if((100/carspeed)<stime){ PoliceCar y=new PoliceCar(40); y.chase(x); }else{ System.out.println("未超速"); } }//判断是否超速,是否追车; }
package velometer; public class Test{ public static void main(String[] args){ Car a=new Car(80); Velometer b=new Velometer(5); b.isChase(a); } }