第一个: public class Microwave{ private int doorStaus; private int heatStatus; private Food food;public void openDoor(){ if(doorStatus==0)//0为门正关着 { if(status==1)//0为未加热且 System.out.println("对不起,正在加热,不能开门"); }else{ //相关关门代码 }
}public void heat(Food food){ if (food.hasShell()==true) System.out.println("对不起,带壳的不能加热"); else //相关加热代码 }}
写个微波炉类,包含一些基本属性,根据需求来定 比如:boolean open_flag boolean working_flag int size int power String model ... doing(){...} ... 然后new出来的微波炉实体,去对付各种食物和情况 至于食物,既然要分带不带皮之类,就写个食物接口,实现不同的食物 一定要把描述的东西写成oo思想,不要说什么if判断,if这种谁不会写啊
要考虑的比较全的话还是有些工作的,随便写的可能有些地方有误 public class MicoroWaveOven { private String doorState=null; private boolean isPowerOn=false; private Food cookingFood=null;
public void fire(Food food){ if(!this.isPowerOn) return; if(food==null) return;
public void openDoor(){ if(cookingFood==null ||cookingFood.getState()==FoodState.COOKED){ this.doorState="opened"; }else{ alert("食物正在加热中请稍后"); } }
public void on(){ this.isPowerOn=true; }
public void off(){ this.isPowerOn=false; }
public void closeDoor(){ this.doorState="closed"; }
public boolean isDoorOpen(){ return this.doorState.equals("opened"); }
public boolean isDoorClose(){ return this.doorState.equals("closed"); }
public void alert(String message){ System.out.println("警告:"+message); } }interface Food{ public boolean hasShell(); public void changeState(); public FoodState getState(); }enum FoodState{ RARE, HALF_RARE, COOKED, FIRED }
以前csdn上有个庖丁解羊 lz去找找看,给他来个解微波炉完事good luck
看着很有意思,请指教! class Microwave { int power; int size; int container; int color; boolean open double time [] = {1,2,3,4,5,6,7,8,9,}; String model; Person p; public double timeMenu(double time) { for(int i=0; i<time.length(); i++;) { System.out.println("已工作时间:" + time[i] + "min"); heating(new Food()); } } public void heating(Food food) { System.out.println("食物正在加热"); if(p.normal) { System.out.println("I couldn't open the door"); } else { System.out.println("疯子"); } }
} class Food { boolean sikn_food = true; int weigth; int height; int size; int type; } public class Person { boolean normal = true; public boolean judgeFood(Food food) { eye(); } public void eye(Food food){ if(food == skin_food) { System.out.println("这是有皮的食物,不可以在微波炉中加热"); break; } else if(food != skin_food) { System.out.println("这是无皮的食物,可以在微波炉中加热"); handTime(); } } public void handTime() { timeMenu();
} public static void main(String[] args) { Person p = new Person(); p.judgeFood(); }
public class Microwave{
private int doorStaus;
private int heatStatus;
private Food food;public void openDoor(){
if(doorStatus==0)//0为门正关着
{
if(status==1)//0为未加热且
System.out.println("对不起,正在加热,不能开门");
}else{
//相关关门代码
}
}public void heat(Food food){
if (food.hasShell()==true)
System.out.println("对不起,带壳的不能加热");
else
//相关加热代码
}}
比如:boolean open_flag
boolean working_flag
int size
int power
String model
...
doing(){...}
...
然后new出来的微波炉实体,去对付各种食物和情况
至于食物,既然要分带不带皮之类,就写个食物接口,实现不同的食物
一定要把描述的东西写成oo思想,不要说什么if判断,if这种谁不会写啊
public class MicoroWaveOven {
private String doorState=null;
private boolean isPowerOn=false;
private Food cookingFood=null;
public void fire(Food food){
if(!this.isPowerOn) return;
if(food==null) return;
if(this.doorState.equals("opend")){
alert("请先关门!");
return;
}
if(food.hasShell()){
alert("本产品不能烹饪带壳食物!");
openDoor();
return;
}
this.cookingFood=food;
//to-do:另启动线程加热食物
}
public void cookFood(){
if(this.cookingFood==null) return;
while(cookingFood.getState()!=FoodState.COOKED){
cookingFood.changeState();
}
openDoor();
}
public void openDoor(){
if(cookingFood==null
||cookingFood.getState()==FoodState.COOKED){
this.doorState="opened";
}else{
alert("食物正在加热中请稍后");
}
}
public void on(){
this.isPowerOn=true;
}
public void off(){
this.isPowerOn=false;
}
public void closeDoor(){
this.doorState="closed";
}
public boolean isDoorOpen(){
return this.doorState.equals("opened");
}
public boolean isDoorClose(){
return this.doorState.equals("closed");
}
public void alert(String message){
System.out.println("警告:"+message);
}
}interface Food{
public boolean hasShell();
public void changeState();
public FoodState getState();
}enum FoodState{
RARE,
HALF_RARE,
COOKED,
FIRED
}
lz去找找看,给他来个解微波炉完事good luck
class Microwave {
int power;
int size;
int container;
int color;
boolean open
double time [] = {1,2,3,4,5,6,7,8,9,};
String model;
Person p; public double timeMenu(double time) {
for(int i=0; i<time.length(); i++;) {
System.out.println("已工作时间:" + time[i] + "min");
heating(new Food());
}
} public void heating(Food food) {
System.out.println("食物正在加热");
if(p.normal) {
System.out.println("I couldn't open the door");
} else {
System.out.println("疯子");
}
}
}
class Food {
boolean sikn_food = true;
int weigth;
int height;
int size;
int type;
}
public class Person {
boolean normal = true; public boolean judgeFood(Food food) {
eye();
} public void eye(Food food){
if(food == skin_food) {
System.out.println("这是有皮的食物,不可以在微波炉中加热");
break;
} else if(food != skin_food) {
System.out.println("这是无皮的食物,可以在微波炉中加热");
handTime();
}
} public void handTime() {
timeMenu();
} public static void main(String[] args) {
Person p = new Person();
p.judgeFood();
}
我们来分析一下这个问题
用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。
1,微波炉是一个对象,它应该是一个公共对象,大家都可以用。
2,注意物品正加热时不能开门,我们可以理解,这个对象在执行时,是排它的,唯一的
3,带皮带壳食物不能被加热。这个对象不是万能的,有些事它是不可以做的。
因此,我们的对象是公共对象,它有一个开关(属性),同时有开关方法,并且是单例程序,并且有同步约束,在方法体里加一些判断, 这个过程就OK了。
// 食物基类,所有食物继承之
abstract class Food {
}// 带壳接口,所有带壳接口实现之
interface HaveShell {
}// 带皮,同上
interface HaveSpin {
}// 是否可以加热
interface Limited {
boolean enableHeat(Food food);
}// 加热具体实现
// 可以进行不同实现,如有一天,发明一种新微波炉可以加热带壳的,就可以重新写个实现类
class EnableHeatImpl implements Limited {
public boolean enableHeat(Food food) {
if (food instanceof HaveShell || food instanceof HaveSpin)
return false;
else
return true;
}
}// 一种特殊食物,带皮又带壳。
class MyFavorite extends Food implements HaveShell, HaveSpin {
}// 微波炉接口
interface Microwave {
void heatUp(Food food); boolean openDoor();
}// 微波炉实现类,美的微波炉
class MicrowaveMedia implements Microwave {
private static Food food; @Override
public synchronized void heatUp(Food food) {
}
@Override
public boolean openDoor() {
return food == null;
}
}
我TMD用JS创建过表格,不过用笔不会写。
第十一章。Mark IV咖啡壶
public class Test
{ public static void main(String[] arges){ Food egg = new Food("egg",true);
Food milk = new Food("milk",false);
Weibolu myFamily = new Weibolu();
myFamily.open();
myFamily.put(egg);
myFamily.heat(); myFamily.open();
myFamily.put(milk);
myFamily.heat();
}
}
//用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。
class Weibolu
{
boolean isHeat = false;
java.util.ArrayList<Food> foodList = new java.util.ArrayList<Food>();
synchronized void open() {
if (!isHeat)
{
System.out.println("可以打开!");
}
else {
System.out.println("正在加热,不可以打开!");
}
} void heat() {
if (foodList.size() == 0)
{
System.out.println("没有食物不能加热!");
return;
}
isHeat = true;
System.out.println("正在加热");
try
{
wait(10000);
}
catch (Exception ex)
{
}
System.out.println("加热完毕!");
isHeat = false;
} synchronized void put(Food food) {
if (food.isHavePK)
{
System.out.println(food.name + ",带皮的不能被加热!");
}
else {
System.out.println(food.name + ",能被加热!");
foodList.add(food);
}
}
void takeAll() { }};class Food
{
String name;
boolean isHavePK;
public Food(String n,boolean pk) {
name = n;
isHavePK = pk;
}
};
applerockhool兄的想法很好啊
普通可以加热的实现一个heatable接口
带皮壳的不予实现Microwave:heatUP(heatable food)
public void heatUp(Food food) {
if(food instanceof heatable) {
print("正在加热");
}else {
throw new RunTimeException("无法加热");
}}
第二题用工厂方法模式,抽象父类有默认的冰的功能,然后抽象出不同的东西进行分离到对应类型的冰箱中
这个好像相同部分不是很明确高手来指点我下
正如楼上有几位所说,冰箱问题应该用状态模式
private boolean doorState; // 微波炉门状态 // Heatable 为一个接口,凡是能够加热的食物都要实现这个接口!
public void heat(Heatable food){
if(food.cooked){
// 如果食物熟了,更改门为可以打开状态!
doorState = true;
} else doorState = false;
} public boolean canOpen(){
return this.doorState;
}
public void open(){
if(canOpen){
// 开门代码
} else{
// 不能开门代码
}
}
}
引用 16 楼 aptweasel 的回复:
关于冰箱的问题说的不清楚,我发表一下我对微波炉的看法,我觉得它真的能看出一个程序员的水平高低
我们来分析一下这个问题
用java写一个微波炉,注意物品正加热时不能开门,带皮带壳食物不能被加热。
1,微波炉是一个对象,它应该是一个公共对象,大家都可以用。
2,注意物品正加热时不能开门,我们可以理解,这个对象在执行时,是排它的,唯一的
3,带皮带壳食物不能被加热。这个对象不是万能的,有些事它是不可以做的。
因此,我们的对象是公共对象,它有一个开关(属性),同时有开关方法,并且是单例程序,并且有同步约束,在方法体里加一些判断, 这个过程就OK了。
很有道理,受教了!!