일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 백준 알고리즘
- 시나공
- 공부일지
- SQL
- 회고
- 문제풀이
- CJ UNIT
- 스프링
- 자바
- 코딩봉사
- 백준알고리즘
- SW봉사
- 알고리즘
- python
- 코틀린
- programmers
- 데이터베이스
- C++
- java
- 코딩교육봉사
- 백준
- 1과목
- BFS
- softeer
- 소프티어
- 프로그래머스
- 파이썬
- MYSQL
- kotlin
- 정보처리산업기사
- Today
- Total
JIE0025
[ C++ ] 객체지향 프로그래밍의 개념, 정보은닉과 캡슐화 본문
Object : 사물/대상 (우리 주변에 존재하는 물건,대상)
나는 과일장수에게 두 개의 사과를 구매했다.
라는 문장 안에서 객체는
나, 과일장수, 사과 이다.
객체지향 프로그래밍은 실제 사물, 대상, 그리고 행동을 실체화 하는 형태의 프로그래밍으로
나 (객체) 는 과일장수(객체)에게 2000원을 주고 2개(data)의 사과(객체)를 구매했다(행동)]
- 하나 이상의 상태정보(data). -> 변수
- 하나 이상의 행동(기능) -> 함수
일반적인 변수로 선언
Fruit apple ;
Fruit banana;
동적할당
Fruit * p1 = new Fruit;
>> 클래스에서 접근제어 지시자 없이 선언되면 private이다.
좋은 클래스의 조건 : 정보은닉과 캡슐화!
정보은닉
안전한 형태로 멤버 변수의 접근은 유도
- 멤버 변수는 private로 선언해 임의로 값이 변경되는 것을 막기
- 멤버 변수의 값을 참조하고 저장하는 함수를 public으로 정의
int GETX() const;
bool SetX(int xpos);
int GETY() const;
bool SetY(int ypos);
>>>> 액세스 함수(Access function)
클래스 정의시 호출될 함수들 위주로 멤버함수를 구성하는게 맞지만
나중에 필요할 수 있다고 판단될 떄 도 멤버로 포함시키는 경우가 많다
여기에서 대표적인 나중에 필요할 수 있다고 판단되는 멤버함수가 엑세스 함수
const 함수 내에선 const가 아닌 함수의 호출이 제한된다
const 로 선언되지 않은 경우에 멤버변수에 저장된 값을 변경하지 않더라도 변경 할 수 있는 능력이 있다.
이때 const를 사용함으로써 변경 가능한 함수의 호출을 아예 제한할 수 있다.
int GETX 와 GETY는 값을 가져오기만 하면 되는 함수로써, const 설정하여 변경가능성을 제한시켰다.
캡슐화
외부로부터 중요한 데이터와 기능을 보호하고 은닉
변수와 함수간 연관성을 높이는것.. !
간접적으로 맴버함수(매서드)를 사용하여 접근함.
즉 정보은닉과 비슷한 개념인듯 하다 좀더 공부를 해봐야할것 같다.
'기타 학습 > Language' 카테고리의 다른 글
[ C++ ] 이니셜라이저를 이용한 멤버 초기화 (0) | 2022.05.17 |
---|---|
[C++] 생성자와 소멸자, 복사생성자 (0) | 2022.05.17 |
[C++] 클래스(class), 객체(Object) (0) | 2022.05.11 |
[C++] 구조체 (0) | 2022.05.10 |
[C++] 동적할당 new , 소멸 delete (0) | 2022.05.10 |