面向对象程序设计-第4-6次大作业总结

news/2025/1/21 9:31:58/文章来源:https://www.cnblogs.com/Cyclone-5/p/18234316
  • 前言
    有了三次大作业的经验,即使在面对新的大作业时谈不上得心应手,但也有了一些思路以及应对难点的方法,总归是有了一些心得体会,不会被复杂的测试点和样例搞得捉襟见肘,这也未尝不算进步。
    1.知识点
    这三次大作业的知识点相较于前几次来说更加复杂,更加专业化,涉及到了面向对象程序设计的核心操作,其中“面向对象”这一点尤为重要,总结这三次大作业的知识点如下:
  1. 面向对象编程思想,将相关的属性和方法封装在类中,通过设计电路设备类、受控设备类、控制设备类等,将具有相同属性和行为的对象归为一类,实现代码的复用和模块化。
  2. 字符串处理和解析,包括字符串分割、子串提取等操作。
  3. 数据结构的设计和使用,例如使用HashMap存储题目信息、试卷信息、学生信息等,使用HashMap存储设备信息,使用List存储连接信息等。。
  4. 条件判断和循环控制,根据输入的信息进行相应的处理和输出,根据不同的设备类型和状态,进行相应的处理和输出。
  5. 异常处理,对输入格式错误进行处理并给出提示信息。
  6. 数学计算:计算电压、转速、亮度等数值,注意精度控制和截尾规则。
  7. 电路基础知识:理解串联电路、并联电路的原理和特点,以及各设备的工作原理和特性。
    2.题量及难度
    题量和难度比前三次大作业都多且难是毋庸置疑的,毕竟迭代的过程就是不断成长的过程。题量方面来看,显著增加的是测试点的数量以及代码行数的增加,前几次只需要二三百行便可完成,这三次大作业五六百行都很难拿到理想的分数。难度方面来看,测试点的增加也算是提升难度,没有提示的测试点还是让人摸不清头脑,总体难度也有不小的提升。
  • 设计与分析
    三次大作业的类图参考
    第四次:

(power designer出现未知异常无法画图,5、6次大作业类图由文字形式体现)
第五次:
5:Class Pin {
+inputVoltage: double
+getOutputVoltage(): double
+getInputVoltage(): double
}

Class Switch {
+state: int
+changeState(): void
}

Class FControl {
+Fgear: int
+upgear(): void
+downgear(): void
}

Class LControl {
+Lgear: double
+changeLgear(double): void
}

Class Blamp {
+brightness: double
+changeBrightness(double): void
}

Class Rlamp {
+brightness: double
+changeBrightness(double): void
}

Class Fan {
+speed: double
+changeSpeed(double): void
}

Class Main {
+main(String[]): void
}
第六次:

三次大作业的设计分析
第四次:
类分析:
class Question
class TestPaper
class Answer
class Student
class Delete
Main
1.数据结构:

  • 题目信息:使用字典或列表存储,题目编号为键,题目内容和标准答案为值。

  • 试卷信息:使用字典或列表存储,试卷号为键,包含题目编号和分值的子字典或子列表为值。

  • 学生信息:使用字典存储,学号为键,学生姓名为值。

  • 答卷信息:使用字典存储,试卷号和学号组合为键,包含题目顺序号和答案的子字典或子列表为值。

  • 删除题目信息:使用集合或列表存储被删除的题目编号。

  1. 主要功能:
  • 解析输入信息:根据输入的信息类型,将信息解析并存储到相应的数据结构中。

  • 判题逻辑:根据答卷信息和题目信息,计算学生得分,并输出答题结果。

  • 删除题目处理:在计算学生得分时,判断题目是否被删除,若被删除则按0分计算。

  • 输出格式化:根据题目得分情况和删除题目信息,输出相应的结果信息。

  1. 流程:
  • 读取输入信息,根据信息类型分别处理并存储到对应的数据结构中。

  • 针对每位学生的答题情况,根据答卷信息和题目信息计算得分。

  • 若题目被删除,相应处理计算得分时的逻辑。

  • 输出学生的得分情况和可能的提示信息。

第五次:本质意义上来说虽然这次大作业拿到分数了,但完成度不是很可观,首先,电路的链接我并没有考虑,由于是单条串联线路,我只是在输出中使用CharAt方法提取特定的字符串进行检测,根据检测的字符串判断控制器和用电器的种类,然后将其输出,并没有按照老师说的“串成一条线”的形式,所以我觉得完成度并不是很好,但在下一次大作业中比较好的解决了这个问题,这次大作业无需多言,难度跟上下两次比并不是很高,所以便先草草带过。
第六次:

设备列表:

1. 控制设备:

  • 开关(Switch)

  • 分档调速器(Multi-speed Regulator)

  • 连续调速器(Continuous Regulator)

2. 受控设备:

  • 白炽灯(Incandescent Lamp)

  • 日光灯(Fluorescent Lamp)

  • 吊扇(Ceiling Fan)

  • 落地扇(Stand Fan)

设备特性:

1. 开关(Switch):

  • 两种状态:0(关)和1(开)

  • 两个引脚,状态为1时输出电位等于输入电位

2. 分档调速器(Multi-speed Regulator):

  • 4档调速,输出电位为0、0.3、0.6、0.9倍的输入电压

3. 连续调速器(Continuous Regulator):

  • 没有固定档位,输出电位为档位参数乘以输入电压

4. 白炽灯(Incandescent Lamp):

  • 亮度在0~200lux之间

  • 电位差对应不同亮度值

5. 日光灯(Fluorescent Lamp):

  • 亮度为180lux

  • 电位差为0时亮度为0,不为0时亮度为180

6. 吊扇(Ceiling Fan):

  • 工作电压区间80V-150V,对应转速80-360转/分钟

7. 落地扇(Stand Fan):

  • 工作电压区间80V-150V,对应转速80-360转/分钟

输入信息格式:

  • 设备标识符K、F、L、B、R、D、A表示不同设备

  • 引脚格式为设备标识-引脚编号,如K1-1表示编号为1的开关的输入引脚

  • 连接信息用[]表示一组连接在一起的设备引脚

  • 控制设备调节信息格式为#+设备标识+设备编号,如#K2、#F3+、#L3:0.6

再建立一个并联电路类以及线类,让两个类是关联的关系,便可实现并联电路的正常联通

3.踩坑心得
bug分析:
第四次大作业:
例一:Main.java:497: error: class, interface, or enum expected
public static void main(String[] args) {
错误分析:是因为在不适当的地方放置了类、接口或枚举的定义,主要是类的位置处理以及{}的编排。
第五次、第六次大作业:
例一:Main.java:449: error: cannot find symbol
if(lines.line[4]="#K1"){
^
symbol: variable line
location: variable lines of type String[]
Main.java:454: error: cannot find symbol
else if(lines.line[5] = "#L1:1.00"){
^
symbol: variable line
location: variable lines of type String[]
Main.java:459: error: cannot find symbol
else if(lines.line[5] = "#K2"){
^
symbol: variable line
location: variable lines of type String[]
错误分析:使用数组lines时出现了问题,数组的元素是通过索引访问的,而不是通过.来访问属性。
例二:Main.java:280: error: illegal start of expression
if(lines[0].length() >= 9 && lines[0].charAt(8) == 'K'&&){
错误分析:在代码的某个地方有语法错误,导致编译器无法理解代码的开始位置,&&后面似乎缺少一个表达式,导致语法错误
需要注意的点:

  1. 理清设备之间的连接关系:在输入连接信息时,要确保清楚地理解各设备之间的连接关系,包括串联和并联,以确保电路的连接正确无误。

  2. 准确理解控制设备的调节信息格式:对于开关、分档调速器和连续调速器的调节信息格式要理解清楚,确保在模拟系统中能够正确地调节各个设备的状态和档位。

  3. 注意电路的接地和电源标识:在输入串联电路信息时,要确保最后一条电路信息包含总电路信息,且起始引脚是VCC,结束引脚是GND,以正确地表示整个电路的接地和电源标识。

  4. 考虑设备的电阻对电路的影响:在模拟电路时,要考虑到各个设备的电阻对电路整体的影响,确保在计算电路中的电压、电流等数值时考虑到电阻的影响。

  5. 逐步验证和调试:设计完成后,逐步验证每个设备的功能和整个电路的运行情况,确保各个部分正常工作并且整体电路模拟系统符合预期。
    4.改进建议
    1.错误处理机制:添加错误处理机制,如输入检查、连接合法性验证、设备状态范围检查等,以防止用户输入错误导致系统崩溃或不正确的输出结果。
    2.性能优化:优化算法和代码结构,以提高系统的运行效率和响应速度,确保系统在处理复杂电路时能够快速稳定地运行。

总结
总的来说这三次大作业除了第五次,剩下两次都是比较难的,但也有不小的收获,例如数据结构的应用, 逻辑判断与算法设计,错误处理与异常情况处理,后两次的迭代会越来越难,希望能有更多的收获吧。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/721767.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024年5月文章一览

2024年5月编程人总共更新了7篇文章: 1.2024年4月文章一览 2.《自动机理论、语言和计算导论》阅读笔记:p215-p351 3.《自动机理论、语言和计算导论》阅读笔记:p352-P401 4.《自动机理论、语言和计算导论》阅读笔记:p402-p427 5.《自动机理论、语言和计算导论》阅读笔记:p42…

BUUCTF-WEB(66-70)

[MRCTF2020]套娃 参考: MRCTF2020 套娃 - Rabbittt - 博客园 (cnblogs.com) upfine的博客 (cnblogs.com) 查看源码然后我这里查一下$_SERVER的这个用法然后这边的意思就是里面不能用_和%5f(URL编码过的下划线) 然后传入b_u_p_t里面这个参数有下划线,我们想办法绕过 substr_cou…

告别Word,用Python打造你的专业简历!

今天给大家介绍下一个在纯 python 中构建简历的实用工具,工具的连接地址https://github.com/koek67/resume-builder/blob/main/readme.md 用法介绍 要求 Python 3.7 或更高版本(仅此而已!) 安装 整个库是一个单独的 python 文件 resume_builder.py。下载此文件 用法 要生成…

某大型医院IBM 3650服务器 raid重组案例——数据完美修复

我们今天谈的是一个来自四川的大型三甲医院的服务器数据恢复的真实的一个案例,是一台IBM的3650服务器,一共六块硬盘坏了,有两块硬盘是300GB,一共是有六块盘,两块盘是曝光灯离线了,导致这个医院的挂号系统,诊疗系统全部瘫痪,所有数据全部丢失,医院属于一个停摆的状态,…

数据库镜像 (SQL Server)操作模式

数据库镜像会话以同步操作或异步操作运行。 在异步操作下,事务不需要等待镜像服务器将日志写入磁盘便可提交,这样可最大程度地提高性能。 在同步操作下,事务将在伙伴双方处提交,但会延长事务滞后时间。 有两种镜像运行模式。 一种是高安全性模式,它支持同步操作。 在高安全…

Block Transformer:通过全局到局部的语言建模加速LLM推理

在基于transformer的自回归语言模型(LMs)中,生成令牌的成本很高,这是因为自注意力机制需要关注所有之前的令牌,通常通过在自回归解码过程中缓存所有令牌的键值(KV)状态来解决这个问题。但是,加载所有先前令牌的KV状态以计算自注意力分数则占据了LMs的推理的大部分成本。…

Android Media Framework(四)Non-Tunneled组件的状态转换与buffer分配过程分析

本篇将继续深入OpenMAX IL Spec,详细解析Non-tunneled(非隧道)组件的初始化、数据传递以及组件销毁过程。通过阅读本篇内容,我们应能对Non-tunneled组件的buffer分配与状态转换过程有一个清晰的了解。1、组件初始化 以下是IL Spec给的Non-tunneled组件初始化时序图:IL Cli…

庆余年第二季迅雷下载/庆余年2全集下载百度云在线观看

《庆余年2》:承前启后的豪情与智慧近年来,电视剧《庆余年》以其精彩的剧情和精湛的演技,收获了广大观众的喜爱和好评。而续集作品《庆余年2》更是在原剧的基础上迈出了更加坚实的一步。该剧不仅延续了第一季的精彩故事,同时也在新一季中增加了更多的情节和角色,带给观众更…

CF1192B Dynamic Diameter 题解

思路 静态 \(\text{top tree}\) 板子题。 定义 我们使用簇来表示树上的一个连通块。 可以按照如下方式定义一个簇:一个簇可以表示为三元组 \((u,v,E)\),其中 \(u,v\) 为树的节点,称为簇的界点,\(E\) 为一个边的集合,表示该簇包含的边,路径 \((u,v)\) 称作簇路径。 \(u,v\…

谈判专家迅雷BT下载[2.69GB-MKV]加长完整版[HD1280P]

《谈判专家》是由中国导演韩寒执导的一部谈判题材电影,该片于2017年上映。电影讲述了一场关于中国企业与美国公司之间的商业谈判,以及其中涉及到的诸多挑战和困境。本文将对该电影进行全面分析,从剧情、演员表现、影片风格等方面进行讨论。首先,我们来看剧情。电影《谈判专…

走走停停迅雷BT下载[DB-1280P/3.25GBMKV中字]4k高清百度云资源分享

电影《走走停停》:探寻人生的迷茫与自我救赎电影《走走停停》是一部由李安执导,由乔阿尔文主演的心灵探索之旅。这部电影以一个中年男子的迷失和自我救赎为线索,通过对人生中的停顿和挫折的描绘,引发观众对生活意义的思考。故事的主线由两个不同的时间线交织而成,一条是男…