目录
一 . 前言
二 . 设计与分析
三 . 采坑心得
四 . 改进建议
五 . 总结
=================================================================================================================================
前言
题目总结
第4次题目集
题目
答题判题程序-4
设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答题的结果。
知识点:
-
对于不同输入内容进行不同类型的处理与判断。
新增加了多选与填空的题型,这使得题目中有了更加多样的处理方式。并且使得试卷中有了更加复杂的处理方式,出现了三种结果:全对,半对,错误。
-
继承与多态。
次用继承与多态的方法来处理不同类型的信息,使其中的信息有不同的处理方式。
-
对于动态数组的处理。
使用了动态数组处理数据,数据之间的传输处理。
第5次题目集
题目
家居强电电路模拟程序-1
请根据如下要去设计一个智能家居强电电路模拟系统。模拟的控制设备:开关、分档调速器、连续调速器。受控设备:灯、风扇。并对组成的线路进行信息处理。
知识点:
-
正则表达式的处理。
对于此次的输入采用对应的正则表达式进行有关数据的接收。
-
类与类之间的关系处理。
此次用电器与线路有着密切关系,并且多种用电器之间类型相似,对应的用电器有着不同的处理方式,需要进行合理的类与类之间关系的设计。
-
对所处理的线路要有整体意识,采用合理的处理方式。
用电器因为不同的电压产生了不同的结果,当我们处理时如何将完整线路的电压分配好是关键。
第6次题目集
题目
家居强电电路模拟程序-2
请根据如下要去设计一个智能家居强电电路模拟系统。模拟的控制设备:开关、分档调速器、连续调速器。受控设备:白炽灯、日光灯、吊扇、落地扇。
考虑电阻:白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落 地扇的电阻为 20。并对组成的线路进行信息处理。
知识点:
-
继承与多肽的使用。
有了不同的线路,伴随着的就是多样的处理方式,采用继承与多肽来应对输入的多样信息。
-
对于抽象化的能力。
将线路中和用电器进行抽象化,采用更加合理的处理方式。
=================================================================================================================================
设计与分析
第4次题目集
类设计
题目类(存储题目的信息,调用时将信息传输到调用的对象中)
试卷类(储存题号信息,试卷总分,序号等信息,通过题号调用题库来填充题目中的内容)
答卷类(存储答案信息,对应试卷题号,试卷号,比对后对判题且对总分赋值)
句子处理类(将输入的句子进行处理,构建对象)
试题类(答案及对不同类型的题目答案进行不同的处理)
试题类N(单选题的答案处理方法和判题方式)
试题类K(多选题的答案处理方法和判题方式)
试题类Z(填空题的答案处理方法和判题方式)
类图:
处理思路
通过进行对字符串的输入后存储,直至输入end,在接收完输入的信息后先对输入的信息进行处理,后构建题库,经题目的信息导入题库之中,之后构建试卷与答卷,
将输入的题目和答案信息导入对应的试卷与答卷之中,之后将输入的答卷与对应试卷进行比对判断,进行对于答卷的题目进行赋分与总分计算,将对应的答卷进行有关
处理。
第5次题目集
类设计
构建处理类(将输入的句子转化为电器,电路,操作)
电器类(包含用电器的基本信息,用于存储一些基本信息)
线路类(继承于电器类,包含用电器链表与用电器的基本信息,还有一些对应的处理方法)
灯光类(灯光继承自用电器,增加亮度信息)
日光灯类(继承自灯光类,包括日光灯类的处理方式)
白炽灯类(继承自灯光类,包括白炽灯类的处理方式)
风扇类(包含用电器的方法与属性,额外还有转速作为属性,以及对应的处理)
开关类(控制电路通路与否)
调节器类(控制进入后传出的电压大小)
分档调节器类(继承自调节器类,有着分档调节的档位处理方式)
连续调节器类(继承自调节器类,有着 连续调节的档位处理方式)
类图
处理思路
先将输入的线路构建与用电器操作分为不同的两种操作存入对应的字符串数组或字符串中,直至输入end结束。接着处理输入的线路构建有关的数据后,按照输入的信息
构建对应的电路,然后按照输入的操作对线路进行的控制元件的操作。做完后,将构建的线路通过输入的电压的联通,并将输入的电压赋值到对应的用电器中,之后将用
电器按对应电压进行对应的结果赋值。最后按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇的的顺序排序后,依次输出有关信息。
第6次题目集
类设计
构建处理类(将输入的句子转化为电器,电路,操作)
电器类【抽象类】(包含用电器的基本信息,电流,电阻,电压等,用于存储一些基本信息)
线路类【抽象类】(继承于电器类,包含用电器链表与用电器的基本信息,还有一些对应的处理方法)
并联类(继承与线路类,包含总电阻计算)
串联类(继承与线路类,包含总电阻计算)
灯光类【抽象类】(灯光继承自用电器,增加亮度信息)
日光灯类(继承自灯光类,包括日光灯类的处理方式)
白炽灯类(继承自灯光类,包括白炽灯类的处理方式)
风扇类【抽象类】(包含用电器的方法与属性,额外还有转速作为属性,以及对应的处理)
吊扇类(继承自风扇类,包含吊扇类的速度计算方法)
落地扇类(继承自风扇类,包含落地扇类的速度计算方法)
开关类(控制电路通路与否)
调节器类(控制进入后传出的电压大小)
分档调节器类(继承自调节器类,有着分档调节的档位处理方式)
连续调节器类(继承自调节器类,有着 连续调节的档位处理方式)
类图
处理思路
先将输入的线路构建与用电器操作分为不同的两种操作存入对应的字符串数组或字符串中,直至输入end结束。接着处理输入的线路构建有关的数据后,按照输入的信息
构建对应的电路,按照输入线路的不同按照不同的方式构建线路,构建完后将其加入线路的动态数组之中,然后按照输入的操作对线路进行的控制元件的操作。做完后,
由前到后的顺序对每一条线路进行是否通路的判断,判断后计算每一个线路对应的总电阻,将构建的线路由后到前的顺序通过输入的电压的连通,计算对应的电流,并按照
电压=电流✖️电阻的方式获取对应的电压,并将对应的电压赋值到对应的用电器中,之后将用电器按对应电压进行对应操作的结果赋值操作。最后按开关、分档调速器、
连续调速器、白炽灯、日光灯、吊扇,落地扇的顺序排序后,依次输出有关信息。
=================================================================================================================================
采坑心得
第4次题目集
1. 正则表达式输入错误,导致未能创建有关对象或操作时找不到对应的对象。
解决方法:
修正了正则表达式,使其构建了正确的对象,并使得操作能够正常进行。
2. 多选是判断方法不匹配,导致判断是错误。
解决方法:
修改了判断方法,先将答案按字母顺序排序后,依次与正确答案比对,若正确个数等于标准答案个数则正确,有一个错误则判为错误,不等于标答个数且没有错误后判断为半对。
3. 数据传输太多,导致传输过多后分不清楚哪里调用了。
解决方法:
优化结构,减少有关的对象赋值,减少错误的机会。
第5次题目集
1. 对应的用电器电压输入引脚与输出引脚的赋值错误。
解决方法:
采用一个不断更新电压值,穿过一个用电器就按照对应要求更改一次,然后将其不断赋值给电器的引脚。
2. 输出的结果不符合要求。
解决方法:
System.out.printf("@%s:%.0f\n",super.getName(),super.getLux());和
System.out.printf("@%s:%.0f\n",super.getName(),speed);改为了
System.out.printf("@%s:%.0f\n",super.getName(),Math.floor(super.getLux()));和
System.out.printf("@%s:%.0f\n",super.getName(),Math.floor(speed));
避免了四舍五入的结果产生。
3. 采用了错误的分档调节器处理方式,到最低档继续向下调节回到最高挡位,最高挡位继续向上调回到最低档,导致结果错误。
解决方法:
将原代码循环变化改为
public void changeGear(String way){
if(way.charAt(3)=='+'){
upGear();
}
else if(way.charAt(3)=='-'){
downGear();
}
}
public void upGear(){
this.gear = (gear + 1) % 4;
}
public void downGear(){
this.gear = (gear + 3) % 4;
}
采用到最低档后向下调后不改变,最高挡时向上调后不改变。
public void changeGear(String way){
if(way.charAt(3)=='+'){
upGear();
}
else if(way.charAt(3)=='-'){
downGear();
}
}
public void upGear(){
if(gear != 3){
this.gear = gear + 1;
}
else{
this.gear = 3;
}
}
public void downGear(){
if(gear!=0){
this.gear = gear - 1;
}
else{
this.gear = 0;
}
}
第6次题目集
1. 未考虑到串联电路中有并联电路或串联电路的存在,导致为构建好完整的电路。
解决方法:
增加串联电路的构建方法
else if(matcher.group(1).charAt(0)=='M'){
for(Line eachLine:lines){
if(eachLine.getName().equals(matcher.group(1))){
line.getLines().add(eachLine);
}
}
}
else if(matcher.group(1).charAt(0)=='T'){
for(Line eachLine:lines){
if(eachLine.getName().equals(matcher.group(1))){
line.getLines().add(eachLine);
}
}
}
2. 操作时发现输入引脚与输出引脚在操作时过于繁琐,导致操作有过多的错误。
解决方法:
修改了有关的属性,去除引脚,引入了电压,电流,电阻作为处理的主要方式。使用从外到内的方式将电压赋值给用每个电器。避免了引脚处理赋值时的错误。
改进建议
第4次题目集
有关的类之间数据传输过于频繁,极易发生错误,并且在删除和修改时会跟不上变化,所以要优化有关结构,将数据传输的部分减少,或者将操作的顺序进行修改,避免改变
时的错误。此外,还存在类之间的结构不合理,不能将一些操作进行合理的实现,导致操作过于繁琐,需要进行进一步的优化构造。
第5次题目集
继承的操作未能做好,没能将类进行更好的分配。引脚的操作为能够合理的完成有关的操作,并且操作过于复杂,在之后的操作为能够合理的进行。但因为没有设置电阻等基
本信息无法进行除去引脚的操作,所以设置有关信息后可以优化结构。
第6次题目集
操作类中的内容太繁杂,有很多是属于线路类或有关电器类中的内容,可以将功能更好的分配下去,使类更加合理,更能做好各负其责的实现。
=================================================================================================================================
总结
第四次题目集因为前几次未能够设计好,所以没法做到完全满足题目要求。第五次题目集为一次新的迭代开始,难度不算太大。第六次题目集采用了不给出实际样例的方法,增
加了部分难度,但总体来说不算太难。在这几次题目集中学习到的主要知识有以下几个知识:
1. 继承与多态的合理使用。
多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
继承:继承是面向对象最显著的一个特性。继承是从已有的类中派生出新的类,新的类能吸收已有类的数据属性和行为,并能扩展新的能力。
多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。
继承的作用:提高了代码的复用性(多个类相同的成员可以放到同一个类里),提高了代码的维护性(如果放大的代码需要修改,修改一处就行)。
2. 接口的使用。
接口的定义:泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
(接口可以理解为一种特殊的类,里面全部是由全局常量和公共的抽象方法所组成。)
接口的好处:类与接口的关系,实现关系,而且是多实现,一个类可以实现多个接口,类与类之间是继承关系,java中的继承是单一继承,一个类只能有一个父类,打破了继承
的局限性。降低了程序的耦合性(可以实现模块化开发,定义好规则,每个人实现自己的模块,提高了开发的效率)。
以及如何使用简单的接口解决有关问题。
3. 避免过度数据传输赋值操作。
因为在传输数据赋值时,很大概率产生错误,所以在代码实现功能时,应该避免大面积的数据传输赋值,过度的数据传输赋值必然会导致传输时产生问题的概率增加。
4. 提前设计的必要性。
在进行代码化之前,需要先进行有关的设计,这样既可以避免代码化时出现无从下手的现象产生,还能提高书写代码的效率。并且当先设计好时,我们能更能游刃有余的处理好
题目有关的要求。
标签:总结,题目,处理,用电器,PTA,线路,继承,输入
From: https://www.cnblogs.com/xysblogs/p/18227533