函数来访问m_nvalue

封装在编程中是一个关键概念,通过使用访问函数(如SetValue和GetValue)来保护成员变量m_nvalue,可以避免因变量重命名导致的代码破坏。封装隐藏了类的实现细节,使得程序员可以使用类而无需了解其内部工作原理,同时防止了意外的修改和滥用。此外,封装还有助于防止程序错误,因为所有对变量的修改都通过统一的函数进行,便于调试时追踪问题。封装提高了代码的可维护性,允许在不影响使用类的程序情况下,自由地更改类的实现细节。

尽管该项目工作的很好,如果我们决定重新命名m_nvalue会发生什么?我们也破坏了我们的计划!封装了我们改变我们的班级没有打破所有的代码使用它们的能力。

这里是封装的版本的这类使用访问函数来访问m_nvalue:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Change
{
private:
    int m_nValue;
 
public:
    void SetValue(int nValue) { m_nValue = nValue; }
    int GetValue() { return m_nValue; }
};
 
int main()
{
    Change cChange;
    cChange.SetValue(5);
    std::cout << cChange.GetValue() << std::endl;
}

现在,当我们决定要重命名m_nvalue,我们只需要改变SetValue和getvalue()反映变化。我们的程序不需要任何改变!

第二,隐藏详细了解类是如何实现的手段,程序员可以使用类而不知道它是如何实现的。第三,有助于防止意外的改变和滥用的封装。

由于成员变量不能直接访问,这有助于防止无意中改变值。此外,它是通常的情况下,当一个值被修改,其他值也需要更新。此外,它是通常的情况下,当一个值被修改,其他值也需要更新。例如,在一个典型的字符串,字符串时,改性,长度也需要更新。如果用户直接访问字符串,他/她会忘记更新时的长度的字符串改。然而,一个接口的功能,允许用户改变字符串的长度时,可以自动更新更改字符串,这意味着用户不必担心它!

最后,封装可以帮助您调试程序时出错。通常当程序不能正常工作,这是因为我们的一个成员变量具有不正确的值。如果每个人都能够直接访问变量,追踪这段代码修改的变量可以是困难的。然而,如果每个人都要调用相同的函数,修改一个变量,你可以简单的断点功能,观察每个人的变化值直到你看到哪里错了。

正如你所看到的,封装为一点点的努力提供了许多好处。特别是,改变类的实现细节,而不影响任何使用该类的程序代码的可维护性的能力是最重要的!


BOOL C_RecipeData::C_ModelMaskData::Load(int nNum) { m_file.Format(_T("%s\\Cmm\\Recipe\\%02d\\%s"), theApp.GetExeFolder(), nNum, CMM_FILE_NAME_RECIPE_MODEL); try { m_dSizeX = GetProfileDouble (m_sec, _T("m_dSizeX" ), m_dSizeX ); m_dSizeY = GetProfileDouble (m_sec, _T("m_dSizeY" ), m_dSizeY ); m_dSizeZ = GetProfileDouble (m_sec, _T("m_dSizeZ" ), m_dSizeZ ); m_dMarkSize = GetProfileDouble (m_sec, _T("m_dMarkSize" ), m_dMarkSize ); m_dMarkLTX = GetProfileDouble (m_sec, _T("m_dMarkLTX" ), m_dMarkLTX ); m_dMarkLTY = GetProfileDouble (m_sec, _T("m_dMarkLTY" ), m_dMarkLTY ); m_dMarkRTX = GetProfileDouble (m_sec, _T("m_dMarkRTX" ), m_dMarkRTX ); m_dMarkRTY = GetProfileDouble (m_sec, _T("m_dMarkRTY" ), m_dMarkRTY ); m_dMarkLBX = GetProfileDouble (m_sec, _T("m_dMarkLBX" ), m_dMarkLBX ); m_dMarkLBY = GetProfileDouble (m_sec, _T("m_dMarkLBY" ), m_dMarkLBY ); m_dMarkRBX = GetProfileDouble (m_sec, _T("m_dMarkRBX" ), m_dMarkRBX ); m_dMarkRBY = GetProfileDouble (m_sec, _T("m_dMarkRBY" ), m_dMarkRBY ); m_nCellRows = GetProfileInt (m_sec, _T("m_nCellRows"), m_nCellRows); m_nCellCols = GetProfileInt (m_sec, _T("m_nCellCols"), m_nCellCols); for (int i = 0; i < CMM_MASK_CELL_COLS_MAX; i++) { m_dCellColPitchX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dCellColPitchX[%02d]"), i), m_dCellColPitchX[i]); } for (int i = 0; i < CMM_MASK_CELL_ROWS_MAX; i++) { m_dCellRowPitchY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dCellRowPitchY[%02d]"), i), m_dCellRowPitchY[i]); } // Meas Hole m_nPpaMeasHoleCnt = GetProfileInt (m_sec, _T("m_nMeasPpaHoleCnt"), m_nPpaMeasHoleCnt); m_dPpaMeasHoleSize = GetProfileDouble (m_sec, _T("m_dMeasPpaHoleSize"), m_dPpaMeasHoleSize); for (int i = 0; i < CMM_MASK_PPA_MEAS_HOLE_MAX; i++) { m_dPpaMeasHoleFirstPosX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dMeasPpaHoleFirstPosX[%02d]"), i), m_dPpaMeasHoleFirstPosX[i]); } for (int i = 0; i < CMM_MASK_PPA_MEAS_HOLE_MAX; i++) { m_dPpaMeasHoleFirstPosY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dMeasPpaHoleFirstPosY[%02d]"), i), m_dPpaMeasHoleFirstPosY[i]); } // Meas Edge //m_dCellMeasEdgeRetractX = GetProfileDouble (m_sec, _T("m_dCellMeasEdgeRetractX"), m_dCellMeasEdgeRetractX); //m_dCellMeasEdgeRetractY = GetProfileDouble (m_sec, _T("m_dCellMeasEdgeRetractY"), m_dCellMeasEdgeRetractY); //for (int i = 0; i < CMM_MASK_CELL_EDGE_CNT; i++) //{ // m_dCellEdgeFirstPosX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dCellEdgeFirstPosX[%d]"), i), m_dCellEdgeFirstPosX[i]); //} //for (int i = 0; i < CMM_MASK_CELL_EDGE_CNT; i++) //{ // m_dCellEdgeFirstPosY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dCellEdgeFirstPosY[%d]"), i), m_dCellEdgeFirstPosY[i]); //} // Tension Hole m_nTensionCols = GetProfileInt (m_sec, _T("m_nTensionCols"), m_nTensionCols); m_nTensionRows = GetProfileInt (m_sec, _T("m_nTensionRows"), m_nTensionRows); m_dTensionHoleSize = GetProfileDouble (m_sec, _T("m_dTensionHoleSize"), m_dTensionHoleSize); for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionHolePosLX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosLX[%02d]"), i), m_dTensionHolePosLX[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionHolePosLY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosLY[%02d]"), i), m_dTensionHolePosLY[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionHolePosRX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosRX[%02d]"), i), m_dTensionHolePosRX[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionHolePosRY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosRY[%02d]"), i), m_dTensionHolePosRY[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionHolePosFX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosFX[%02d]"), i), m_dTensionHolePosFX[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionHolePosFY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosFY[%02d]"), i), m_dTensionHolePosFY[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionHolePosBX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosBX[%02d]"), i), m_dTensionHolePosBX[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionHolePosBY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionHolePosBY[%02d]"), i), m_dTensionHolePosBY[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionEdgePosLX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosLX[%02d]"), i), m_dTensionEdgePosLX[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionEdgePosLY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosLY[%02d]"), i), m_dTensionEdgePosLY[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionEdgePosRX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosRX[%02d]"), i), m_dTensionEdgePosRX[i]); } for (int i = 0; i < CMM_MASK_TENSION_COLS_MAX; i++) { m_dTensionEdgePosRY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosRY[%02d]"), i), m_dTensionEdgePosRY[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionEdgePosFX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosFX[%02d]"), i), m_dTensionEdgePosFX[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionEdgePosFY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosFY[%02d]"), i), m_dTensionEdgePosFY[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionEdgePosBX[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosBX[%02d]"), i), m_dTensionEdgePosBX[i]); } for (int i = 0; i < CMM_MASK_TENSION_ROWS_MAX; i++) { m_dTensionEdgePosBY[i] = GetProfileDouble (m_sec, jfcStr(_T("m_dTensionEdgePosBY[%02d]"), i), m_dTensionEdgePosBY[i]); } for (int i = 0; i < CMM_MASK_CORNER_EDGE_CNT; i++) { m_dCornerEdgePosX[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dCornerEdgePosX[%02d]"), i), m_dCornerEdgePosX[i]); // 2019-10-29 Corner Edge KDO m_dCornerEdgePosY[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dCornerEdgePosY[%02d]"), i), m_dCornerEdgePosY[i]); } // Meas Edge // 2019-10-31 PPA Edge KDO for (int i = 0; i < CMM_MASK_CELL_EDGE_CNT * CMM_MASK_CELL_KIND_MAX; i++) { m_dPpaMeasEdgeFirstPosX[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dPpaMeasEdgeFirstPosX[%02d]"), i), m_dPpaMeasEdgeFirstPosX[i]); m_dPpaMeasEdgeFirstPosY[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dPpaMeasEdgeFirstPosY[%02d]"), i), m_dPpaMeasEdgeFirstPosY[i]); } m_nPpaMeasRetractCnt = GetProfileInt(m_sec, _T("m_nPpaMeasRetractCnt"), m_nPpaMeasRetractCnt); for (int i = 0; i < CMM_MASK_PPA_RETRACT_MAX * CMM_MASK_CELL_KIND_MAX; i++) { m_dPpaMeasRetractPosX[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dPpaMeasRetractPosX[%02d]"), i), m_dPpaMeasRetractPosX[i]); m_dPpaMeasRetractPosY[i] = GetProfileDouble(m_sec, jfcStr(_T("m_dPpaMeasRetractPosY[%02d]"), i), m_dPpaMeasRetractPosY[i]); } m_dHoleCellFirstX = 0; m_dHoleCellFirstY = 0; m_dFoleCellRadius = 0; m_dHoleCellFirstX = GetProfileDouble(m_sec, _T("m_dHoleCellFirstX"), m_dHoleCellFirstX); m_dHoleCellFirstY = GetProfileDouble(m_sec, _T("m_dHoleCellFirstY"), m_dHoleCellFirstY); m_dFoleCellRadius = GetProfileDouble(m_sec, _T("m_dFoleCellRadius"), m_dFoleCellRadius); m_nEdgeCellType = 0; m_nEdgeCellType = GetProfileInt(m_sec, _T("m_nEdgeCellType"), m_nEdgeCellType); m_nTotalCellKind = GetProfileInt(m_sec, _T("m_nTotalCellKind"), m_nTotalCellKind); for (int i = 0; i < CMM_MASK_CELL_ROWS_MAX; i++) { m_nCellUse[i] = GetProfileInt(m_sec, jfcStr(_T("m_nCellUse[%02d]"), i), m_nCellUse[i]); } for (int i = 0; i < CMM_MASK_CELL_KIND_MAX; i++) { m_nCellRows1[i] = GetProfileInt(m_sec, jfcStr(_T("m_nCellRows1[%02d]"), i), m_nCellRows1[i]); } for (int i = 0; i < CMM_MASK_CELL_KIND_MAX; i++) { m_nCellCols1[i] = GetProfileInt(m_sec, jfcStr(_T("m_nCellCols1[%02d]"), i), m_nCellCols1[i]); } for (int i = 0; i < CMM_MASK_CELL_KIND_MAX; i++) { m_nPpaMeasRetractCnt1[i] = GetProfileInt(m_sec, jfcStr(_T("m_nPpaMeasRetractCnt1[%02d]"), i), m_nPpaMeasRetractCnt1[i]); } } catch (CString) { return FALSE; } return TRUE; }优化函数,提高效率,减少I/O
08-30
class AFX_EXT_CLASS CHMConfigFile { public: CHMConfigFile(); CHMConfigFile(char* szFilename); // 惑措版肺(相对路径) virtual ~CHMConfigFile(); BOOL SetFileName(char* szFilename); BOOL WriteToFile(); BOOL WriteToFileRMM(); void SetRewriteMode(BOOL bRewrite) { m_bRewrite = bRewrite; } BOOL GetRewriteMode() { return m_bRewrite; } ////////////////////////////////////////////////////////////////////////// int GetItemValue(char* szName, CString& strValue, char* strDefault = NULL); int GetItemValue(char* szName, int& nValue, int nDefault = 0); int GetItemValue(char* szName, unsigned short &nValue, unsigned short sDefault = 0); int GetItemValue(char* szName, double& dValue, double dDefault = 0.0); int GetItemValue(int nIdx, char* szName, CString& strValue, char* strDefault = NULL); int GetItemValue(int nIdx, char* szName, int& nValue, int nDefault = 0); int GetItemValue(int nIdx, char* szName, unsigned short &nValue, unsigned short sDefault = 0); int GetItemValue(int nIdx, char* szName, double& dValue, double dDefault = 0.0); ////////////////////////////////////////////////////////////////////////// BOOL SetItemValue(char* szName, char* szvalue); BOOL SetParamItemValue(char* szName, char* szvalue); BOOL SetItemValue(char* szName, int& nValue); BOOL SetItemValue(char* szName, unsigned short &nValue); BOOL SetItemValue(char* szName, double& dValue); BOOL SetItemValue(int nIdx, char* szName, char* szvalue); BOOL SetItemValue(int nIdx, char* szName, int& nValue); BOOL SetItemValue(int nIdx, char* szName, unsigned short &nValue); BOOL SetItemValue(int nIdx, char* szName, double& dValue); void RemoveAllItem(); BOOL RemoveItem(char* szName); BOOL RemoveItem(int nIdx, char* szName); // OhByungGil Modify -> LogFile Write void SetLogMode(BOOL bMode) { m_bLogMode = bMode; } BOOL GetLogMode() { return m_bLogMode; } void SetLogFilePath(CString strLogFilePath) { m_strLogFileName = strLogFilePath;} CString GetLogFilePath() { return m_strLogFileName; } void WriteLog( char* szName, char* szvalue ); void WriteLog( char* szName, int& nValue ); void WriteLog( char* szName, unsigned short &nValue ); void WriteLog( char* szName, double& dValue ); protected: BOOL WriteToLogFile(CString& strContents); private: CString m_strFileName; CObList m_ItemList; int m_nItemCount; BOOL m_bRewrite; CString m_strLogFileName; // OhByungGil 100531 BOOL m_bLogMode; CRITICAL_SECTION m_cs; };
03-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值