Back-end/C++

22.03.10 - 캡슐화, 객체, 접근 제어자, Set/Get함수

giggs 2022. 3. 13. 23:02

 

추상화와 캡슐화

 

대상 객체의 수많은 정보 중에 필요한 정보만 추출해서 단순화시키고

추상화시켜서 컴퓨터에 입력! (건담 프라하 / 모델링 등)

컴퓨터가 알아들을 수 있는 정보로 입력 ( 데이터 타입 / 언어 (C++, java 등) )

 

캡슐화 ( 단순화한 정보들 입력 클래스 데이터 타입과 클래스명 안에다가 입력 )

string은 실제 다른 곳에 저장되어있음 주소값 저장되어서 그거 불러오는것임

 

 

멤버 변수는 속성 나타냄 (prosperity) ( attribute ) / 다른 객체와 구별되는 값! / a, b가 구별되는 값

 


객체

 

 

 

Son a; 

Son이라는 데이터 타입으로 a라는 변수를 만든 것이고 a 변수의 속성을 입력한 것

Son b;

Son이라는 데이터 타입으로 b라는 변수를 만든 것이고 b 변수의 속성을 입력한 것

 

클래스형 데이터 타입으로 만들어진 변수를 객체라고 한다. ( 변수는 객체 // 객체는 변수 )

+ string 데이터 타입으로 만든 애도 객체

 

 


 

C++ 기본 문법 

 

 

 int main() { return 0; }

프로그램은 main 함수에서 시작되고 main 함수 끝날 때 프로그램 종료

프로그램 다 끝나고 결과값을 전달할 때 main의 리턴 타입 int main 이면 int로!

return 0; 이 값 돌려주겠다는 의미로 반드시 있어야 한다.

void main 일 시에는 필요 X

 

②cout ③<< enld; 

 

 cout << 콘솔 창에 입력해서 보여주는 클래스형 데이터 함수

 << 는 연산자 오버 로딩 실제로는 cout.operator ( << ) 기호만 사용해서 오버 로딩해서 사용 가능

 endl; 은 줄 바꿈 함수

 

 

 

 


 

class의 접근제어자 ( public / private / protected )

 

 

class에 있는 private: 의 역할

-> 캡슐화된 정보에 접근 허용성캡슐화의 기본정책은 - 정보은닉

 

접근제어자 ( public / private / protected )

  • private; 기본 디폴트 값 , 외부 접근 막겠다. ( 자식도 외부도 X )
  • protected : 외부에서 접근은 막겠다. but 자식이 접근하는 것은 허용하겠다. (상속)
  • public : 모두에게 허용

 

멤버 변수에는 _speed처럼 -> 변수명 맨 앞에 ( _ )로 멤버 변수라고 표현해주면 가독성 좋음!

 

외부에서 접근한다 객체를 통해서 접근한다.

멤버 변수는 바로 접근하지 못하게 한다.기본개념 - private

함수로 접근하도록 해준다. - 접근 가능하게 해주는 함수를 Set/Get 함수

 

멤버 함수 => Set/Get 은 멤버 함수로 불리며 객체의 행동(action)을 관리

멤버 변수 => 객체의 속성을 관리하는 것은 멤버 변수 속성(attribute) 관리

 

사용할 것만 set / get 해주고 공개 안 할 것에는 안 써줘도 됨.

 


 

Set ( ) / Get( ) 함수

 

Set( value ) / Get( ) 함수 선언하는 방법

  • Set => void SetHeight ( float value ) { _height = value };
  • Get => float GetHeight( ) { return _height } ;

 

 

 

새로운 접근제어자를 만나기 전까지는 현재 선언한 접근제어자가 유지된다.

private: 으로 멤버 변수 선언 끝났으면, pulbic: 선언해주고 Set/ Get 함수 사용

 

 


 

Set( value ) / Get( ) 함수 호출해서 사용하는 방법

  • Set => a.SetHeight( 182.8f );
  • Get => a.GetHeight ( ) ;

 

 

a.SetHeight = 182.8f ( X ) 체크!

 


 

Set( value ) / Get( ) 함수를 사용하는 이유

  • 멤버 변수에 바로 접근 가능하게 하면 오류 발생 시 잡아내기가 어렵다.
  • 함수로 접근하게 만들어 놓으면 오류가 어느 부분에서 발생하였는지 잡아내기 용이하다.
  • Set값에 제한을 둘 수 있다. - 데이터 무결성 상승

 

 

 


 

 


review


C++ 강의 두 번째 시간이었다. 어제는 20대 대선 선거일로 휴강

캡슐화 / 객체 / set()/get() 함수를 배우면서 c++언어를 처음 사용해보았다.
사용 목적이나 방법 등 기본 개념은 같았지만
pulic class A ( ){ }가 아닌 classA( ) 내부에 public: 해주는 것처럼 
선언해주는 위치나 들어가야 하는 값들이 달라서 재미있었다.
 

이번 강의에서는 3가지 체크포인트를 뽑았다.
1. main 함수 // 2. 출력 구문 // 3. Set() Get() 함수


① java와 달랐던 점은 실행을 위한 클래스를 따로 만들지 않고
한 프로젝트에서 클래스와 메인을 같이 써준다는 점이었다. 그다음은 선언 형식이었다.
int main( ){ return 0; } /// void main()이 아닐 경우 main() { } 안에는 return 0; 이 꼭 있어야 한다고 한다.

출력하는 부분도 새로웠다.
cout << endl; -- 콘솔 창으로 보여주는 연산을 실행하고, 줄을 끝낸다.
System.out.println( ) 보다 오히려 더 간단하고 사용하기 편했다.

③ java에서는 get/set 메서드를 자동으로 쉽게 생성했었는데
c++에서는 set/get으로 직접 다 입력하였고
함수 선언방식, 입력방식, 출력방식이  조금씩 달랐다. 이 부분도 잘 체크!


한 가지 언어를 잘 배워놓으면 그것을 활용해서
다른 언어를 배우는데 도움이 된다는 이야기를 듣기만 했었는데
이번에 c++언어를 배우면서 실제로 느꼈다.
남은 강의에서도 많은 도움이 되기를 바라며 열심히 공부해보아야겠다.