추상화와 캡슐화
대상 객체의 수많은 정보 중에 필요한 정보만 추출해서 단순화시키고
추상화시켜서 컴퓨터에 입력! (건담 프라하 / 모델링 등)
컴퓨터가 알아들을 수 있는 정보로 입력 ( 데이터 타입 / 언어 (C++, java 등) )
캡슐화 ( 단순화한 정보들 입력 – 클래스 데이터 타입과 클래스명 안에다가 입력 )
멤버 변수는 속성 나타냄 (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++언어를 배우면서 실제로 느꼈다.
남은 강의에서도 많은 도움이 되기를 바라며 열심히 공부해보아야겠다.
'Back-end > C++' 카테고리의 다른 글
22.03.16 - this 포인터, 네임맹글링(오버로딩), 배열 (0) | 2022.03.24 |
---|---|
22.03.15 - 정적 멤버 변수, 정적 멤버 함수, 함수 호출 방식 (0) | 2022.03.18 |
22.03.14 - 포인터형, 참조형, const형 변수 (0) | 2022.03.18 |
22.03.11 - 생성자 초기화 리스트, 포인터형과 참조형 (0) | 2022.03.16 |
22.3.8. - 기초 개념 정의 (0) | 2022.03.13 |