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