期貨量化軟件:赫茲量化將圖形集成到函數(shù)庫對象之中
改進(jìn)庫類
函數(shù)庫對象所創(chuàng)建的每個圖形對象都應(yīng)意識到這一點。 當(dāng)然,如果我們只有單一對象能夠為自己創(chuàng)建圖形對象(目前,這是一個柱線對象),那么新創(chuàng)建的圖形對象不需要知道自己是由哪個對象創(chuàng)建的。 但如果每個函數(shù)庫對象都能夠為自己創(chuàng)建圖形對象,那么所有創(chuàng)建的圖形對象都應(yīng)該知道它們是由哪個對象在內(nèi)部創(chuàng)建的,以便可以引用其創(chuàng)建者,并從中獲取數(shù)據(jù)。 這對于在圖形對象上顯示數(shù)據(jù),或在不同對象之間實現(xiàn)更復(fù)雜的關(guān)系非常有用。
當(dāng)然,不可能在一篇文章中完成所有這些事情。 我將從最簡單的事情開始。 我們需要知道創(chuàng)建圖形對象的對象類型的描述。 為達(dá)此目的,我們利用對象集合 ID(為每個對象設(shè)置一個對象類型對應(yīng)的集合的 ID)。 ID 允許我們定義函數(shù)庫對象(圖形對象的創(chuàng)建者)所屬的對象類型。 當(dāng)然,這對于特定對象的準(zhǔn)確表達(dá)是不夠的。 但正如我已經(jīng)說過的,我會從簡單的事情開始。
此外,我們還需要為所有之前創(chuàng)建的函數(shù)庫對象加入顯示相應(yīng)類型的對象描述的方法。 這是 Print() 和 PrintShort() 方法,用于顯示對象屬性的完整說明和簡述。 我們將這些方法虛擬化,并在所有 CBaseObj 函數(shù)庫對象的父類中聲明它們。 為了虛擬化工作,我們需要令這些方法的參數(shù)在所有類中完全相同。 此刻,我們在不同的類中為這些方法設(shè)置了不同的參數(shù)。 有必要將它們變成單一形式,并根據(jù)經(jīng)過修改的方法參數(shù),更正方法調(diào)用。
采用必要的參數(shù)聲明兩個虛擬方法:
//--- Return an object type ? virtual int ? ? ? Type(void) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?const { return this.m_type; ? ? ? ? ? ? ? ? ? ? } //--- Display the description of the object properties in the journal (full_prop=true - all properties, false - supported ones only - implemented in descendant classes) ? virtual void ? ? ?Print(const bool full_prop=false,const bool dash=false) ?{ return; ? ? ? ? ? ? ? ? ? ? ? ?} //--- Display a short description of the object in the journal ? virtual void ? ? ?PrintShort(const bool dash=false,const bool symbol=false){ return; ? ? ? ? ? ? ? ? ? ? ? ?} ? //--- Constructor