代码题(用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));
}
}
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));
}
}
首先就类而言
应该有家电(微波炉)
食物
就动作而言
微波炉可以开门
微波炉可以加热食物
而食物的皮跟壳,可以看作食物的属性。
你当然也可以把皮跟壳也抽象成类。至于怎么写,楼主应该重来一遍。首先要搞好 is-a 和 has-a然后再来设计你的类和类拥有的属性和方法。
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));
}
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();
}
}
张家的微波炉加热不会影响到李家的微波炉开门。
就是说个个微波炉对象之间没有影响也没有交互。
如果用线程解的话,线程的启动会交给jvm处理。
并不是立即开始的。有哪家的微波炉点开始按钮后还要等一会儿启动呢。
所以,一个标识位就足够了。
有人给我解释一下用线程的道理吗?