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

第二次blog

时间:2024-06-09 22:14:53浏览次数:18  
标签:break 题目 string add1 blog 电路 new 第二次

前言

这三次pta大作业是我对java程序进行进一步的系统的训练。对我而言,在构建类图和考虑类与类之间的关系时显得尤为吃力。在这三次的pta大作业中我不断强化和训练我对类图构建方面的能力,也对其有了自己的认识。
与此同时,我发现java程序编程的极为重要的一点就是对整体的把握,老师十分强调这一点,在动手前要理清楚类与类之间的关系,最好是用类图表示。但我总是习惯于先动手,然后在考虑后面的问题,这总会导致我在最后修改问题时需要修改非常多的东西,使最后的测试难以完成。
总体的题目与我们所学习的内容相辅相成,很好的检验了我们的学习成果,总的来说题目集的难度和之前的题目集相差不大,对于类与类之间的设计,以及正则表达式的使用的难度都与之前的题目集差不多,但是这几次的题目集的测试用例更加的简单。而这几次的题目集都考察了继承的使用实现了面向对象的多态性。

 

第四次作业实际上是对之前答题判题程序的一次重要迭代,它要求我们深入理解和应用编程逻辑,因此难度相对较高。然而,从第五次作业开始,我们迎来了全新的家居强电电路模拟程序项目,这是一个全新的领域和挑战。

 

我们要设计了一个模拟电路运作的系统。该系统模拟的控制设备包括开关、分档调速器和连续调速器,它们通过控制电压差来驱动受控设备。受控设备则包括灯和风扇,它们都有两根引脚,接收来自控制设备的电压信号以实现工作状态的变化。这一设计旨在模拟实际电路的基本工作原理,为后续的电路系统设计和优化提供基础。

在电路中总的来说一共就俩种设备,一种时控制设备(例如:开关),另一种时被控制的设备(例如:电灯),因此就需要创建俩个Circuit的子类但是又是控制设备和被控设备的父类,以此来避免代码的高度复用,同时考虑对其抽象(虽然我没有对其进行抽象化......),并在最高层的类Circuit类中写出print方法,方便后续对方法进行重写和利用其进行信息的输出。

这个题目是对上一次的家庭电路系统进行的修改,与上次题目比添加了串联和并联类,上次题目集只有一条串联电路,而这次题目存在了多条串联和并联电路,而且并联电路与串联电路之间也有联系,并联类和串联类之间的联系更加复杂,电压的计算也比上次复杂多变。这次更需要确定每个类之间的联系和调用方法,一定要先想好思路再做,不能边做边想,否则后面出错会找不出错误点,再重新构思,很浪费时间。

 

 

 可以看出这次的程序有非常多的类,第一次的电路程序中只考虑一条串联电路,故电路中只有控制设备(开关,分档调速器,连续调速器),受控设备(灯啊,风扇啊)。这次的类都是元件设备,所以我先设计了一个Lead类作为所有电路元件的父类:包含了一个无参构造方法和一个有参构造方法,用于初始化对象。包括了两个引脚(虽然没怎么用上)、状态、电压、名字、优先级等属性。提供了输出方法(每个电器都需重写,有对应不同的输出方法)、设置电压方法等。
我还设计了一个Array类和Build类,其中Array类包括了一个链表,用于存储所以元件信息。Build类用于建立不同元件对象。

class Array{
	public Array() {
	}
	ArrayList<Lead> arrayList=new ArrayList<Lead>();
	public Object arraylist;
	void add1(Lead l)
	{
		arrayList.add(l);
	}
class Build{
	public Build() {}
	public void bulid(String string,Array array,int x,int a) {
		switch (string) {
		case "K": {
			SW sw=new SW(x,string+a);
        	sw.VVC();
        	array.add1(sw);
        	break;
		}
		case "L":{
			Continuous_governor L=new Continuous_governor(x,string+a);
        	L.VVC();
        	array.add1(L);
        	break;
		}
		case "F":{
			Grade_governor F=new Grade_governor(x,string+a);
        	F.VVC();
        	array.add1(F);
        	break;
		}
		case "B":{
			Incandescent_light_bulb B=new Incandescent_light_bulb(x,string+a);
         	B.VVC();
         	array.add1(B);
         	break;
		}
		case "R":{
			LED L=new LED(x,string+a);
         	L.VVC();
         	array.add1(L);
         	break;
		}
		case "D":{
         	Ceiling_fan L=new Ceiling_fan(x,string+a);
         	L.VVC();
         	array.add1(L);
         	break;
		}
	}
}
	}
public class SmartHomeCircuitSimulation {
public static void main(String[] args) {
List inputs = new ArrayList<>();
Scanner sc = new Scanner(System.in)
    while (sc.hasNextLine()) {
        String line = sc.nextLine();
        if (line.equals("end")) {
            break;
        }
        inputs.add(line);
    }
    
    
    System.out.println("@K1:turned on");
    System.out.println("@B1:190");
    System.out.println("@L1:0.60");
    
    sc.close();
}

  

采坑心得:
在做题目前没有将类和类之间的关系都完全确定,在做的过程中才慢慢定义,导致很多类没有必要,很多类之间没有联系,把题目复杂化,类的数量太多,之间的连通关系又不清楚,不好去判断,改不知道从什么出发点去改,最后还是重新构思,在一开始就将各种类想好,确定之间联系,最后在做的过程中将联系实现,并且进一步完善。

总结

在完成了这几次的题目集后,虽然可能题目的难度对于我来说还是有点大,没有能够拿到理想的分数,但是在认真的完成了每一道题后,我的收获也有很多。
三次的大练习都是针对继承,实现多态这一特性的,所以在三次作业之后我已经能够熟练地使用继承,然后也加强了对正则表达式的使用,毫无疑问正则表达式不光是当前我们解决问题的一个工具,也是我们之后工作的一个有效的工具,此外三次题目集也让我更加理解和掌握了怎么设计类与类之间的关系。

我觉得在我完成的这三次大作业中仍然有很多可以改进的地方:数据结构可以更好,下次尝试用下HashMap,提高查找速度、改善插入删除操作;依然没有很好的实现函数单一职责,但和上一次有点长进,学会了把功能相同类似的代码合并成一个函数,记得之前的代码主类里只有一个主函数,这几次我都将一些功能单拎出来成为一个函数,虽然有些函数的功能比还是很复杂;封装性不够,写的时候有些急,想到什么写什么,想用那个数据就直接用了,没有考虑数据的私有化,就直接调用,导致代码的安全性、灵活性都不高。

我相信,在未来的学习中,这些经验和技能将为我带来更大的帮助和成就。  

 

标签:break,题目,string,add1,blog,电路,new,第二次
From: https://www.cnblogs.com/lyh971433/p/18240107

相关文章

  • 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是对第二类大作业的总结前言:前三次题目集的题量不会很大,提出的引脚我是第一次正式这种问题,有点陌生。难度偏小,虽然我没有拿满,老师还把后面的迭代方向告诉了我们,也更方便我们的设计,这一次对我来说应该是一次突破,因为我从未有一次如此清楚我代码的结构和问题,但我也有一......
  • 第二次Blog总结
    一、前言经过题目集4至题目集6的学习与实践,我深刻体会到了面向对象编程(OOP)的魅力与挑战。本次总结将重点围绕三次题目集中的7-1题目,从知识点、题量、难度等方面进行分析与总结。知识点题目集4至6中的7-1题目,无一不紧扣面向对象编程(OOP)的核心概念。这些题目不仅深入探索了类的继......
  • PTA训练集阶段总结blog
    目录PTA训练集总结blog1.前言2.设计与分析题目集一7.4答题判题程序四关于设计要求:UML类图及设计分析:部分源码:复杂度分析:题目集五7.1家具强电电路模拟系统—1关于设计要求:UML类图及设计分析:部分源码:复杂度分析:题目集六家居强电电路模拟程序-2关于设计要求:UML类图及设计分析:部......