面向对象设计(一)

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{
    //显卡

    @Override
    public void start() {
        System.out.println("显卡启动");
    }

    @Override
    public void stop() {
        System.out.println("显卡关闭");
    }
}
class SoundCard implements Device{
    //声卡

    @Override
    public void start() {
        System.out.println("声卡启动");
    }

    @Override
    public void stop() {
        System.out.println("声卡关闭");
    }
}
class NetCard implements Device{
    //网卡

    @Override
    public void start() {
        System.out.println("网卡启动");
    }

    @Override
    public 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();
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值