if) 좌상단 좌표값 하나 (0 이상 100 이하), 우하단 좌표값 하나(0 이상 100 이하)를 받아서 직사각형을 정의하는 class를 만드는 경우
->1 ) 좌표값은 0 ~ 100을 벗어나선 안되며 2) 좌상단 좌표 < 우하단 좌표여야 함.
이것이 벗어나면 오류를 나타내야 함
정보은닉이 필요한 이유 : 1) 제한된 방법으로의 접근만 허용해서 잘못된 값이 저장되지 않도록 도와야 하고
2)실수했을 때 실수가 쉽게 발견되도록 해야 함
like this
//Point.h
class Point
{
private:
int x;
int y;
...
}
//Point.cpp
bool Point::InitMembers(int xpos, int ypos)
{
if(xpos < 0 || ypos < 0)
{
cout << "벗어난 범위의 값 전달" <<endl;
return false;
}
x = xpos;
y = ypos;
return true;
}
private으로 정보은닉, 범위를 벗어나면 에러 출력
"멤버 변수를 private로 선언, 해당 변수에 접근하는 함수를 별도로 정의해서 안전한 형태로 멤버변수의 접근을 유도하는 것이 '정보 은닉' => 좋은 클래스가 되기 위한 기본조건!"
* 액세스 함수(Access function)
int Point::GetX() const
{
return x;
}
int Point::GetY() const
{
return y;
}
bool Point::SetX(int xpos)
{
if(0> xpos || xpos >100)
{
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
x = xpos;
return true;
}
bool Point::SetY(int ypos)
{
if(0> ypos || ypos >100)
{
cout << "벗어난 범위의 값 전달" << endl;
return false;
}
y = ypos;
return true;
}
GetXXX, SetXXX
=> 멤버변수를 private로 선언하면서 클래스 외부에서의 멤버변수 접근을 목적으로 정의되는 함수들
호출하지 않아도 정의하는 이유: 지금 당장은 필요하지 않지만 필요할 수 있다고 판단되므로
*const함수
int GetX() const;
int GetY() const;
void ShowRecInfo() const;
"이 함수 내에서는 멤버변수에 저장된 값을 변경하지 않겠다!"
실수로 자신의 의도와 다르게 멤버변수의 값을 변경했을 때 컴파일 에러를 통해 이를 확인 가능
프로그래머의 실수를 최소화하기 위한 매우 의미있는 선언.
class EashClass
{
private:
int num;
public:
void InitNum(int n)
{
num = n;
}
int GetNum() const!!!!!!!!!!!!!!!!!!!!!!!
{
return num;
}
}
class LiveClass
{
private:
int num;
public:
void InitNum(const EasyClass &easy)
{
num = easy.GetNum(); //위에 const가 있어야 컴파일 에러 안뜸.
}
}
"const 함수 내에서는 const가 아닌 함수의 호출이 제한됨"
그만큼 코드의 안정성을 높일 수 있음.
'LANG > C++' 카테고리의 다른 글
[C++] 04-3.생성자(Constructor)와 소멸자(Destructor) (0) | 2023.05.12 |
---|---|
[C++]04-2.캡슐화(Encapsulation) (0) | 2023.05.12 |
[C++]03-3.객체지향 프로그래밍의 이해 (0) | 2023.05.12 |
[C++]03-2.클래스(Class)와 객체(Object) (0) | 2023.05.12 |
[C++]03-1.C++에서의 구조체 (0) | 2023.05.12 |