OOP七,八次作业总结

news/2024/7/3 18:31:36/文章来源:https://www.cnblogs.com/hanhuakang/p/18275486

OOP四到六次作业总结
一.前言:
第七八次为家庭电路分析程序。
在第七次作业中,家庭电路系统,匹配类设计不当
在第八次作业中,我修改了输出类,并优化类的设计

二,设计与分析:
1.家居强电电路模拟程序-3(第七次作业)
在本次作业中,我对类的设计较为直白,输出类也没有进行优化,在数据计算为完毕后进行输出,然而这可能导致排序出现错误。
此外,由于匹配原则的修改,对于匹配类的设计出现失误,使用非必要的循环嵌套导致出现错误,我对匹配函数进行修改,区别于前两次作业,匹配的结构更加清晰。
同时,计算方法较为复杂,if条件判断使用过多,导致部分特殊结构分析出错。
在后续作业中,我对父类设计与计算方法设计进行优化。
此次作业我对类间关系设计进行了优化,例如,首先提取数据时分别将其存入Arraylist内,然后在试卷类中使用Arraylist存放电器类,使得对分数进行计算时对T与M类的匹配更加清晰方便。
此次作业的思考让我对类的设计与类间关系有了更加清晰的认识,进行大型程序的设计时,优先考虑类的关系,这样思路就比较清晰,然后进行类的设计,然后进行数据读取的设计。过去思路较为凌乱,总是先考虑类的设计而忽略了类关系的设计,导致手忙脚乱,不停的修改类的设计。
复杂类图如下:
可见对于匹配的设计过于繁杂,后续进行优化

UML图如下:
对于总线类设计也应继承于Appliance父类,便于遍历


2.家居强电电路模拟程序-4(第八次作业)
在本次作业中我对输出类进行优化
增设sort方法,便于进行统一排序,优化输出结构。
增设二极管类。
同时我将总线类设计为Appliance的子类,增设并联电路。便于对总线进行遍历。
在遍历时加入对短路的判断,在进行电阻计算,断路判断后,进行分压计算式加入对电流判断,过大短路。
同时对计算方法进行改进,减少if条件判断的使用。优化电压的计算,优化了遍历结构,便于进行计算。
同时对排序后的输出进行修改。
但是对于子类的设计仍略显繁杂,计算方法仍有改进空间。
复杂度:

可见总计算方法较复杂
UML图如下

三,采坑心得

  1. if结构使用过多,导致许多特殊情况测试失败,且导致程序难以修改,导致可拓展性大大降低。在进行程序初步设计时,应对特殊情况进行考虑,思考普遍性方法,减少if结构使用,以提高程序可拓展性
  2. 对于数据的读入,应综合使用split方法,charAt方法与正则表达式,正则表达式匹配精确且分组方便,便于后续对数据进行处理,但使用步骤较为繁杂,且数据结构发生变化时,需不断进行修改。Split方法用于对字符产基于某字符的分组,使用很方便,但分组结构会产生错误,甚至需要多次使用达到精确分组效果。charAt方法用于对字符某字符进行提取,图区极为精确,但提取字符较少,使用情况较少。
  3. 对于输出,在数据计算后进行输出显然不够严谨,可能导致排序错误,计算混乱等,可以增设输出类或使对应类实现comparable接口,便于排序,输出。
    此外,诸如,基础数据变量初始化时需赋值,类变量的引用,public,private等变量修饰符的使用,这样的细节问题需注意。
  4. 对于正则表达式的使用,如果在Java字符串中编写正则表达式时,你需要考虑双重转义。例如,要匹配一个字面点号(.),你需要在Java字符串中写\.此外,不要在循环中重复编译相同的正则表达式,因为这会降低性能,可能导致循环无法结束。默认情况下,正则表达式会尝试匹配输入字符串的任何部分。如果你想确保整个字符串都匹配正则表达式,你应该使用^和$来分别匹配字符串的开始和结束。
  5. 对于循环嵌套,嵌套的循环可能会使代码难以阅读和维护。尝试简化逻辑,减少嵌套层数,如果必须使用嵌套循环,确保每一层循环的目的都很清晰,并且逻辑上能够很好地组织在一起。

四,改进建议

  1. 提高程序可读性,例如
    将长方法拆分成多个短方法,每个方法执行一个特定的任务,使用有意义的名称,使代码更易于阅读和理解。删除重复的代码块,并使用方法、类或库来重用代码。为代码添加适当的注释,解释代码的目的、行为以及任何重要的假设。
    例如各个类的设计,名称,方法设计进行优化,有利于后续对于程序的修改,以及电压计算方法的简化。
  2. 对于集合的使用,善于利用各种集合会使程序大大简化。Arraylist类似于数组,方便遍历修改增加等操作,hashmap中键值对的使用使用数据的对应使用更加方便,但同时也由于只能存键值对导致遍历相对繁琐。set类似于数学中集合,其中元素不重复,不同于前两个,元素按照大小进行排列。每种数据存储结构均有其优缺点,明细这一点对程序进行改善。据需求选择合适的数据结构。例如,如果需要频繁地插入和删除元素,LinkedList可能更适合;如果需要快速查找元素,HashMap或HashSet可能更合适。
    在本次作业中,将各个小电器使用HashMap存储,会使对总线遍历更加方便简洁。
  3. 对于程序可拓展性,善于使用接口,抽象类会事半功倍
    接口和抽象类可以定义一组规范,由不同的类来实现这些规范。实现解耦,通过将实现与接口分离,可以提高代码的灵活性和可扩展性。
    使用模块化设计,使应用程序的组成部分更加清晰,有助于应用程序的扩展。每个模块都可以独立开发、测试和维护。
    例如对于计算方法的设计,进行模块化设计,可大大减少其复杂度。
  4. 学习使用便捷的开发工具,例如idea,可利用其广泛的插件市场进行对代码的解读,修改。
  5. 单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。将常量、配置和参数值存储在配置文件或数据库中,以便于修改和维护。

五,总结
在近几次作业中,最大的问题仍然是输出结构与if结构的使用,在后续作业中,我会着重于对这两方面进行修改
此外,对于各种接口,例如可比较性等,数据集合的使用会使程序设计事半功倍,随着java学习不断深入,我对这些数据集合,接口的使用会更加熟练,深入,提高程序便捷性。
善用idea等开发工具,使用其广泛的插件,可以便捷的对程序进行解读,例如类图,复杂度插件。
在Java学习后期,我已经掌握了Java语言的基础知识和核心概念,同时我不断地深化和扩展自己的知识体系,掌握更多的高级特性和技术。我通过实践来加深对Java语言的理解和掌握。同时,我需要关注Java社区和行业动态,了解最新的技术趋势和最佳实践,以便不断提升自己的技术水平。
我认为java语言的上限较高,意味着我仍有很长的学习java之路要走。不断练习,最重要的是不断练习,通过编写各种类型的程序来巩固所学知识,并逐步提升编程能力。

此外,在学习的过程中,只有通过不断地学习和实践,才能真正掌握Java语言,并在未来的职业发展中取得更好的成绩。

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

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

相关文章

findfont: Font family Times New Roman not found.

这是因为在python环境中的matplotlib文件夹下没有这个字体的文件。 对于windows系统,请参考:https://blog.csdn.net/qq_49323609/article/details/139026798 Macos系统:先打开软件:找到字体的路径然后模仿以上https://blog.csdn.net/qq_49323609/article/details/139026798…

模拟集成电路设计系列博客——8.2.1 环形振荡器

8.2.1 环形振荡器 在这一章节,我们将介绍振荡器的基本概念。环路振荡器可以分成若干种,但两种主要的分类依据是直接产生正弦信号还是产生方波(或者三角波)信号输出。正弦波输出振荡器常被用于一些频率选择或者反馈电路的调谐电路,而方波输出振荡器常被用于一个非线性反馈电…

分类器

网络模型分为特征提取器,包括一系列卷积层。池化层、激活函数; 分类器则是后面的全连接层; 对于全连接层直接输出的值为logits;logits也叫做模型输出的对数几率,$n_j$ 通常表示为模型对于第 j 类的输出值,也就是在进行Softmax函数转换之前的原始logits

Graph Neural Networks based Log Anomaly Detection and Explanation论文阅读笔记

1.介绍 现代高科技系统,如云服务器或高性能计算机,通常由大量的组件组成。随着时间的推移,这些系统变得越来越复杂,使得手动系统操作和维护变得困难甚至不可行[17]。因此,自动化系统操作和维护是非常可取的。为了实现这一点,系统日志被普遍用于记录系统状态和重要事件。通…

Miniconda安装使用说明

Anaconda这安装包体积真是劝退我了https://docs.anaconda.com/miniconda/miniconda是最小的conda安装环境,只有conda+python+pip+zlib和一些其他常用的包,体格不到100Mb,非常迷你。 Miniconda 使用教程 创建和管理环境 Conda 允许用户创建隔离的环境,以避免不同项目之间的依…

m基于GA遗传优化的高斯白噪声信道SNR估计算法matlab仿真

1.算法仿真效果 matlab2022a仿真结果如下:2.算法涉及理论知识概要基于遗传算法(Genetic Algorithm, GA)的高斯白噪声信道(Additive White Gaussian Noise, AWGN)信噪比(Signal-to-Noise Ratio, SNR)估计方法是一种利用生物进化原理进行全局优化的技术,旨在寻找最优解,…

重生之我在男航学Java-3(完结)

一、前言家居强电电路模拟程序-3 考查内容:类的设计(适应迭代以及合理的类间关系的设计),正则表达式的应用(如何正确解析输入),java中集合框架的熟悉与使用并且选择合理的集合框架(存储数据并且方便数据的增删改查) 新增内容:互斥开关,落地窗帘 本次PTA由于自身的原…

嵌入式计算和视觉加速的开放标准

嵌入式计算和视觉加速的开放标准 https://www.khronos.org/assets/uploads/developers/presentations/Khronos_Embedded_Compute_and_Vision_Overview_Jun24.pdf Khronos将软件连接到硅 开放、免版税的互操作性标准,以利用GPU、XR和多处理器硬件的力量3D图形、增强和虚拟现实、…

第三次Blog作业

题目集6-7的总结性Blog 一、前言 题目集总结 第六次题目集 知识点:控制理论、电路设计、设备工作原理 题量:中等 难度:中等偏上控制设备部分涉及对开关、分档调速器、连续调速器三种设备的理解和操作。需要理解开关的两种状态,分档调速器的档位变化以及连续调速器的连续调节…

第三次blog

第三次blog感悟 随着知识越学越多,任务也越来越繁重,难度也是与日俱增,也许是时间花得还不够也不够认真导致最近的一些pta作业都完成得差强人意,我认为java的学习最重要的是写作业的认真、严谨的逻辑以及大把的时间。nchu-software-oop-2024-上-6 本次作业题目大致内容 1、…

第三次PTA作业总结

一.第七和第八次PTA作业总结 1.第七次PTA作业的分析 (1).设计思路: 设计电路设备类(如ControlDevice, AdjustableDevice, ExclusiveSwitch)和受控设备类(Light, Fan, Curtain)来封装设备的属性和行为。 电路类(SequentialCircuit, ParallelCircuit)用于表示电路结构,…

在WPF中使用着色器

概念类比范畴 CPU GPU二进制文件 .exe .cso / .ps二进制指令 机器码 CSO(shader指令)助记符 汇编 SL高级语言 C# HLSL高级语言文件 .cs .hlsl / .fx高级语言编译器 csc.exe fxc.exeAPI .NET API DirectX API运行时环境 CLR DirectX调试工具 Visual Studio Debugger RenderDoc着…

OOP第三次博客作业

目录前言:设计与分析:opp-7-家居强电电路模拟程序-2opp-8-家居强电电路模拟程序-2踩坑心得:opp-5-家居强电电路模拟程序-3踩坑和心得:opp-5-家居强电电路模拟程序-4踩坑和心得:总结: 前言: oop-7相比与oop-6仅增加了两个电子元件,一个互斥开关,一个受控窗帘,除了优化…

《DNK210使用指南 -CanMV版 V1.0》第五章 编译CanMV固件

第五章 编译CanMV固件 1)实验平台:正点原子DNK210开发板 2) 章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0 3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-…

第三次PTA总结

前言 本阶段面向对象程序设计进行了两次PTA训练,两次都是关于电路设计的迭代。迭代次数越多难度越大,后期事情较多,作业和考试任务重、题目的难度也较大,所以没有拿到每次作业的满分,但是都根据题目的变化对自己的设计进行了一定的改变和优化。 知识点类的设计; 数组、链…

防火墙部署案例

通过引流方式实现防火墙旁挂部署并且实现安全防护功能案例 一、项目背景 1、客户有购买了一台某公司由于性能问题和服务器直连核心交换机原因,决定采取旁挂方式部署,但是又希望实现安全防护,因此决定通过引流方式(QOS的流量重定向)把需要防护的流量引到防火墙,防火墙做路…

6月29日

# 模板引用 $template=file_get_contents("1.php");之后可以引用page_title变量来替换html内容

Alertmanager抑制、静默、路由、告警分组

1、抑制机制 Alertmanager的抑制机制可以避免当某种问题告警产生之后用户接收到大量由此问题导致的一系列的其它告警通知。例如当集群不可用时,用户可能只希望接收到一条告警,告诉他这时候集群出现了问题,而不是大量的如集群中的应用异常、中间件服务异常的告警通知。 在Ale…

GBJ406-ASEMI无人机专用整流桥GBJ406

GBJ406-ASEMI无人机专用整流桥GBJ406编辑:ll GBJ406-ASEMI无人机专用整流桥GBJ406 型号:GBJ406 品牌:ASEMI 封装:GBJ-4 最大重复峰值反向电压:600V 最大正向平均整流电流(Vdss):4A 功率(Pd):中小功率 芯片个数:4 引脚数量:4 类型:整流扁桥、整流桥 正向浪涌电流:120…