类与类依赖关系,实例;

 

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

  

 

    

  

 

 

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/12827197.html