在此是DNA各個元素,記載著人描述量測項目的方式。
在此記錄的各種資訊都是給人看的。
量測點、背景顏色、參數串
運算子的內容,也是配合軟體運作而制作的特殊運算。
最特別的就是參數串,以浪費空間式的各別定義每一個記憶體空間的單獨使用
std::vector<int> m_Parameters; //裝真正的參數,其中一個或者有用到的位址有值,其它裝-1。
CString m_paraStr; //描述(每一個參數只有一個描述)
Nucleotide.h
#ifndef NUCLEOTIDE_H
#define NUCLEOTIDE_H
#include <vector>
enum PointTotal { Pn1 = 1, ..., NoPn = 999 };
enum ColorType { NoColor = 0, ..., White, Red, Green, Blue, Dark };
enum ParaOfPara { PA_FEover = 0, PA_FElength, ..., PA_Max };
enum FEtype { FT_1overN = 0, FT_Ncm };
class Nucleotide
{
//建解構子
public:
Nucleotide(const ColorType& _C = NoColor, const PointTotal& _P = NoPn,
const int& _N1 = -1,
const int& _N2 = -1,
const int& _N3 = -1 );
~Nucleotide();
//該項目共幾點
private:
PointTotal m_MsrPointTotal;
public:
void SetMsrPointTotal(const PointTotal& pn);
const PointTotal GetMsrPointTotal() const;
const CString GetStrMsrPointTotal() const;
//背景顏色
private:
ColorType m_BkColor;
public:
void SetBackColor(const ColorType& clr);
const ColorType GetBackColor() const;
const CString GetStrBackColor() const;
//參數串
private:
CString m_paraStr;
std::vector<int> m_Parameters;
public:
void SetPara(const ParaOfPara&, const int&);
const int GetPara(const ParaOfPara&) const;
const CString GetStrPara() const;
//運算子
const BOOL operator==(const Nucleotide& vNucl) const;
void operator= (const Nucleotide& vNucl);
const BOOL equalMsrPtTotal(const Nucleotide& vCar) const;
const BOOL equalBackColor(const Nucleotide& vCar) const;
const BOOL equalParameter(const Nucleotide& vCar) const;
const CString ShowMe() const;
};
#endif
Nucleotide.cpp
檢查參數
檢查vector長度應該是否相同(必須相同),並且檢查每一個的參數是否相同。參數內容,只好一個一個檢查。降低if裡的邏輯複雜度。
利用enum提高for迴圈的可讀性
const BOOL Nucleotide::equalParameter(const Nucleotide& vCar) const
{
BOOL b(TRUE);
if (vCar.m_Parameters.size() == m_Parameters.size())
for ( int i = 0; i < PA_Max; ++i)
if (vCar.m_Parameters[i] != m_Parameters[i])
b = FALSE;
else
ASSERT(0);
return b;
}
