java 类依赖关系_类与类依赖关系,实例;

04438edc3d27b38d9e1afbf54304a1d8.png

de0e7ef84336c299b08a476fee35ac4d.png

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

}

}

编译执行

43b8f864ef37a17446efbe1b4ee3faf3.png

5d1037ac85af384973f299bc8e88dcb1.png

cf0562b32abd58c2622d2585d57625ab.png

分析思路:

1.分析一共有几个具体的类;

机房 电脑 学生;

2.分析类和类之间的关系

学生--电脑 依赖关系

机房--电脑 聚合关系

机房--学生 依赖关系

3.分别描述3个类;

电脑;属性--状态;方法--被打开,被关闭,被使用;

机房;属性--电脑;方法--欢迎学生进来;

学生;方法--使用电脑;

4.测试

创建对象 对象去做事情;

8dcf63afbe1d4504fcf267a79bc258d8.png

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

}

}

f734a620a41978a7b67ff50610c770a9.png

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[i]=new Computer(i+1);

}

}//代码块,给每台电脑编号//12345

public void welcomeStudent(Student aa){

String bb=aa.getName();//获取学生名字

System.out.println(bb+"学生欢迎您来机房");

//学生找一台关闭的电脑

for(int i=0;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

Student y=new Student(name[i]);//春天

x.welcomeStudent(y);

}

}

}

a1919e0aa878386dac73d2ae22a2bbb1.png

8c9c639cb7e957d0e0827d69dc5a50ea.png

ad756de07c92720b5047614ea18d9e5f.png

d59aefdf53f62d38ffadde082274e7c3.png

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)

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

}

}

d24d96ec9ad89e8268515c60f6de09e2.png

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值