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); } }