OOP最后两次作业总结

news/2024/7/3 15:02:42/文章来源:https://www.cnblogs.com/sedaion/p/18275917

OPP最后两次作业总结
前言
两次题目集其实都是在前面的基础上进行迭代,第一次作业说实话我没花什么时间,毕竟我从写第一次PTA就是给电器使用两个接点,我从拿到题目到达到及格分只用了半天时间,然后最后又花了点时间测试几个样例,拿到了82分。然后最后一次作业嘛,我几乎是直接开摆了,总共有四个样例,我只过了三个就没管了,然后就直接交了,勉强拿到了25分,但是最后一看排名,没想到居然是99名,也是有点出乎我的意料。这大概就是我这两次作业是怎么完成的了。

设计与分析
两次作业都没怎么做设计方面的事情,就是把需求直接加到代码里面,然后遇到问题就调试几下,最后调试到样例都过了就自己在那边写几个样例进行自测,最后写的差不多了就交PTA上,没设计这回事。

踩坑心得

在写最后这次作业的时候我倒是踩了一些坑,首先就是我的线路连接方面的问题,我的线路连接函数设计比较混乱,导致从一个线路连接到另外一个线路比较难,其实大体的结构没什么问题,但是到后面出现一些新的需求的时候我就要反复修改代码了,估计这是刚开始写代码的时候几乎从来没有好好想过怎么连接,就是直接上手开练的结果,导致最后就是反复修改,改的自己都不知道怎么运行的逻辑,然后在混乱的体系中尝试理解,利用反复的调试来解决错误,最后虽然也能获得一个正确的结构,但是说实话挺像在混日子的,
我的线路代码定义在四个类中,这是类设计的核心部分

Line(抽象电路类)
class Line {
public double resistance = 0;
public double inputVoltage = 0;
public double inVoltage = 0;
public double outVoltage = 0;
public double electricity = 0;
// public TreeMap <String, ArrayList > route = new TreeMap<>();
//public TreeMap <String, Double> PointVoltage = new TreeMap<>();
}

Circuit(串联电路类)

class Circuits extends Line{
public String tick;
public Boolean mainState = false;
public ArrayList circuits = new ArrayList<>();
public double electricity = 0;
public boolean judgeShortCircle(){
boolean state = false;
if(this.resistance == 0){
state = true;
}
return state;
}
}

ParallelConnection(并联电路类)

class ParallelConnection extends Line{
public double resistance = -1;
public String tick;
public ArrayList parallelConnection = new ArrayList<>();
}

ConnectionManager(计算线路属性的函数)
class ConnectionManager {

public static double getComponentResistance(Component component, Map<Component, Device> devices, TreeMap<String, Circuits> circuits, TreeMap<String, ParallelConnection> parallelConnections) {double resistance = 0;if (component.type.equals("T")) {resistance = circuits.get(component.tick).resistance;} else if (component.type.equals("M")) {resistance = parallelConnections.get(component.tick).resistance;} else {resistance = devices.get(component).getResistance();}return resistance;
}public static void chargeOpenParallelConnection(Map<Component, Device> devices, ParallelConnection parallelConnection, TreeMap<String, ParallelConnection> parallelConnections, TreeMap<String, Circuits> circuits) {for (Circuits c : parallelConnection.parallelConnection) {

// if(parallelConnection.inputVoltage == -1){
// parallelConnection.inputVoltage = 0;
// }
if (c.resistance == -1) {
c.inVoltage = parallelConnection.inVoltage;
chargeOpenCircuits(devices, c, parallelConnections, circuits);
} else {
c.inVoltage = parallelConnection.inVoltage;
c.inputVoltage = parallelConnection.inputVoltage;
chargeCircuits(devices, c, parallelConnections, circuits);
}
}
}

public static void chargeOpenCircuits(Map<Component, Device> devices, Circuits circuit, TreeMap<String, ParallelConnection> parallelConnections, TreeMap<String, Circuits> circuits) {double voltage = circuit.inVoltage;for (Component c : circuit.circuits) {if (c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {parallelConnections.get(c.tick).inVoltage = voltage;chargeOpenParallelConnection(devices, parallelConnections.get(c.tick), parallelConnections, circuits);} else {parallelConnections.get(c.tick).inVoltage = voltage;parallelConnections.get(c.tick).outVoltage = voltage;chargeOpenParallelConnection(devices, parallelConnections.get(c.tick), parallelConnections, circuits);}} else if (c.type.equals("T")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {circuits.get(c.tick).inVoltage = voltage;chargeOpenCircuits(devices, circuits.get(c.tick), parallelConnections, circuits);} else {circuits.get(c.tick).inVoltage = voltage;circuits.get(c.tick).outVoltage = voltage;chargeOpenCircuits(devices, circuits.get(c.tick), parallelConnections, circuits);}} else if (devices.get(c).ChargeCircuitsState) {continue;} else if (c.type.equals("F") || c.type.equals("L")) {devices.get(c).setInputVoltage(circuit.inputVoltage);circuit.inputVoltage = devices.get(c).getOutputVoltage();devices.get(c).setOutVoltage(voltage);}if (!c.type.equals("T") && !c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {devices.get(c).setInVoltage(voltage);devices.get(c).setChargeCircuitsState(true);break;} else {devices.get(c).setInVoltage(voltage);devices.get(c).setOutVoltage(voltage);devices.get(c).setChargeCircuitsState(true);}}//这里重复了两次}
}public static void chargeCircuits(Map<Component, Device> devices, Circuits circuit, TreeMap<String, ParallelConnection> parallelConnections, TreeMap<String, Circuits> circuits) {double voltage = circuit.inVoltage;for (Component c : circuit.circuits) {if (c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {parallelConnections.get(c.tick).inVoltage = voltage;parallelConnections.get(c.tick).inputVoltage = 0;chargeOpenParallelConnection(devices, parallelConnections.get(c.tick), parallelConnections, circuits);} else {parallelConnections.get(c.tick).inVoltage = voltage;parallelConnections.get(c.tick).inputVoltage = circuit.inputVoltage * (parallelConnections.get(c.tick).resistance / circuit.resistance);voltage -= parallelConnections.get(c.tick).inputVoltage;parallelConnections.get(c.tick).outVoltage = voltage;chargeParallelConnection(devices, parallelConnections.get(c.tick), parallelConnections, circuits);}} else if (c.type.equals("T")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {circuits.get(c.tick).inVoltage = voltage;circuits.get(c.tick).inputVoltage = 0;chargeOpenCircuits(devices, circuits.get(c.tick), parallelConnections, circuits);} else {circuits.get(c.tick).inVoltage = voltage;circuits.get(c.tick).inputVoltage = circuit.inputVoltage * (circuits.get(c.tick).resistance / circuit.resistance);voltage -= circuits.get(c.tick).inputVoltage;circuits.get(c.tick).outVoltage = voltage;chargeCircuits(devices, circuits.get(c.tick), parallelConnections, circuits);}} else if (devices.get(c).ChargeCircuitsState) {continue;} else if (c.type.equals("F") || c.type.equals("L")) {devices.get(c).setInputVoltage(circuit.inputVoltage);circuit.inputVoltage = devices.get(c).getOutputVoltage();devices.get(c).setOutVoltage(voltage);} else {if(Math.abs(circuit.resistance + 1.0) < 0.0001){devices.get(c).setInputVoltage(0);}else {devices.get(c).setInputVoltage(circuit.inputVoltage * (devices.get(c).getResistance() / circuit.resistance));//注意这里每个电路循环了两遍}}if (!c.type.equals("T") && !c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {devices.get(c).setInVoltage(voltage);devices.get(c).setChargeCircuitsState(true);break;} else {devices.get(c).setInVoltage(voltage);voltage -= devices.get(c).inputVoltage;devices.get(c).setOutVoltage(voltage);devices.get(c).setChargeCircuitsState(true);}}//这里重复了两次}circuit.outVoltage = voltage;
}//为串联电路充能public static void chargeParallelConnection(Map<Component, Device> devices, ParallelConnection parallelConnection, TreeMap<String, ParallelConnection> parallelConnections, TreeMap<String, Circuits> circuits) {for (Circuits c : parallelConnection.parallelConnection) {

// if(c.resistance != -1) {
// if (parallelConnection.inputVoltage == -1) {
// parallelConnection.inputVoltage = 0;
// }//不知道有什么用
c.inVoltage = parallelConnection.inVoltage;
if(c.resistance != -1) {
c.inputVoltage = parallelConnection.inputVoltage;
}
chargeCircuits(devices, c, parallelConnections, circuits);
// }
}
}//为并联电路充能

public static void GenerateCurcuitsEletricity(Map<Component, Device> devices, Circuits circuit, TreeMap<String, ParallelConnection> parallelConnections, TreeMap<String, Circuits> circuits) {double eletricity = circuit.inputVoltage / circuit.resistance;for (Component c : circuit.circuits) {if (c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {parallelConnections.get(c.tick).electricity = -1;GenerateParallelEletricity(devices, parallelConnections.get(c.tick), parallelConnections, circuits);} else {GenerateParallelEletricity(devices, parallelConnections.get(c.tick), parallelConnections, circuits);}} else if (c.type.equals("T")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {circuits.get(c.tick).electricity = -1;GenerateCurcuitsEletricity(devices, circuits.get(c.tick), parallelConnections, circuits);} else {GenerateCurcuitsEletricity(devices, circuits.get(c.tick), parallelConnections, circuits);}} else if (devices.get(c).isGenerateState()) {continue;} else {devices.get(c).setInputVoltage(circuit.inputVoltage * (devices.get(c).getResistance() / circuit.resistance));//注意这里每个电路循环了两遍}if (!c.type.equals("T") && !c.type.equals("M")) {if (getComponentResistance(c, devices, circuits, parallelConnections) == -1) {devices.get(c).setGenerateState(true);break;} else {devices.get(c).setEletricity(eletricity);devices.get(c).setGenerateState(true);}}//这里重复了两次}
}
public static void GenerateParallelEletricity(Map<Component, Device> devices,ParallelConnection parallelConnection,TreeMap<String, ParallelConnection> parallelConnections,TreeMap<String, Circuits> circuits){for (Circuits c : parallelConnection.parallelConnection) {

// if (parallelConnection.electricity == -1) {
// parallelConnection.electricity = 0;
// }//不知道有什么用
if(c.inputVoltage == -1) {
continue;
}
else if(c.inputVoltage == 0){
parallelConnection.electricity = 0;
break;
}
c.electricity = c.inputVoltage / c.resistance;
GenerateCurcuitsEletricity(devices, c, parallelConnections, circuits);
}
}
}

(在此附上类图)

对本学期本门课程的改进建议及意见
我感觉今年的课程有点虎头鼠尾了,刚开始上的各种面向对象原则都是必要的东西,但是到后面讲的那些原则多数不能直接了解真正的用法,不使用也没有太大关系,说实话,我这学期写的代码确实多数是垃圾代码,老师并没有真正教会我太多,倒是给了我几个教训,
1.那就是多数知识都是从小圈子里面学习出来的,周围人什么样自己常常就会什么样,就像PTA里排名靠前的总是那一堆人,我嘛其实也不怎么样,虽然我给自己的要求比较低,每次PTA及格就行,但是就是发现就算这样我也超过一半人了,也是很奇怪,我总觉得自己是比较开摆的人,这学期线代都没考及格,但是这门课程确超过一半的人了,大概是我宿舍的其他三个人大部分PTA都是满分把我逼上去的吧,。
2.原来学习成果确实不是和学习时间成正比,只是要养成一个习惯,每天学多久,玩多久,而且要以一种沟通的心态找到和自己一起学的人,这才算是有效的学习,自己一个人在图书馆学是造不出任何东西的,沟通始终是必要的,我的线代就是这么挂的。
3.每次上完课记得回课,这样才是有效率的学习,这学期我自己找了一个音乐学院的研究生教我美声,我发现这才是主动学习,从小学到现在我所接受的教育都是被逼着去学的,我也是才明白有一门爱好的重要性,还有打游戏确实有点浪费时间,毕竟现在的游戏套路就那么几种,不同类型和风格的游戏水平总是迭代上升的,那么每隔两个月玩七天貌似是更加合理的选择。
4.然后就是刷视频的问题,现在的自媒体也总是在批评一些有的没的东西,不管怎么说都是套路化的,每个自媒体博主都像是一个小吃店,跟你讲一些能够让你高兴但却是套路化的东西,看了多久都学不会做早餐,最多也只是供我们评价一下早餐的形状和样式,并不能教我多少东西,所以,除了聊天还是少刷视频吧

)前言:总结两次题目集的题目的知识点、题量、难度等情况
(2)设计与分析:重点对题目的提交源码进行分析,可参考SourceMontor的生成报表内容以及PowerDesigner的相应类图,要有相应的解释和心得(做到有图有真相),本次Blog必须分析题目集1~3的最后一题
(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结,务必做到详实,拿数据、源码及测试结果说话,切忌假大空
(4)改进建议:对相应题目的编码改进给出自己的见解,做到可持续改进
(5)总结:对本阶段两次题目集的综合性总结,学到了什么,哪些地方需要进一步学习及研究
(6)最后一段,给出对本学期本门课程的改进建议及意见(难度大就不要提了)。

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

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

相关文章

游戏常用运行库 合集 | Game Runtime Libraries Package(2.1.24.0618)

软件简介: 游戏常用运行库 合集 整合了许多游戏会用到的运行库,支持 Windows XP – Windows 11 系统,并且支持自动检测系统勾选推荐的运行库,方便快捷。 本版特点: By:mefcl整合常见最新游戏所需运行库根据系统自动勾选推荐的版本纯净安装包无病毒和弹窗行为支持静默安装…

背包DP——混合背包

顾名思义,混合背包就是将前面三种的背包问题(01,完全,多重)混合起来,有的只能取一次,有的能取无限次,有的只能取 k 次。 正解特解 部分情况下,如小数据,可以转换成多重背包(把完全情况的数量换成足够大,如1e7,就把完全相对变成了多重) 例题 https://www.luogu.co…

cent os配置docker(解决2024.6月docker镜像拉取问题)

docker拉取镜像目前已经失效,多方查找目前试了试下面这个还可以用 首先执行以下命令安装dockeruname -r yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yum …

Field stock doesnt have a default value

当你遇到 "Field stock doesnt have a default value"​ 这个错误时,这意味着你正在尝试插入一条新记录到数据库中,但是涉及的 stock 字段没有提供一个值,同时该字段在数据库表定义中也没有设置默认值(default value),并且数据库配置为严格模式,不允许NULL值或…

南昌航空大学软件学院23201823第三次blog

一、前言 这是最后一次blog了,是一些关于题目集7~8次的总结以及这一个学期对于PTA题目集的总结了。最后这两次的题目难度其实我并不是非常了解,大抵是因为我已经来不及挽救了,但是我还是想说其实这几次题目的难度感觉并没有想象中的触不可及,而是我自己没有花足够的心思去了…

中国城市降雨量历史记录查询 All In One

中国城市降雨量历史记录查询 All In One 降雨量 历史记录中国城市降雨量历史记录查询 All In One降雨量 历史记录https://www.ceicdata.com.cn/zh-hans/china/precipitation 中国 降水量:河南:郑州 1990 - 2022 | 月 | 毫米 | 气象局 降水量:河南:郑州在12-01-2022达1.500毫米,…

oracle安装调用图形化失败

报错现象: [grid@19c01 grid]$ ./gridSetup.sh ERROR: Unable to verify the graphical display setup. This application requires X display. Make sure that xdpyinfo exist under PATH variable.No X11 DISPLAY variable was set, but this program performed an operatio…

Kubernetes-高可用k8s集群部署(多Master节点二进制方式)

一、安装Docker 配置docker的yum源地址 yum -y install wget wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo yum provides docker-ce 安装指定的docker版本 yum install -y docker-ce-20.10.7 docker-ce-cli-20…

23201813-第三次blog作业

前言: 这学期已经接近了尾声,java和面向对象的学习也已经接近结束,在这门课程的最后时间里,剩余的两次pta我都没有完成,一部分原因是后面的题目集感觉好难,然后要经过好多迭代,还有期末的考试学科很多,有大部分的时间用来复习,所以对pta就基本上放弃了,所以最后两个题…

一个HTML页面demo

代码:<!--* @Description: 一个博客页面布局,加上一些CSS和JS样式* @Author: zhangyh* @Date: 2024-06-29 15:25:16* @LastEditTime: 2024-06-29 23:06:12* @LastEditors: zhangyh* Copyright (c) 2024 by zhangyinghui181217@163.com, All Rights Reserved. --><!…

WPF网格类型像素着色器

由于WPF只能写像素着色器,没法写顶点着色器,所以只能在这上面做文章了 刚好有个纹理坐标TEXCOORD输入可用,而且值的范围是已知的0-1,左上角是原点,这就好办了 例子 索引 二分网格使用ceil 0-1移动定义域到-0.5 - 0.5,然后向上取整变成 0 / 1float4 main(float2 uv : TEXC…

LLM大模型: RAG两大核心利器: M3E-embedding和bge-rerank

RAG的效果好不好,最核心依赖两点:文本embedding语义提取的好不好,rerank的排序效果好不好(包含正确答案的文本是不是排在前面)!各自使用的环节如下:1、文本embedding的提取:理论上讲,任何transformer架构的encoder部分都可用于生成token的embedding,然后采用合适的po…

oop-PTA题目集7~8总结

一、前言 第七次和第八次的题目集中的题目均是在前两次的电路模拟程序中增加新的内容,难度相较前面两次的题目有明显增大,主要是电路结构更加复杂,比如多并联、并联包含并联等较为特殊的情况,另外,新增了一些需要特殊处理的电器设备,比如有三个引脚的互斥开关、与其他设备…

lamp lump

为网站备案老王:记得一定要完成ICP备案,才可以通过网站对外提供互联网信息服务! 老王:根据 《互联网信息服务管理办法》以及 《非经营性互联网信息服务备案管理办法》,国家对非经营性互联网信息服务实行备案制度,对经营性互联网信息服务实行许可制度。未取得许可或者未履…

UI Explorer 的下载

离线版下载地址参考 UI Path 论坛的一篇文章:Standalone UiExplorer client download?该链接现在依然有效。 另外,替换链接中的版本号可获取其他版本的下载路径。 理论上,遍历此链接可以获取最新版本的独立程序包。有了计划记得推动,不要原地踏步。

监狱视频智能分析系统

监狱视频智能分析系统解决方案包括视频AI行为智能分析预警是一套可以独立运行的监狱视频智能分析系统。仅需在原有监控终端设备上的基础上,增加一台智能预警分析盒子,基于智能视频分析盒子实现监控系统智能预警功能。当视频监控划分的视野范围内发生事先预设的事件,如人员倒…

SpringMVC初体验

新建Maven项目 pom.xml文件导包<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://ma…

.NET|--WPF|--笔记合集|--依赖项属性|--概览

前言 本文介绍一下WPF的依赖项属性, 可以让大家对该依赖项属性知识点有个简单认识. "依赖项属性"其实也是"属性"的一种, 而"只读依赖项属性"又是"依赖项属性"的一种. 层级关系 : 属性 > 依赖项属性 > 附加属性 / 只读依赖项属性…

2024年自学python必看的书籍《Python编程:从入门到实践 第三版》PDF免费下载

本书是一本针对所有层次的Python 读者而作的Python 入门书。第一部分介绍了编程环境的搭建和Python编程所必须了解的基本概念。第二部分将理论付诸实践,讲解如何开发三个项目:分别是射击游戏、数据可视化、小型Web应用程序适读人群 :本书适合对Python感兴趣的所有读者阅读。…

视频监控智能分析系统

视频监控智能分析系统核心技术优势是以各大监控终端为基础,以智能视频分析系统为核心,用户可以在后台设置视频监控智能分析系统的某些特定的规则,视频监控智能分析系统识别不同区域范围内的物体,同时识别范围内的目标行为是否符合这些规则。如果发现监控画面中的异常情况,…