面向对象设计(一)
1.模拟计算机主板集成各类板卡
模拟实现如下情形:PC包括主板,主板上有5个PCI插槽,可插装显卡、声卡、网卡等PCI设备。
可以实现在主板启动与关机时,依次启动、关闭主板上的各设备。
要求:
1、给出面向对象的设计(类图);
2、给出Java代码实现。
import java.util.ArrayList;
import java.util.List;class MotherBoard{private List<Device> devices; //主板上的设备public MotherBoard(){this.devices=new ArrayList<Device>(); //设备初始化}public void start(){System.out.println("主板启动");for(Device device:devices){device.start();}}public void stop(){System.out.println("主板关机!");for(int i=devices.size()-1;i>=0;i--){devices.get(i).stop(); //设备依次关机}}public void addDevice(Device device){devices.add(device);}public void removeDevice(Device device){devices.remove(device); //移除设备}
}
interface Device{//设备接口void start(); //启动void stop(); //关机
}
class VideoCard implements Device{//显卡@Overridepublic void start() {System.out.println("显卡启动");}@Overridepublic void stop() {System.out.println("显卡关闭");}
}
class SoundCard implements Device{//声卡@Overridepublic void start() {System.out.println("声卡启动");}@Overridepublic void stop() {System.out.println("声卡关闭");}
}
class NetCard implements Device{//网卡@Overridepublic void start() {System.out.println("网卡启动");}@Overridepublic void stop() {System.out.println("网卡关闭");}
}
public class PciTest {public static void main(String[] args) {MotherBoard motherBoard=new MotherBoard();VideoCard videoCard=new VideoCard();SoundCard soundCard=new SoundCard();NetCard netCard=new NetCard();motherBoard.addDevice(netCard);motherBoard.addDevice(videoCard);motherBoard.addDevice(soundCard);motherBoard.start();motherBoard.stop();}
}
2.赛车游戏
假设某赛车游戏中,汽车有如下内容:车主、品牌、颜色,汽车能够执行启动、前进、后退、停止、熄火等动作。
要求:1、若汽车已经启动,就不能重复启动;
2、若汽车处于熄火状态,就不能执行初启动外的其它动作;
3、能否打印汽车对象信息。
以面向对象完成以上类的设计并使用JAVA语言实现,汽车各功能动作给出提示信息即可。
class Car{//汽车类String owner;String band;String color;boolean isStart; //是否启动public Car(String owner,String band,String color){this.owner=owner;this.band=band;this.color=color;this.isStart=false;}public void start(){if(isStart==true){System.out.println("汽车已经启动了!!");}else{isStart=true;System.out.println("汽车成功启动!");}}public void stop(){if(isStart==true){System.out.println("汽车停止!");}else{System.out.println("汽车未启动或已熄火,无法熄火!");}}public void forward(){if(isStart==true){System.out.println("汽车前进!!");}else{System.out.println("汽车未启动或已熄火,无法前进");}}public void backward(){if(isStart==true){System.out.println("汽车后退!!");}else{System.out.println("汽车未启动或已熄火,无法后退");}}public void turnoff(){if(isStart==true){System.out.println("汽车成功熄火!");isStart=false;}else{System.out.println("汽车未启动,或已经熄火了!");}}public void printCarInfo(){System.out.println("owner:"+owner);System.out.println("band:"+band);System.out.println("color:"+color);System.out.println("isStart:"+isStart);}
}
public class CarTest {public static void main(String[] args) {Car c1=new Car("小明","无敌","红色");c1.printCarInfo();c1.stop();c1.start();System.out.println("------------------");c1.printCarInfo();c1.forward();c1.backward();c1.stop();System.out.println("------------------");c1.printCarInfo();}
}