代码题(用oop的思想编码,注意代码规范)用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。用Java写一个冰箱,注意家用冰箱多数分为冷冻柜和冷藏柜两个柜(冰箱随机)如题,就是要用面向对象的方式写代码,我怎么看不出来怎么写,比如第二题,我一个接口然后具体类实现接口完事,结果被鄙视,无情鄙视啊这是某某的面试题,大家各抒己见!!!abstract class Food {
boolean pike = false;
  boolean qita = true;
}class WeiBoLu extends Food{
  boolean calefaction = true;
  boolean kaimen;
boolean guanmen;

public String c(boolean b) {
if(b == calefaction) {
guanmen = true;
if(calefaction == guanmen) {
return "食品加热不能开门";


else {
return "食品不能加热";
}
}
}public class OOP {
public static void main(String args[]) {
System.out.println(c(qita));
}
}

解决方案 »

  1.   

    用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。中蕴含着几个要素
    首先就类而言
         应该有家电(微波炉)
         食物
    就动作而言
         微波炉可以开门
         微波炉可以加热食物
    而食物的皮跟壳,可以看作食物的属性。
    你当然也可以把皮跟壳也抽象成类。至于怎么写,楼主应该重来一遍。首先要搞好 is-a 和 has-a然后再来设计你的类和类拥有的属性和方法。
      

  2.   

    class Food {
    int pike = 0; //带皮壳的食物为0
    int other = 1; //不带皮壳的其他食物为1
    }class WeiBoLu {
    boolean calefaction; //定义一个加热属性
    boolean lid; //定义一个微波炉盖子的属性

    public String c(int food) {
    if(food == 0 || food == 1) {
    if(food == 0) {
    return "带皮壳的食物不能加热"; 
    }
    if(food == 1) {
    calefaction = true;
    if (calefaction = true) {
    lid = false;
    return "食物正在加热不能开门";
    }
    }
    } return "不是食物";
    }
    }public class OOP {
    public static void main(String args[]) {
    WeiBoLu wbl = new WeiBoLu();
    System.out.println(wbl.c(0));
    }
      

  3.   


    public class Food {
    private boolean rind = false; // private boolean crust = false; public Food(boolean rind, boolean crust) {
    this.rind = rind;
    this.crust = rind;
    } public boolean isRind() {
    return rind;
    } public void setRind(boolean rind) {
    this.rind = rind;
    } public boolean isCrust() {
    return crust;
    } public void setCrust(boolean crust) {
    this.crust = crust;
    }
    }
    public class MicrowaveOven extends Thread {
    private Food food;
    private long time = 60 * 1000;
    private boolean doorCloseState; //false为打开,true为关闭
    private long timeCount=0; public Food getFood() {
    return food;
    } public void setFood(Food food) {
    System.out.println("放入食物...");
    this.food = food;
    } public long getTime() {
    return time;
    } public void setTime(long time) {
    System.out.println("设置加热时间...");
    this.time = time;
    } public void open() {
    doorCloseState=false;
    System.out.println("MicrowaveOven is opening..");
    } public void close() {
    doorCloseState=true;
    System.out.println("MicrowaveOven is closed!");
    } public void run() {
    if(doorCloseState==false){
    System.out.println("请先关微波炉的门...");
    return; // 结束处理
    }

    if (food.isCrust() || food.isRind()) {
    System.out.println("带皮带壳的食物不能加热...");
    return; // 结束处理
    }

    System.out.println("食物加热中...");
    while(true){
    try {
    if(timeCount>=time)break; // 处理时间达到则退出
    sleep(1000); 
    timeCount+=1000;
    System.out.println("处理了"+(timeCount/1000)+"秒.");
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }

    System.out.println("Food is OK...");
    }
    }
    public class OOP {
    public static void main(String[] args) {
    Food food = new Food(false, false); //无皮无壳食物
    long time = 10000; // 设置为10分钟(根据内容来改) //10 * 60 * 1
    MicrowaveOven mo = new MicrowaveOven();
    mo.open(); // 打开门
    mo.setFood(food); // 放入食物
    mo.setTime(time); // 设置时间
    mo.close();  //如果注释此行则在加热时会提前返回
    mo.run(); // 开始加热

    mo.open();
    }
    }
      

  4.   

    唔,我觉得第一道题考的是多线程,在开始加热的时候启动这个线程,把门lock住。
      

  5.   

    微波炉是线程,很难理解。
    张家的微波炉加热不会影响到李家的微波炉开门。
    就是说个个微波炉对象之间没有影响也没有交互。
    如果用线程解的话,线程的启动会交给jvm处理。
    并不是立即开始的。有哪家的微波炉点开始按钮后还要等一会儿启动呢。
    所以,一个标识位就足够了。
    有人给我解释一下用线程的道理吗?