PTA第7~8次题目集的总结
目录
一 . 前言
二 . 设计与分析
三 . 采坑心得
四 . 改进建议
五 . 总结
=================================================================================================================================
前言
题目总结
第7次题目集
题目
7-1 家居强电电路模拟程序-3
请根据如下要去设计一个智能家居强电电路模拟系统。模拟的控制设备:开关、分档调速器、连续调速器、互斥开关。受控设备:灯、风扇、受控窗帘。
并对组成的线路进行信息处理。
知识点:
-
将实际电路的工作方式抽象化。
以实际电路的运行方式对每一个对象进行操作,如何将其抽象化是十分重要的。
-
继承与多态。
次用继承与多态的方法来处理不同类型的信息,使其中的信息有不同的处理方式。
-
设计判断条件的能力。
使用了互斥开关,如何设计其开关状态、如何设计其变化方式以及判断操作的设计为此次题目集的难点。
第8次题目集
题目
7-1 家居强电电路模拟程序-4
请根据如下要去设计一个智能家居强电电路模拟系统。模拟的控制设备:开关、分档调速器、连续调速器、互斥开关。受控设备:灯、风扇、受控窗帘、
二极管。并对组成的线路进行信息处理。
知识点:
-
继承与多态的使用。
多样的用电器,不同类型的线路,各有特色的控制器,都有内在联系,又有不同之处。采用继承与多态的方式来处理有关电器,使得操作流畅,
设计合理。
-
类与类之间的关系处理。
此次用电器与线路有着密切关系,并且多种用电器之间类型相似,对应的用电器有着不同的处理方式,需要进行合理的类与类之间关系的设计。
-
对多样性的条件进行合理的处理。
此次程序要求将对应用电器的引脚信息以及是否超过最大电流进行判断输出,如何处理好有关信息是十分此次作业重难点。
=================================================================================================================================
设计与分析
第7次题目集
类设计
Main类
构建处理类(将输入的句子转化为电器,电路,操作)
电器类(包含用电器的基本信息,用于存储一些基本信息)
线路类(继承于电器类,包含用电器链表与用电器的基本信息,还有一些对应的处理方法)
受控窗帘类(继承自用电器类,按照电压大小以及亮度进行对应操作)
灯光类(灯光继承自用电器,增加亮度信息)
日光灯类(继承自灯光类,包括日光灯类的处理方式)
白炽灯类(继承自灯光类,包括白炽灯类的处理方式)
风扇类(包含用电器的方法与属性,额外还有转速作为属性,以及对应的处理)
开关类(继承自用电器类,控制电路通路与否)
互斥开关类(继承自用电器类,包含对应互斥开关的属性以及处理方式)
调节器类(控制进入后传出的电压大小)
分档调节器类(继承自调节器类,有着分档调节的档位处理方式)
连续调节器类(继承自调节器类,有着 连续调节的档位处理方式)
类图:
处理思路
先将输入的线路构建与用电器操作分为不同的两种操作存入对应的字符串数组或字符串中,直至输入end结束。接着处理输入的线路构建有关的数据后,按照输入的信息
构建对应的电路,使用正则表达式将字符串分割成为每个用电器,再按分割后的字符串进行判断设计,然后按照输入线路的不同按照不同的方式构建线路,构建完后将其加
入线路的动态数组之中,然后按照输入的操作对线路进行的控制元件的操作。做完后,由前到后的顺序对每一条线路进行是否通路的判断,判断后计算每一个线路对应的总
电阻,将构建的线路由后到前的顺序通过输入的电压的连通,计算对应的电流,并按照电压=电流✖️电阻的方式获取对应的电压,并将对应的电压赋值到对应的用电器中,
之后将用电器按对应电压进行对应操作的结果赋值操作。最后按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇,落地扇,互斥开关,受控窗帘的顺序排序后,依
次输出有关信息。
第8次题目集
类设计
Main类
构建处理类(将输入的句子转化为电器,电路,操作)
电器类(包含用电器的基本信息,用于存储一些基本信息)
线路类(继承于电器类,包含用电器链表与用电器的基本信息,还有一些对应的处理方法)
受控窗帘类(继承自用电器类,按照电压大小以及亮度进行对应操作)
灯光类(灯光继承自用电器,增加亮度信息)
日光灯类(继承自灯光类,包括日光灯类的处理方式)
白炽灯类(继承自灯光类,包括白炽灯类的处理方式)
风扇类(包含用电器的方法与属性,额外还有转速作为属性,以及对应的处理)
二极管(继承自用电器类,接入方式与是否能够通路有很大的关联)
开关类(继承自用电器类,控制电路通路与否)
互斥开关类(继承自用电器类,包含对应互斥开关的属性以及处理方式)
调节器类(控制进入后传出的电压大小)
分档调节器类(继承自调节器类,有着分档调节的档位处理方式)
连续调节器类(继承自调节器类,有着 连续调节的档位处理方式
类图
处理思路
先将输入的线路构建与用电器操作分为不同的两种操作存入对应的字符串数组或字符串中,直至输入end结束。接着处理输入的线路构建有关的数据后,按照输入的信息
构建对应的电路,使用正则表达式将字符串分割成为每个用电器,再按分割后的字符串进行判断设计,然后按照输入线路的不同按照不同的方式构建线路,构建完后将其
加入线路的动态数组之中,然后按照输入的操作对线路进行的控制元件的操作。做完后,由前到后的顺序对每一条线路进行是否通路的判断,判断后计算每一个线路对应
的总电阻,将构建的线路由后到前的顺序通过输入的电压的连通,计算对应的电流,并按照电压=电流✖️电阻的方式获取对应的电压,并将对应的电压赋值到对应的用电
器中,之后将用电器按对应电压进行对应操作的结果赋值操作。对比上次设计,此次增加了一个引脚赋值的操作,进行完对每一个用电器的输入引脚和输出引脚赋值后。
最后按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、落地扇、互斥开关、受控窗帘、二极管的顺序排序后,依次生成有关信息的字符串并输出。
=================================================================================================================================
采坑心得
第7次题目集
- 互斥开关设计不完全,遗漏了互斥开关接在并联电路尾部的情况。
解决方法:
增加了对应情况的判断以及对应的处理方式。
- compareTo方法中遗漏了增加的互斥开关和受控窗帘,导致错误。
解决方法:
增加了对应的字母来保障运行正确。
第8次题目集
- 对应的用电器电压输入引脚与输出引脚的赋值错误。
解决方法:
重新设计了引脚的电压的信息输入方式。
- 输出的结果不符合要求。
采用了String.format("%.0f",Math.floor(数据))的方式来避免了四舍五入的结果产生。使得输出的结果符合要求。
- 输出引脚信息顺序不是按照从小到大的顺序。
解决方法:
增加了将输入的引脚信息先排序的步骤,在输出前将引脚的信息进行了处理。
改进建议
第7次题目集
操作类中的内容太繁杂,复杂度太高,可以将功能更好的分配下去,降低某一部分的时间复杂度,使类更加合理,更能做好各负其责的实现。
第8次题目集
复杂度爆炸💥,很有必要进行更合理的设计。继承的操作未能做好,没能将类进行更好的分配。引脚的操做出没用很好的设计,有情况会发生错误结果,并且操作过于复杂时间
复杂度太高,不利于进行修改与进行迭代。应该将有关内容合理分配下去,并且灵活使用继承与多态,以更好的设计代码,实现降低时间复杂度,构建出更好的结构。
=================================================================================================================================
总结
因为第六次题目集设计的类没有进行修改,在写第7次的代码时只是在第六次的基础上进行了对应情况的处理方式,加剧了复杂度太高的情况,但第七次的难度主要在于互斥开
关的设计,其余不算太难。第8次题目集增加了引脚的处理,因为我原本的代码删掉了有关引脚的信息,本次又新增回去,导致很多操作都不能实现应有的功能,并且这次对于
信息的输出中含有大量的数据,所以出现了很多的数据问题,第八次题目集中对于引脚的处理方式是本次作业的痛点。
在这几次题目集中学习到的主要知识有以下几个知识:
- 继承与多态的合理使用。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
继承:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
继承的作用:提高了代码的复用性(多个类相同的成员可以放到同一个类里),提高了代码的维护性(如果放大的代码需要修改,修改一处就行)。
- 接口的使用。
接口的定义:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
(接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。)
接口的好处:类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,打破了继承
的局限性。降低了程序的耦合性(可以实现模块化开发,定义好规则,每个人实现自己的模块,提高了开发的效率)。
以及如何使用简单的接口解决有关问题。
- 提前设计的必要性。
在进行代码化之前,需要先进行有关的设计,这样既可以避免代码化时出现无从下手的现象产生,还能提高书写代码的效率。并且当先设计好时,我们能更能游刃有余的处理好
题目有关的要求。
- 减少复杂度的重要性。
写完了的代码要及时进行降低复杂度,如果复杂度太高,将无法进行好下一次的迭代。
- 数据规范的重要性。
因为数据操作时有时会因为不合规范导致错误以及存在输出的数据有各自不同的要求的情况,但是选择方式不合理将无法很好的进行操作,所以要重视对于数据的规范。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~