首页 > 其他分享 >OO题目集7~8总结

OO题目集7~8总结

时间:2024-06-30 20:10:09浏览次数:21  
标签:OO 总结 题目 引脚 开关 互斥 电路 窗帘

OO题目集7~8总结

​ 最后的两次题目集主要是对家具强电电路模拟程序的迭代设计,第7次题目集添加了电路元件互斥开关和窗帘,第8次则是添加了二极管元件,新的题目对于创新和思考能力以及思维逻辑能力要求更高了,主要是电路元件和电路系统的功能越来越复杂,比较难用代码体现一个完整的电路系统,接下来我将对这两次题目集进行具体分析。

两次题目集实现

题目集7

题目集7在题目集6的基础上增加了电路元件互斥开关和窗帘,窗帘这个电路元件很好实现,通过计算整个电路系统中的总光照就可以算出窗帘的开闭程度,设计一个受控窗帘(ControlledCurtain)类,有属性openRatio为窗帘的开合比例以及totalLux为所有灯光的光照强度总和,当然窗帘也有电阻为15欧,把窗帘看出一个受控元件就行了,但是要注意的是窗帘本身的电压(电压低于50V时,窗帘默认为全开状态),按照这个思路就很好实现受控窗帘这个电路元件。对于我来说,这次题目集的难点就是互斥开关的实现,一开始我理解错了题目,以为互斥开关是存在一条电路中的,和开关一样,只不过有电阻罢了,然而并不是这样,因为老师的意思是互斥开关是跟两条电路有关的,输入样例中#T1:[IN H1-1] [H1-2 D2-1] [D2-2 OUT] #T2:[IN H1-1] [H1-3 D1-1] [D1-2 OUT]中,虽然是两条电路,但两条电路前面那段是一样的,是同一个互斥开关,互斥开关有3个引脚:1个是汇总引脚,另两个是分支引脚。左边是汇总引脚,编号为1;右边两个是分支引脚,右上的输出引脚为2,右下输出引脚为3。图中1、2、3引脚均可以是输入引脚,当1为输入引脚时,2、3引脚为输出引脚;1为输出引脚时,2、3引脚为输入引脚。互斥开关只有两种状态:开关接往上面的2号引脚、接往下面的3号引脚。开关每次只能接通其中一个分支引脚,而另一个分支引脚处于断开状态。互斥开关的默认状态为1、2引脚接通,1、3引脚断开。互斥开关可以也可以反过来接入电路,即汇总引脚接往接地端,两个分支引脚接往电源端。为避免短路,互斥开关设置了限流电阻,12引脚之间默认电阻为5,13引脚之间默认电阻为10。理解了之后我卡住了,因为我是读取一行的内容作为一条串联电路,而两条电路的前一段相同,在读取输入的代码就要改一改了。思考了之后,首先我添加了函数deviceExists用来判断电路中是否已经存在与该电路元件同名的电路元件,并将这个函数放在我将电路元件存入列表的函数中,这样一来,我在获取输入中的电路元件名称时还是一样获取,而接下来就是要判断哪两条电路是通过互斥开关联系起来的,这里我只是写了一串代码判断两条电路前一段或后一段的输入信息是否相同,虽然我知道这样很草率,但我实在想不出别的更好的方法了,按照这样的思路我先是把样例那几个测试点过了,之后也零碎的过了几个测试点,但我也不知道我的代码哪里出问题了,单串联电路-含互斥开关的测试点我一个都没过,之后我按照我的理解改了改,没想到之前过的测试点也过不了了,当时也是比较难受,为什么别人都是改了改代码就过了一大片,之后再找那几个特殊的样例就行了,而我写了很长的代码却只能过零碎的几个,我按照我的想法设计了几个单串联电路含互斥开关的样例,输出了正确的答案,却还是过不了那几个测试点,反而之前能过的还少了几个,看了我的代码许久,也找不到哪里能改的地方,直达答题时间结束我也没找出来,于是我就决定重新写一份代码,因为下一次迭代要用到引脚电压,而我之前的代码都没有考虑这个,所以我干脆就重新写了,以下是我觉得这道题的难点及需要注意的地方:

互斥开关

互斥开关是一种具有三个引脚的控制设备,包括一个汇总引脚和两个分支引脚。其主要特点和难点包括:

  1. 状态切换:互斥开关有两种状态,可以接通2号引脚或3号引脚,但不能同时接通。这意味着每次只能激活其中一个分支,另一个分支则处于断开状态。
  2. 引脚功能:汇总引脚可以是输入也可以是输出,而分支引脚的功能取决于汇总引脚的状态。这种双向性增加了电路设计的复杂性。
  3. 默认状态:互斥开关有默认状态,即1号引脚和2号引脚接通。在模拟程序中,需要正确处理这种默认状态。
  4. 电阻设置:互斥开关设置了限流电阻,以避免短路。12引脚之间默认电阻为5,13引脚之间默认电阻为10。在计算电流和电压时,需要考虑这些电阻值。
  5. 反向接入:互斥开关可以反向接入电路,即汇总引脚接地,分支引脚接电源。这要求模拟程序能够处理这种特殊情况。

受控窗帘

受控窗帘是一种受室内灯光光照强度控制的设备。其主要特点和难点包括:

  1. 工作电压:窗帘的最低工作电压为50V。只有当电压达到或超过这个值时,窗帘才能正常工作。
  2. 光照强度控制:窗帘的开合比例由电路中所有灯光的光照强度总和决定。这要求模拟程序能够计算光照强度,并根据其值来调整窗帘的开合状态。
  3. 多种开合比例:窗帘的开合比例有多个级别,从全开到全闭,这需要模拟程序能够根据光照强度的精确值来确定窗帘的具体开合比例。
  4. 无灯或全灭情况:如果电路中没有灯或所有灯都关闭,窗帘默认为全开状态。模拟程序需要处理这种情况。
  5. 电阻值:窗帘具有一定的电阻值(15),在电路模拟中需要考虑这一点。
  6. 电压与光照强度的关系:需要建立电压与光照强度之间的映射关系,并根据这个关系来控制窗帘的开合。

题目集8

题目集8又开始上难度了,和题目集7相比增加了挺多东西,主要是输入输出内容上的,增加了电路元件二极管,二极管这个东西我了解不多,只知道它具有单向导电性,这是二极管最基本的特性,它允许电流只能沿一个方向流动。当二极管正向偏置时(即正极连接到高电位,负极连接到低电位),二极管导通;当反向偏置时,二极管截止。另外增加了电流限制:电器在工作时,过大的电流会引起电器过热,从而烧坏电路。本次迭代,每个元器件都有最大电流的设置,当实时电流超过最大电流时,在该电器输出信息的最后加入提示“exceeding current limit error”,与前面的信息之间用英文空格分隔。以及短路检测:如果电路出现无穷大的电流造成短路,所有元器件信息不输出,仅输出提示“short circuit error”。还有并联电路中包含并联:构成并联电路的串联电路可以包含别的并联电路。这样一来就要考虑很多种情况了,且要用到电路元件的两端电压,之前并没有考虑到两端电压是不一样,所以这次题目我要改的地方就多了,于是我干脆重新写了一份,这次我优化了许多东西,我直接删去了电路类(Ciucuit),将串联电路和并联电路作为Device类的子类,以及将受控设备和控制设备合并到一个列表里,这样修改之后代码简洁了不少,也删去了很多无用的代码,不至于有时候看不懂,然后再Device类中添加引脚电压和最大电流的属性,以及判断是否超过最大电流的函数,还包括了短路检测,主要是二极管的存在让这个题目多了很多种情况,我设计了二极管类(Diode),以及boolean isConductive来表示二极管的导通状态,还有函数checkConductivity,通过正向导通电压阈值来设置二极管的导通状态,并模拟电流通过二极管时的行为,如果二极管导通,电流可以通过,如果二极管截止,电流为0,之后慢慢分析所有可能的情况并加以实现。以下是我觉得这道题的难点及需要注意的地方:

  1. 二极管的导通与截止逻辑

    • 需要精确模拟二极管的单向导电性,确保电流只能沿允许的方向流动。这涉及到电压比较和二极管状态的更新。
  2. 电流限制的实现

    • 必须为每个元器件设定最大电流限制,并在电流计算时检查是否超出此限制,如果超出,需要给出相应的错误提示。
  3. 短路检测

    • 需要实时监控电路中的电流,一旦检测到由于短路引起的电流无限增大,立即终止程序并给出错误提示。
  4. 并联电路中包含并联的逻辑处理

    • 电路结构可能变得更加复杂,需要正确处理嵌套的并联电路,确保电路连接和电流分配的逻辑正确无误。
  5. 管脚电压的准确计算和显示

    • 需要根据电路的拓扑结构和元器件的特性,准确计算每个管脚的电压,并按照规定的格式输出。
  6. 复杂的电路拓扑结构

    • 电路中可能存在多个串联和并联电路的组合,需要合理组织数据结构,以便于模拟复杂的电路连接。
  7. 输入信息的解析

    • 输入信息可能包含复杂的电路描述,需要准确解析并构建相应的电路模型。
  8. 电压和电流的计算精度

    • 根据题目要求,所有计算应使用double类型以避免精度损失,并在最终输出时采用截尾规则处理小数。
  9. 异常情况的处理

    • 需要考虑各种异常情况,如短路、超出电流限制等,并确保程序能够妥善处理这些情况。
  10. 程序的健壮性和错误处理

    • 程序应能够处理各种不合理或异常的输入情况,不因错误输入而崩溃。
  11. 模块化设计

    • 程序设计应遵循模块化原则,将不同的功能划分为独立的模块,便于开发和维护。
  12. 测试覆盖

    • 需要进行全面的测试,包括单元测试和集成测试,确保所有功能按预期工作,特别是新增加的功能。

总结作业

1.分析和总结

参考第一部分的内容。

2.设计检查

题目集7



题目集8


3.心得体会

在这两次作业中我主要学习到了:1.封装:将数据和方法结合在一起,并对外界隐藏内部细节。2.多态:通过重载和重写实现多态性。3.接口:使用interface定义共享的行为协议。4.异常处理:使用try, catch, finally, throw, throws来处理程序中的异常情况。5.集合框架:使用List, Set, Map等集合类存储和管理数据。

但是,我还有许多地方有待进步,比如测试环节。设计模式也需要抓紧时间学习。

标签:OO,总结,题目,引脚,开关,互斥,电路,窗帘
From: https://www.cnblogs.com/Yyr114/p/18276874

相关文章

  • 基于SpringBoot的超市进销存系统
    你好呀,我是计算机学姐码农小野!如果有相关需求,可以私信联系我。开发语言:Java数据库:MySQL技术:SpringBoot框架工具:MyEclipse、Tomcat系统展示首页首页界面图个人中心个人中心界面图员工管理员工管理界面图供应商管理供应商管理界面图仓库信息管理仓库信息......
  • Hadoop:全面深入解析
       Hadoop是一个用于大规模数据处理的开源框架,其设计旨在通过集群的方式进行分布式存储和计算。本篇博文将从Hadoop的定义、架构、原理、应用场景以及常见命令等多个方面进行详细探讨,帮助读者全面深入地了解Hadoop。1.Hadoop的定义1.1什么是Hadoop   Hadoop是......
  • 题目集7~8的总结
    目录一.前言 nchu-software-oop-2024-上-7~知识点 nchu-software-oop-2024-上-6~知识点二.设计与分析一.家居强电电路模拟程序-3多个并联电路:互斥开关:二.家居强电电路模拟程序-4二极管:输出内容:三.踩坑心得1.字典序排序2.多个互斥开关3.连续调速器4.排查不周4.改进建议1.if-els......
  • 【计算机毕业设计】springboot229基于Spring Boot的企业员工薪酬关系系统的设计
    传统信息的管理大部分依赖于管理人员的手工登记与管理,然而,随着近些年信息技术的迅猛发展,让许多比较老套的信息管理模式进行了更新迭代,薪资信息因为其管理内容繁杂,管理数量繁多导致手工进行处理不能满足广大用户的需求,因此就应运而生出相应的企业员工薪酬关系系统。本企业员......
  • 基于java语言+springboot技术架构开发的 互联网智能3D导诊系统源码支持微信小程序、AP
    基于java语言+springboot技术架构开发的互联网智能3D导诊系统源码支持微信小程序、APP医院AI智能导诊系统源码一、智慧导诊系统开发原理导诊系统从原理上大致可分为基于规则模板和基于数据模型两类。1、基于规则推理的方法通过人工建立症状、疾病和科室之间的对应规则实......
  • SpringBoot整合Minio
    目录1Minio1.1概述1.2应用场景1.3Minio实现分片上传的主要步骤1.4Centos7安装Minio1.5搭建springboot环境1.5.1pom.xml1.5.2创建容器桶1.5.3编写配置文件1.5.4常量类1.5.5创建Minio的配置类1.5.5创建Minio的工具类1.5.6创建Ajax请求工具类1.5.7创建Minio文件操作接......
  • PTA7-8总结
    前言知识点PTA7:这是一个模拟电路系统的Java程序,其中定义了多种电路组件(如开关、调速器、灯泡、风扇等),并模拟了它们的交互和行为。下面是对代码的详细分析:类和继承Circuit类:这是一个抽象基类,定义了所有电路组件共有的方法,如设置输入电压、显示状态等。Switch类:继承自Ci......
  • 基于java+springboot+vue实现的毕业论文管理系统(文末源码+Lw)251
    摘 要现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本毕业论文管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效......
  • 大模型实战1年半,总结一下在企业落地的三个策略
    节前,我们组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学。针对大模型技术趋势、算法项目落地经验分享、新手如何入门算法岗、该如何准备面试攻略、面试常考点等热门话题进行了深入的讨论。总结链接如下:《大模型面试宝典》(2024......
  • 数据库查询总结
     select语句SELECT语句用于从数据库中选取数据。结果被存储在一个结果表中,称为结果集。select语句语法格式SELECT[ALL|DISTINCT]输出表达式,...[FROM表名1[,表名2].....]/*FROM子句*/[WHERE条件]/*WHERE子......