首页 > 其他分享 >第二次blog

第二次blog

时间:2024-06-09 22:15:41浏览次数:21  
标签:status control name blog 电路 第二次 public 设备

一:前言
第五次作业明显比之前的难了许多,大作业是模拟家居强电电路模拟程序,本次题目集只考虑了电路只为串联的情况,但是有多个开关接入电路,同时也有电压调节器。这次作业需要我们对电器实现继承关系,即所有的用电器都需要继承与电器这个父类。
所给题目设计建议:

1、电路设备类:描述所有电路设备的公共特征。

2、受控设备类、控制设备类:对应受控、控制设备

3、串联电路类:一条由多个电路设备构成的串联电路,也看成是一个独立的电路设备

其他类以及类的属性、方法自行设计。
并且提供了四次迭代的区别:

迭代1:只有一条线路,所有元件串联
迭代2:线路中包含一个并联电路
迭代3:线路中包含多个串联起来的并联电路
迭代4:并联电路之间可能出现包含关系,
二:设计思路
首先,我们判断电路开端是否含有VCC信息,如果有,就设置电路初始电压为220V,反之为0V
然后读取所有设备信息,包括控制器和被控制器。按照从电路开端到电路接地端的方向一步一步进行处理,并且令下一个设备的输出电压等于上一个设备的输出电压。这样就能得到所有设备的输入电压和输出电压。

其次,获取了输入电压和输出电压后,就能用前者与后者的差计算出该设备的电压,再根据该设备的状态计算方式计算出它的转速或者亮度等状态信息。

最后,对设备信息进行排序输出。到此,这道题目我们就解决了。
uml类图


其中也有许多坑点,比如并联电路的等效电阻为0欧姆,就不会产生分压之类的,我们需要一次次进行调式,最后才能得到正确的代码。
CircuitDevice 类:这是所有电路设备的基类,包含设备名称、输入引脚、输出引脚和状态属性。它还定义了control方法,但这个方法没有具体实现。

ControlDevice 类:这是CircuitDevice的子类,表示控制设备。它有一个额外的ratio属性,表示控制比例。ControlDevice类重写了control方法,提供了具体的控制逻辑。

ControlledDevice 类:这是CircuitDevice的另一个子类,表示受控设备。它根据不同的设备类型(以设备名称的首字母区分)和传入的状态值来改变设备的状态。

SeriesCircuit 类:这是一个特殊的电路设备类,表示串联电路。它包含一个设备列表和设备映射,用于存储串联电路中的设备。SeriesCircuit类提供了添加设备、解析控制指令和改变设备状态的方法。

Main 类:这是程序的入口点。它使用Scanner类来读取用户输入,并根据输入的类型(连接信息、控制设备、串联电路信息、并联电路信息)调用SeriesCircuit类的方法。最后,它输出每个设备的状态。

public CircuitDevice() {
}
public CircuitDevice(String name, int inputPin, int outputPin) {
this.name = name;
this.inputPin = inputPin;
this.outputPin = outputPin;
this.status = 0; // 默认关闭状态
}

public void control(double status) {
}

public void control(String status) {
}

}

// 控制设备类
class ControlDevice extends CircuitDevice {
double ratio = 0.0;
public ControlDevice(String name, int inputPin, int outputPin) {
super(name, inputPin, outputPin);
}

private void d4(String op) {
    List<Double> ranges = asList(0.0, 0.3, 0.6, 0.9);
    int curIdx = ranges.indexOf(this.ratio);
    if (op.equals("+") && curIdx < 3) {
        this.status += 1;
        this.ratio = ranges.get(++curIdx);
    } else if (op.equals("-") && curIdx > 0) {
        this.status -= 1;
        this.ratio = ranges.get(--curIdx);
    }
}

public void control() {
    this.status = 1 - this.status; // 切换状态
}

public void control(double status) {
    this.status = status; // 切换状态
}

public void control(String status) {
    if (name.startsWith("K")) {
        this.control();
    } else if (name.startsWith("F")) {
        this.d4(status);
    } else if (name.startsWith("L")) {
        this.control(Double.parseDouble(status));
    }
}

}
三:总结
通过这几次的作业,我也已经从刚开始的吃力慢慢变得适应,这几次的作业让我学习到一个程序的好坏既要有代码的简洁也要有代码的标准,要让自己的程序好看,功能全,同时我也学习到了java中类的继承,以及集合存储中的map.当然也有很多细节:要给代码注释,要注意代码可能出现的问题,以及如何将代码的复用性提高.

标签:status,control,name,blog,电路,第二次,public,设备
From: https://www.cnblogs.com/zhujiangbing/p/18240104

相关文章

  • 第二次Blog
    引言第4次大作业第4次大作业相比前两次迭代,增加了多选题与填空题的判断,随着内容的增多,更看重代码的维护难易程度,因为前面某些测试点未通过,导致我多次尝试仍有二到三个测试点无法通过,因为代码量过大与设计的原因,导致我的代码维护难度过大,如问题类与题目类中某些方法的混淆使我的......
  • 第二次blog
    前言这三次pta大作业是我对java程序进行进一步的系统的训练。对我而言,在构建类图和考虑类与类之间的关系时显得尤为吃力。在这三次的pta大作业中我不断强化和训练我对类图构建方面的能力,也对其有了自己的认识。与此同时,我发现java程序编程的极为重要的一点就是对整体的把握,老师十......
  • OOP第二次blog
    不知不觉过去了这么久,又经历了三轮的PTA作业,到了写blog小结的时间,接下来给大家分析的第二次的PTA作业。本次作业分为以下部分:(1)总结三次题目集的知识点、题量、难度等情况。(2)设计与分析:重点对题目的提交源码进行分析。(3)采坑心得:对源码的提交过程中出现的问题及心得进行总结。(4......
  • 4~6总结blog
    第四次:一.介绍:相比于前三次,这一次也有一定的迭代,但是仍然有五个测试点未通过,接下来重点展示二.类图:三.耦合度:在这个耦合度方面,Answer类的OCavg:4.36,Main类的OCavg:40.00Answer类的WMC:48,Main类的WMC:40在软件工程中,OCavg和WMC是两个与代码复杂性相关的度量指标。OCavg表示每......
  • 第二次pta总结
    设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答题的结果。本题在答题判题程序-3基础上新增的内容统一附加在输出格式说明之后,用粗体标明。输入格式: 程序输入信息分五种,信息可能会打乱顺......
  • 第二次Blog
    1.前言第四次作业是前三次大作业的迭代,添加了选择题,多选题,填空题。多选题,填空题可以有多个答案,并且可以对一半并得到分数。这对输入是个考验。同时对比较答案也是个难题。第五次作业是设计一个智能家居强电电路模拟系统,有受控设备和控制设备,不算太难。第六次作业是第五次作业迭代......
  • 第二次Blog
    题目集47-17-4答题判题程序-4分数87作者蔡轲单位南昌航空大学设计实现答题程序,模拟一个小型的测试,要求输入题目信息、试卷信息、答题信息、学生信息、删除题目信息,根据输入题目信息中的标准答案判断答题的结果。本题在答题判题程序-3基础上新增的内容统一附加在输出格式......
  • 题目集4-6的总结性blog
    前言:在这三周java的练习中,又运用了很多知识点,正则表达式,类与对象之间的关系,类与类之间的关系,继承,多态等等,巩固了上次学习的知识并掌握了新的技巧,这轮学习让我意识到,java题目需要先构思再实践,很多复杂的类之间联系,不构思好就去写代码,就会浪费很多时间。第四次大作业:这个题目是对......
  • 第二次opp的总结和分析
    23201927-杨民星第二次blog1.前言:  继上次第一次blog之后,又开展了3次的Java的opp的训练集。在这三次的opp的题目中,第一次是对于之前三次题目的最后一次的迭代(上次3个题集的blog23201927-杨民星-第一次博客)这个题目也是答题系统的最后一个题目;而对于后面两个题目,就是基于电路......
  • 题目集4~6的总结性Blog
    第二次Blog是对第二类大作业的总结前言:前三次题目集的题量不会很大,提出的引脚我是第一次正式这种问题,有点陌生。难度偏小,虽然我没有拿满,老师还把后面的迭代方向告诉了我们,也更方便我们的设计,这一次对我来说应该是一次突破,因为我从未有一次如此清楚我代码的结构和问题,但我也有一......