当前位置: 首页 > news >正文

面向对象设计(一)

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

相关文章:

  • shell中的运算
  • FPGA时序分析与约束(8)——时序引擎
  • KMP算法详解
  • VBA宏查找替换目录下所有Word文档中指定字符串
  • VScode 自定义主题各参数解析
  • 记录CMake一键编译和生成的指令
  • Android 主题 vs 样式
  • vscode markdown 使用技巧 -- 如何快速打出一个Tab 或多个空格
  • npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。
  • 阻塞队列.
  • 【PC电脑windows-学习样例generic_gpio-ESP32的GPIO程序-基础样例学习】
  • 3 ALS算法的优化
  • NodeJS回调地狱及Promise优化
  • 【洛谷 P5738】【深基7.例4】歌唱比赛 题解(映射)
  • 并发编程 -常用并发设计模式
  • Android交互
  • css的样式优先级
  • export和import的用法总结
  • extract-text-webpack-plugin用法
  • IDEA 插件开发入门教程
  • JS专题之继承
  • MySQL的数据类型
  • spring boot下thymeleaf全局静态变量配置
  • 不发不行!Netty集成文字图片聊天室外加TCP/IP软硬件通信
  • 规范化安全开发 KOA 手脚架
  • 回顾 Swift 多平台移植进度 #2
  • 计算机常识 - 收藏集 - 掘金
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 栈实现走出迷宫(C++)
  • 最简单的无缝轮播
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​flutter 代码混淆
  • #define 用法
  • #Spring-boot高级
  • (arch)linux 转换文件编码格式
  • (vue)el-checkbox 实现展示区分 label 和 value(展示值与选中获取值需不同)
  • (笔试题)分解质因式
  • (独孤九剑)--文件系统
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (力扣)循环队列的实现与详解(C语言)
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (顺序)容器的好伴侣 --- 容器适配器
  • (学习日记)2024.01.09
  • .bat批处理(六):替换字符串中匹配的子串
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @EnableWebMvc介绍和使用详细demo
  • []我的函数库
  • [BUG]vscode插件live server无法自动打开浏览器
  • [BZOJ]4817: [Sdoi2017]树点涂色
  • [c]统计数字
  • [codevs] 1029 遍历问题
  • [COI2007] Sabor