计算器界面代码重构

计算器界面代码重构
什么是软件开发过程中的重构?
重构(Refactoring)
——以改善代码质量为目的代码重写
  使其软件的设计和架构更加合理
  提高软件的扩展性和维护性

代码实现与代码重构不同
——代码实现
  按照设计编程实现,重心在于功能实现
——代码重构
  以提高代码质量为目的软件架构设计

区别:
代码实现时不考虑架构的好坏,只考虑功能的实现
代码重构时不能影响已实现的功能,只考虑架构的改善

QCalculatorUI.h

#ifndef _QCALCULATORUI_H_
#define _QCALCULATORUIH_

#include <QWidget>
#include <QPushButton>
#include <QLineEdit>

class QCalculatorUI : public QWidget
{
private:
    QLineEdit* m_edit;
    QPushButton* m_buttons[20];

    QCalculatorUI();
    bool construct();

public:
    static QCalculatorUI* NewInstance();
    void show();
    ~QCalculatorUI();

};

#endif // _QCALCULATORUI_H_

QCalculatorUI.cpp

#include "QCalculatorUI.h"

QCalculatorUI::QCalculatorUI(): QWidget(NULL,Qt::WindowCloseButtonHint) //此处QCalculatorUI就是作为顶层窗口存在的,虽然这个地方继承自QWidget,但是赋值为NULL,相当于它是没有父类的(但是实际上还是有的)。
                                                                        //将窗口中的最大化和最小化去掉
{
    //因为QLineEdit与QCalculatorUI以及QPushButton与QCalculatorUI是组合关系,那么就应该同生死,因此需要在构造函数对其定义。因为此处涉及到在堆上申请内存空间,因此需要
    //使用二阶构造

}

bool QCalculatorUI::construct()
{
    bool ret = true;
    const char* btnText[20] =
    {
        "7", "8", "9", "+", "(",
        "4", "5", "6", "-", ")",
        "1", "2", "3", "*", "<-",
        "0", ".", "=", "/", "C",
    };

    m_edit = new QLineEdit(this);

    if(m_edit != NULL)
    {
        m_edit->move(10,10);
        m_edit->resize(240,30);
        m_edit->setReadOnly(true);  //使QLineEdit只读
    }
    else
    {
        ret = false;
    }

    for(int i=0; (i<4) && ret; i++)
    {
        for(int j=0; (j<5) && ret; j++)
        {
            if(m_buttons[i*5 + j] != NULL)
            {
                m_buttons[i*5 + j] = new QPushButton(this);
                m_buttons[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
                m_buttons[i*5 + j]->resize(40,40);
                m_buttons[i*5 + j]->setText(btnText[i*5 + j]);
            }
            else
            {
                ret = false;
            }
        }
    }

    return ret;
}

QCalculatorUI* QCalculatorUI::NewInstance()
{
    QCalculatorUI* ret = new QCalculatorUI();

    if((ret == NULL) || !(ret->construct()))
    {
        delete ret;
        ret = NULL;
    }

    return ret;
}

void QCalculatorUI::show()
{
    QWidget::show();
    this->setFixedSize(this->width(),this->height()); //固定窗口的大小
}
QCalculatorUI::~QCalculatorUI()
{

}

main.cpp

#include <QApplication>
#include "QCalculatorUI.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QCalculatorUI* cal = QCalculatorUI::NewInstance();
    int ret = 0;

    if(cal != NULL)
    {
        cal->show();
        ret = a.exec();
        delete cal; //当程序运行到最后时,将生成的cal对象释放掉。
    }

    return ret;
}

原文地址:https://www.cnblogs.com/-glb/p/12080792.html

时间: 2024-11-05 13:45:47

计算器界面代码重构的相关文章

第九课、计算器界面代码重构

一.重构的概念 1.重构是以改善代码质量为目的代码重写 (1).使其软件的设计和架构更加合理 (2).提高软件的扩展性和维护性 2.代码实现和代码重构的不同 (1).代码实现:按照设计编程实现,重在实现功能 (2).代码重构:以提高代码质量为目的软件架构优化 (3).区别 A.代码实现时不考虑架构的好坏,只考虑功能的实现 B.代码重构时不影响已实现的功能,只考虑架构的改善 3.软件开发的过程 (1).从工程的角度对软件开发中的活动进行定义和管理 4.什么样的代码需要重构 (1).当发现项目中重复

QT之计算器代码重构

首先我们来讲讲为什么要进行代码重构?在一些大的项目中,代码重构是一个必不可少的步骤.因为项目大了,代码也就多了,后期的维护将会很难,所以我们要适当的进行代码重构,让代码的可复用性提高,使软件的设计和架构更加合理. 代码实现和代码重构有什么不同呢?代码实现的重点是功能的实现,而代码重构则是在实现功能的基础上进行再次优化,以提高代码质量. 那么什么样的代码需要重构呢?依据以往的项目开发经验来看呢,当发现项目中的重复代码越来越多时.代码功能越来越不清晰时.代码离设计越来越远时等,那么这时我们就该进行代

从零开始学android&lt;使用嵌套布局实现计算器界面.十七.&gt;

所谓的嵌套布局就是在一个文件中嵌套多个布局文件 <span style="font-size:18px;"> <LinearLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:orientation="vertical" > <FrameLayout android:layou

记录一次代码重构的思路(初稿)

本次重构,需要注意: 1.代码的规范,详细的注释 主要集中 在方法和类的描叙 2.目录结构的合理,包名的设计 首先目录的设计: 1.activitiy的目录 (所有的界面) 2.serverice目录 (后台的服务) 3.通用的目录 (通用的方法与常量:譬如时间,字符串操作,定义常量) 4.数据库 目录 (sqlite的方法) 5.网络通信目录(上传数据与更新软件的) 6.文件目录(文件操作的目录) 7.参数配置目录 (配置xml的方法) 最终设计的结果: 文件目录与参赛配置,都放到tools中

NET代码重构

记一次.NET代码重构 好久没写代码了,终于好不容易接到了开发任务,一看时间还挺充足的,我就慢慢整吧,若是遇上赶进度,基本上直接是功能优先,完全不考虑设计.你可以认为我完全没有追求,当身后有鞭子使劲赶的时候,神马设计都是浮云,按时上线才是王道,毕竟领导是不会关注过程和代码质量的,领导只看结果,这也许就是我等天朝码农的悲哀. 需求:是这样的,要开发一个短信发送的模板,不同客户可能会使用不同的模板,而不同的客户使用的变量参数也是不同的.之前为了应急,线上已经完成了一个短信模板发送短信的功能,短信模板

JAVA开发简易计算器界面-SWT

大家好,我是成都[LD],博客四年前就申请了,一直没打理,最近正好有时间,遂萌生了写技术博客的念头.我不得不感慨现在新技术更新很快,一不小心,就感觉自身就Out了.记得一年前,当时我也是在51CTO上了解到NoSQL和Hadoop这样的信息,当时就简单觉得很新奇,没想到一年之后发展如此迅速~~当然我这样说,并不是叫大家去追寻新技术,最根本的还是基础打牢靠,休息的时候多去了解下最新的IT动态.学习下前辈高手的一些技能~~打铁还需自身硬嘛! 我写博客的目的:一来是为了促进自身的进步,二来是为了希望与

手把手教你做安豆计算器(二)-计算器界面布局

第3节 计算器界面布局 现在起,我们就开始正式开发"计算器"应用.这一节,我们将完成计算器的界面布局,让它初具计算器的模样. 计算器界面是通过布局文件定义的.它位于项目的res\layout\activity_main.xml文件中. 这个布局文件通过java源代码MainActivity.java中的setContentView()函数,设置到界面上. @Override protected void onCreate(Bundle savedInstanceState) { sup

Android 项目代码重构思想总结

代码重构的根本思想是模块化.灵活性.高内聚.低耦合. Android 项目代码重构: 将与业务逻辑无关的公共基本资源.工具类等等抽取到一个lib 工程中,主程序中只放与业务逻辑相关的代码和工具类: 1.将公共资源类进行抽取,包括: string.xml color.xml styel.xml drable  中自定义的shap .selector.anim 这些资源基本是和程序业务逻辑无关的,将其放到主工程中只会增加代码量影响对程序业务逻辑的理解. 工程项目所特有的资源可以采取继承于lib库工程

设计模式与代码重构——ios篇

有一阵子没写技术分享文了,最近每个月写一篇个人空间日记.主要是觉得自己技术比较一般写不出有质量的东西,误人子弟.互联网信息膨胀,让我们获取信息更加便捷,然而获取个人所需的正确信息,却需要每个人具备更强的搜索能力.搜索能力作为代码,就需要更优的算法.算法就像是程序的CPU,决定着程序的运行效率. 与其说电脑改变了世界,不如说是电脑改变了人类改变世界的效率.电脑其实是根据人脑设计的,而程序思想和人的思想相通,所以一个程序员在学会一门语言后,学习第二门语言会来的容易很多,因为编程思想是相通的.我认为,