

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

