91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

QT之界面與業務邏輯的分離(十二)

發布時間:2020-08-05 09:08:05 來源:網絡 閱讀:5053 作者:上帝之子521 欄目:開發技術
    我們在實現計算器的時候,得考慮到界面與邏輯的分離。

那么基本程序的架構一般包含:1、用戶界面模塊(UI),用來接受用戶輸入及呈現數據;2、業務邏輯模塊(Business Logic),根據用戶需求處理數據。
那么基本的設計原則是:功能模塊之間需要進行解耦;核心思想是強內聚,弱耦合:1. 每個模塊應該只實現單一的功能;2. 模塊內部的子模塊只為整體的單一功能而存在;3. 模塊之間通過約定好的接口進行交互。
那么在工程開發中接口是什么呢?從廣義上來說,接口是一種契約(協議,語法,格式等)。從狹義上來說,分為面向對象和面向過程兩個方面。對于面向過程而言,接口是一組預定義的函數原型。對于面向對象而言,接口是純虛類(C# 和 Java 直接支持接口)。
那么我們實現的用戶界面與業務邏輯的交互可以用下圖來描述:
QT之界面與業務邏輯的分離(十二)
模塊之間僅通過接口進行關聯:必然存在模塊會使用接口,必然存在模塊實現對應的接口。
模塊間的關系是單向依賴的:避免模塊間存在循環依賴的情況,循環依賴是最糟糕設計的標準之一。
我們建立一個 ICalculator 頭文件,包含兩個純虛函數:virtual bool expression(const QString& exp) = 0; virtual QString result() = 0;
建立 QCalculator 類,頭文件如圖所示:
QT之界面與業務邏輯的分離(十二)
Qcalculator.cpp 文件實現如下:
bool QCalculator::construct()
{
m_ui = QCalculatorUI::NewInstance();

            if( m_ui != NULL )
            {
                    m_ui->setCalculator(&m_cal);
            }

            return (m_ui != NULL);
    }

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

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

            return ret;
    }

    void QCalculator::show()
    {
            m_ui->show();
    }

    QCalculator::~QCalculator()
    {
            delete m_ui;
    }

在 QCalculatorUI.cpp 中我們加入
void setCalculator(ICalculator* cal)
{
m_cal = cal;
}

ICalculator* getCalculator()
{
        return m_cal;
}

那么我們最終運行得到的可執行程序就是一個已經可以進行計算的計算器了,我們輸入 3 * (2 + 3)/ 5, 結果應該為 3 。如下:
QT之界面與業務邏輯的分離(十二) QT之界面與業務邏輯的分離(十二)

 我們再除 0 ,結果為 Error。

QT之界面與業務邏輯的分離(十二)QT之界面與業務邏輯的分離(十二)
那么關于這個小項目計算器的學習,我們就到此結束了。后面繼續學習QT其他相關的知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安丘市| 榆社县| 邳州市| 白山市| 永仁县| 华容县| 巴里| 开封市| 江永县| 贵州省| 昂仁县| 海口市| 金山区| 鄂托克旗| 灵武市| 丹凤县| 紫金县| 凤台县| 正定县| 德昌县| 旌德县| 贵德县| 永新县| 攀枝花市| 天长市| 芒康县| 德清县| 金沙县| 新晃| 抚州市| 亳州市| 海南省| 平远县| 仁怀市| 益阳市| 神木县| 陵水| 吉木乃县| 青浦区| 二连浩特市| 河曲县|