第三次PTA总结

前言

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

知识点

  • 类的设计;
  • 数组、链表的使用;
  • 封装、继承、多态面向对象的技术的使用;
  • 抽象类和接口的使用;
  • 正则表达式的使用;

题量

这两次迭代因为之前的设计不适用,都做了较大的改变,因此对我来说代码量很大,但是最后一次迭代的时候也是找到了一个方法可以适应各种电路变化,也算是在方法上解决了问题。

难度

两次迭代改变难度逐渐变大,到最后如果设计不合理,也是很难应付;但是总体来说,也是需要很多时间去合理改进和修改。

设计与分析(第七次PTA)

类图:

设计:

本次设计类的数量较多:

电器类我用图的形式来展示关系:

大部分与上次相同,具体请参照第二次blog,此处仅介绍新加部分:

  • Curtain部分:自动窗帘类的抽象类;
  • S:题目给出的自动窗帘设计的类,通过总亮度来控制自己的值;
  • MutexSwitches:互斥开关的一半,控制和开关相同,存在闭合和断开的状态;
  • MutexSwitchesControler:其中有两个MutexSwitches的对象,通过遍历来寻找匹配的两个对象,通过这个类将两个互斥开关的小部分进行区分和统一变化;

分析:

  • 参考了之前学习的一些设计模式,将建造的过程和调整的过程交给一个单独的类;
  • 新加部分用电器,在互斥开关这种需要统一变化的,采用设计一个整体的控制器,化解了存储的问题;
  • 本次迭代的问题主要还是在于设计的电路和遍历、存储方式没有扩展性,没有办法在电路变复杂的情况下继续使用,并且没有将控制器当作一个用电器,导致需要单独存储,不是很方便;

SourceMonitor模拟:

  • 主要在计算电压和调整每个电器的相关参数的本分复杂度较高,在当时并没有做较好的优化,没有计算很复杂,循环很多,职责也不单一;
  • 输出部分,运用了大量的if-else语句,代码的简洁度不够,可以在后期进行改进;

设计与分析(第八次PTA)

类图:

设计:

本次电子元件和信息的框架和上次变化不大,最大的变化来自最终容器的变化(因为上次设计的容器已经不能胜任这次的迭代了,所以进行进一步的设计):
设计了两种电路:
此外,每new一个新对象,就把他放进两个不同的容器,一个用于调整状态和遍历,一个用来计算电路,降低了后面的遍历的难度;

  • 并联电路:含有串联电路的集合;
  • 串联电路:含有电器和并联电路的总集合;
  • 干路电路既可以存储干路中的电器元件,又可以存储一组并联支路;
  • 支路相对独立,可以单独计算自己的电阻,可以单独判断自己是不是被断开;
  • 支路的总电阻可以单独计算;
  • 可以兼容后期的多重并联、多次并联,充分考虑可扩展性;

分析:

  • 首先是在设计电路的时候,整体兼容性更强了;
  • 其次,在遍历求电阻电压电流的时候,运用了递归的方法,使整体的难度和难度大幅降低,代码量大幅降低;

SourceMonitor模拟:

  • 总体上来看,虽然题目变难了,整体的复杂度还降低了,说明相对于前几次来说MVC做的更好了,整体的设计更加合理了;
  • 求电阻电压电流的过程复杂度大幅度降低;

踩坑心得:

  • 在编写需要迭代的程序的时候不仅需要考虑需要迭代的部分,还应该充分考虑和预测会变化的部分,将会发生的变化映射到代码上的变化降到最低;
  • 容器的设计不仅需要考虑容器自身的性质,还应该考虑容器中东西的如何去储存,不要让容器成了累赘;
  • 如果一个部分用普通的循环十分复杂,需要考虑其他的方法,而不是一味的堆砌代码复杂度;

改进建议:

  • 在实体类中有大量方法的时候,多想想是不是可以运用操作类来简化并且让代码更加清晰;
  • 对于我来说,完成PTA最大的心得在于一定要做好设计再进行coding
  • 阅读完所有的测定样例后再开始设计;
  • 在设计的时候,尽量将类的用处分的更细,来完成SRP;
  • 运用不同的容器、了解不同容器的性质可以让数据存储更加合理;
  • 尽量让主函数的代码量降低,降低主函数的复杂度可以在迭代的时候改动更小;

总结

知识点:

  • 类的设计;
  • 数组、链表的使用;
  • 封装、继承、多态面向对象的技术的使用;
  • 抽象类和接口的使用;
  • 正则表达式的使用;

建议和意见:

  • 整体来说,pta的测试确实提升了同学们的设计和编码能力,是一个有力的工具,确实需要沿用;
  • 其次,希望后期的作业也可以考虑同学们的时间安排,有时候有考试需要准备的话就没什么时间去完成pta作业,因为pta确实是花费时间的。

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

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

相关文章

防火墙部署案例

通过引流方式实现防火墙旁挂部署并且实现安全防护功能案例 一、项目背景 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…

数据分析 | 整合数据

拼接与合并 1. 纵向或横向拼接:pd.concat()# 纵向拼接,在函数中放入列表,里面是想拼接的两个df # 如果列名一致,直接对齐;如果列名不一致,则各列都会保留,空值为NaN pd.concat([df1, df2], ignore_index = True) # >>> 此时索引是各自保留的,所以要忽略索引…

DCT-Net - 一键图片、视频转卡通动漫风格工具,本地一键整合包下载

只需要输入一张人物图像或者一段视频,就可以实现端到端全图卡、视频通化转换,生成二次元虚拟形象,返回卡通化后的结果图像或视频。 开发者叫menyi Fang,来自阿里巴巴通义实验室的的技术女大佬,国内大佬集成到webui,支持CPU和GPU,CPU处理速度也很快,需要的可以自行下载测…

ProPainter – AI视频去水印工具,可以去除视频中的静态水印、动态物体/人物等 本地一键整合包下载

ProPainter是一个基于E2FGVI实现的AI视频编辑工具,它可以一键移除视频内的移动物体和水印。这个开源项目提供了一个简单而强大的解决方案,帮助用户轻松编辑和改善视频内容。项目地址:https://github.com/sczhou/ProPainter 一键整合包下载:https://deepface.cc/thread-254-…

Rocky Linux捣鼓记录(六):JDK安装、配置环境变量

一、下载 A方法:我们可以直接去oracle官网下载jdk17安装包,直接安装,安装完会生成JDK主目录在/usr/lib/jvm/jdk-17-oracle-x64 B方法:su使用root用户操作,创建并进入一个便于管理JDK文件的目录 mkdir /usr/lib/jvm cd /usr/lib/jvm #下载jdk wget https://download.oracle…

川普真会说中文?连嘴型都同步,VideoReTalking AI数字人下载介绍

你能想到这种画面吗?霉霉在节目中用普通话接受采访,特朗普在老家用中文脱口秀,蔡明老师操着一口流利的英文调侃潘长江老师.. 这听起来似乎很魔幻,可如今全部由VideoReTalking实现了 你只需要传入一个视频文件和音频文件,它会生成一个新的视频,在这个视频里,不仅人物的嘴…

QR与DM码的识别

1.QR码与DM码QR码(Quick Response Code)是一种矩阵条码,能够快速被扫描设备识别。它是由日本Denso Wave公司在1994年发明的,用于追踪汽车零件。QR码可以存储更多的数据,并且可以包含文本、URL、图片等信息。QR码的特点是快速识别,因此得名。它们广泛应用于广告、产品追踪…

FFmpeg开发笔记(三十三)分析ZLMediaKit对H.264流的插帧操作

​《FFmpeg开发实战:从零基础到短视频上线》一书的“3.4.3 把原始的H264文件封装为MP4格式”介绍了如何把H.264裸流封装为MP4文件。那么在网络上传输的H.264裸流是怎样被接收端获取视频格式的呢?前文指出H.264流必定以“SPS帧→PPS帧→IDR帧”开头,接下来就来验证是否确实如…

= ERROR [sshd internal] load metadata for docker.io/vulhub/openssh:7.7 问题解决,亲测有效!

出现 ERROR [sshd internal] load metadata for docker.io/vulhub/openssh:7.7 这样的错误通常表示 Docker 客户端在尝试从 Docker Hub(docker.io)上拉取 vulhub/openssh:7.7 这个镜像时,遇到了问题而无法加载该镜像的元数据(metadata)。 我在网上查了原因,大概有一下几个…

第三次博客总结

《第三次博客》 一.家居强电电路模拟程序-3前言: 1>.代码主要功能:本次迭代的代码功能其实设备之间的连接并没有太多的变化,本次迭代的内容主要是并联和并联串 联的处理,这个功能好实现,因为设计好了串联类和并联类,只要设计好存储并联的集合,做好电 压之间赋值关系即…

2024志愿填报

推荐度由上往下,学校课程只教一小部分,就业需根据自己的方向往深处学。 一.河南工程 1.软件工程(智慧电网):属于电气信息工程学院。(可从事软件开发,物联网工程师等岗位) 课程:以课程内容来看比较全面,主要方向是软件及通信。涵盖了从设备-网络-软件-数据,其中MATLA…

大型语言模型如何工作?

引言 本文旨在以浅显易懂的方式,向读者阐释大型语言模型(LLM)的工作原理。 我们首先看一下文档补全引言 本文旨在以浅显易懂的方式,向读者阐释大型语言模型(LLM)的工作原理。 我们首先看一下文档补全器模型的工作原理:user prompt: A banana ismodel response: an elong…

idea配置sftp连接服务器

一、配置本机密钥,用于连接服务器使用 ssh-keygen命令,一路回车,生成公钥ssh-keygen -t rsa 公钥内容保存在:/Users/yf/.ssh/id_rsa下,并且将生成的文件内容复制到服务器的 ~/.ssh/authorized_keys 文件中,然后就可以在本机使用 ssh root@ip 进行连接服务器了二、配置id…

第三次博客作业-家居强电电路模拟程序3-4 blog-3

一、前言:在完成了家具强电电路模拟程序-1与家具强电电路模拟程序-2的基础上,这套家具强电电路模拟程序又经过了两次迭代,我也和解决之前迭代问题一样,先对增加的需求进行分析,然后设计我的程序,最后编写代码。在难度方面,家具强电电路模拟程序-3相对于家具强电电路模拟…

Linux服务器如何测试存储盘性能是否正常?FIO磁盘压测工具的使用详解

fio是一种I/O工具,用于基准测试和压力/硬件验证。它支持19种不同类型的I/O引擎(sync,mmap,libaio,posixaio,SG v3,splice,null,network,syslet,guasi,solarisaio等)针对磁盘的压力性能测试工具有很多,简单的测试可以通过dd命令实现,而比较专业和强大的磁盘IO测试…