zoukankan      html  css  js  c++  java
  • 类与类依赖关系,实例;

     

     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!!!
  • 相关阅读:
    基于雪花算法的单机版
    Spring cloud gateway自定义filter以及负载均衡
    logback转义符与MDC
    录音地址文件保存
    maven加载本地jar
    ES Log4J配置信息
    java线程池
    openstreetmap的数据下载
    php更新版本后(路径更改后)要做的调整
    重启IIS
  • 原文地址:https://www.cnblogs.com/canglongdao/p/12827197.html
Copyright © 2011-2022 走看看