Native/C++

데이터의 보호

aucd29 2013. 10. 2. 18:58
[code]#include <turboc.h>

class student
{
private:
    int stNum;
    char name[16];
    unsigned score;

    BOOL testScore(int aScore)
    {
        return (aScore >= 0 && aScore <= 100);
    }
public:
    student(int aStNum)
    {
        stNum = aStNum;
        name[0] = 0;
        score = 0;
    }

    int getStNum()
    {
        return stNum;
    }

    const char* getName()
    {
        return name;
    }

    // name의 변수는 15개로 제한 되어 있기 때문에 그 이상의 데이터가 들어오게
    // 된다면 컷팅을 해줘야 된다 그렇기 때문에 strncpy를 이용해서 15개 이상은
    // 복사하지 않게 되고 만약에 외부에서 name을 strcpy를 이용 15개 이상을 입력
    // 하게 된다면 이 자료구조는 완전히 망가 지게 되므로 외부에서 제어를 할 수
    // 없게 하기 위해서 name[16] 은 private로 처리 되었다.     
    void setName(char *aName)
    {
        strncpy(name, aName, 15);
    }

    unsigned getScore()
    {
        return score;
    }

    void setScore(int aScore)
    {
        if(testScore(aScore))
            score = aScore;
    }
};

void main()
{
    student kim(8906123);
    kim.setName("kim Hero");
    kim.setScore(99);

    printf("Number : %d, Name : %s, Score : %d\n",
        kim.getStNum(), kim.getName(), kim.getScore());
}[/code]