encapsulation

킴스코딩클럽·2022년 11월 18일
1

CS기초 시리즈

목록 보기
53/71

캡슐화 정리

  1. information hiding : 편리한 사용과 보안
  2. encapsulation
    • 객체에 관련된 정보(열거형, 구조체 , 그리고 클래스도)들을 클래스 안에 묶어 놓을 수 있음
    • 변수는 숨기고 Gettert/Setter 함수를 제공
class Inventory
{
private:
	int items[10];
public:
	//Getter
	int GetItem(int index)
	{
		if ( index < 0 || index >= 10 )//음수나 10개이상이면 잘못되는것
		{
			return -1; //에러의 의미 0이 프로그램이 옳게 돌아갔다는 뜻이므로
		}

		return items[index];
	}

	//Setter
	void SetItem(int index, int number)
	{
		if ( index < 0 || index >= 10 )
		{
			return;
		}
		if ( number < 0 )
		{
			return;
		}
		items[index] = number;
	}
};
  1. 상수 멤버 변수
    • 만들어 질 때 반드시 초기화
    • 만들어진 후에는 값을 수정할 수 없음
  2. 상수 멤버 함수
    • this를 바꿀 수 없음
    • 인스턴스가 가지고 있는 모든 멤버변수를 변경불가능함
    • Getter
    class MyClass
    {
    public:
	const int mValue{1};
	
	//상수 멤버 함수 : 멤버들을 변경 할 수 없음
	int DoSomething() const
	{
		mValue = 2;//변경 불가능(컴파일 에러)
		return 1;
	}
};
class Calendar
{
private:
	int mMonth;
public:
	void SetMonth(int m)
	{//매개변수로 값이 바뀜을 암
		//1~12가능
		mMonth = m;
	}
	int GetMonth() const
	{//매개변수로 값이 바뀌지 않음을 암 ( 컴파일이 안되기 때문 )
		return mMonth;
	}
};

Const의 활용

  • 잘 사용하면 프로그래밍이 쉬워짐!
  1. const 변수
    const int variables{20};
  2. const 매개변수
    void Parameters(const int params);
  3. const 반환형 함수
    const int& rvalues();
  4. const 멤버함수
    void mFunctions()const;
  5. const를 가리키는 포인터
    const int *p;(int인데 const한 변수를 가르키는 포인터)
  6. const 포인터
    int *const cp;(const한 포인터)
  • 함수에서의 const 정리
  1. 함수 파라메터에서 const 변수 : 함수 안에서 변수를 변경하지 않겠다는 의미(참조 변수 & 사용시 사용)
  2. 멤버함수 에서 const : 멤버함수 내부에서 멤버 변수의 값을 수정하지 않음
  3. 함수 앞에 붙은 const : 함수의 리턴값을 상수화 반환 타입에 참조형이 사용될 때 반환값 변경 불가 사실 표현
profile
공부 기록용

0개의 댓글