BLOG-3

一、前言:
1.知识点总结
家居强电电路模拟程序3
1.知识点总结
先看题目主要内容:
控制设备模拟
本题模拟的控制设备包括:开关、分档调速器、连续调速器、互斥开关
受控设备模拟
本题模拟的受控设备包括:灯、风扇。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。
输入信息:
设备信息
连接信息
控制设备调节信息
电源接地标识:VCC,电压220V,GND,电压0V。没有接线的引脚默认接地,电压为0V。
输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。
知识点主要有
(1)大量使用了继承方面的知识,所有家具和控制器都继承自同一个父类Element元件类,这样便于后面的连接和通电处理过程
2.难度情况

家居强电电路模拟程序4
1.知识点总结
新增内容方面:
先看题目主要内容:
控制设备模拟
本题模拟的控制设备包括:开关、分档调速器、连续调速器、互斥开关。
受控设备模拟
本题模拟的受控设备包括:灯、风扇。两种设备都有两根引脚,通过两根引脚电压的电压差驱动设备工作。本次迭代模拟一种受控窗帘。受控设备电阻:白炽灯的电阻为 10,日光灯的电阻为 5,吊扇的电阻为 20,落地扇的电阻为 20,窗帘电阻为15。
输入信息:设备信息不单独输入,包含在连接信息中。
设备信息:连接信息不单独输入,包含在线路信息中。
连接信息:
控制设备调节信息:
电源接地标识:VCC,电压220V,GND,电压0V。没有接线的引脚默认接地,电压为0V。
输入并联电路信息 :在本题中,并联电路M中的串联电路可以包含别的并联电路。

输出信息:
按开关、分档调速器、连续调速器、白炽灯、日光灯、吊扇、互斥开关、受控窗帘的顺序依次输出所有设备的状态或参数。每个设备一行。同类设备按编号顺序从小到大输出。
2.难度情况

二、设计与分析:
一:家具强电电路模拟程序-3:
新增类代码:
1.窗帘类:

点击查看代码
class Curtain extends Electric{
    public void init(){
        used = true;
    }
    public boolean ifUsed(){
        return used;
    }
    public void setLine(int i){
        line = i;
    }
    public int getLine(){
        return line;
    }
    public double getResult(){
        return result;
    }
    public void setter(double power) {
        this.power = power;
    }
    public void lightSetter(double lightForce){
        if(power >= 50){
            if(lightForce >= 400){
                result = 0;
            }
            if(lightForce >= 300 && lightForce < 400){
                result = 20;
            }
            if(lightForce >= 200 && lightForce < 300){
                result = 40;
            }
            if(lightForce >= 100 && lightForce < 200){
                result = 60;
            }
            if(lightForce >= 50 && lightForce < 100){
                result = 80;
            }
            if(lightForce < 50){
                result = 100;
            }
        }else{
            result = 100;
        }
    }
}
 2.互斥开关类:
点击查看代码
class MutexSwitcher extends Controller{
    private int lineNumber2 = 0;
    private int lineNumber3 = 0;
    public void setState(){
        if(state == 0){
            state = 1;
        }else{
            state = 0;
        }
    }
    public int getState(){
        return state;
    }
    public void setLine(int i){
 
    }
    public void setLine2(int i){
        this.lineNumber2 = i;
    }
    public void setLine3(int i){
        this.lineNumber3 = i;
    }
    public int getLine(){
        return lineNumber;
    }
    public boolean ifUsed(){
        return used;
    }
}

使用souremonitor得出的结果:

家居强电电路模拟程序4
部分类图:

使用souremonitor得出的结果:

三、采坑心得:对源码的提交过程中出现的问题及心得进行总结,务必做到详实,拿数据、源码及测试结果说话,切忌假大空
1.类的设计方面:设计类时要满足六大规范,这些规范看着简单但是上手容易忽视一部分内容,导致在有些情况下要重写。
2.拓展性方面:在写题目时,其中存在的最严重的问题还是代码的拓展性问题。在题目集发布之前,我很少考虑代码的拓展性,导致在发布题目集之后总是用大把的时间用在代码的重构上,造成效率的降低。

四、改进建议:
家居强电电路模拟程序3
电路连接的方法太过麻烦,后续不好处理也不好改进,所以需要换别的方法,然后就是读取信息的方式太麻烦,代码行数太多

家居强电电路模拟程序4
大部分结构以及完善,但信息读取所用代码还是太长了,需要优化。

五、总结:
在Java中,继承和抽象方法是面向对象编程的关键特性,它们提供了代码重用性、灵活性和结构化设计的多种优势。继承允许子类从父类继承属性和方法,减少了代码重复,提高了开发效率。同时,继承还支持多态性,使子类对象可以被视为父类类型,增强了程序的灵活性。此外,继承帮助建立清晰的对象层次结构,使得程序结构更加清晰,易于理解和维护。另一方面,抽象方法通过定义标准接口,要求所有子类都必须实现这些方法,确保了子类的一致性和完整性。抽象方法允许父类专注于定义公共行为和属性,而具体的实现细节则由子类根据自身需求来完成,这样不仅提高了代码的可读性和可维护性,还避免了代码冗余。总的来说,合理利用继承和抽象方法可以使Java程序更加高效、灵活且易于维护。

六、学期总结:
经过一学期的学习,我学习到java和c语言的区别,虽然java多是设计,但是仍能感受到面向过程编程和面向对象编程的重大区别。做线性的事c语言合适,但是为了复用以及对现实的模拟,java这种面向对象的编程语言好太多了。

posted @ 2024-12-28 20:03  不常见的东洋雪莲  阅读(42)  评论(0)    收藏  举报