티스토리 뷰
지난 게시글에서 추상 자료형(ADT)에 대해서 알아보았다. 추상 자료형, 혹은 추상화에 대한 개념이 안잡힌 분들은 아래 링크를 통하여 이전 게시글을 먼저 보고 오기를 추천한다.
오늘은 데이터의 캡슐화, 혹은 데이터 하이딩 기법, 데이터 은닉에 대해서 공부해보고자 한다.
추상자료형(ADT)란 무엇인가 : http://andrew0409.tistory.com/136
데이터의 캡슐화, 데이터 하이딩 기법, 데이터 은닉 여러 번역이 있지만 결과적으로 똑같은 말이다. 용어의 통일성을 위하여 나는 캡슐화라 칭하겠다.
그럼 데이터의 캡슐화란 무엇인가. 예를 들어 설명해 보겠다. 아래는 학생이라는 이름의 캡슐 그림
좌측은 데이터영역, 이름과 연락처가 문자열 변수로 선언되어 있고, 성적과 매력이 정수형 변수로 선언되어 있다고 하자.
우측은 인터페이스 영역, 성적을 입력하다, 연락처를 변경하다, 매력을 변경하다가 각각이 함수의 이름이다. 이것을 클래스로 설계해 보겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | class Student { private: char name[10]; char phoneNumber[10]; int studyScore; int charmScore; public: void SetStudyScore(int score); void SetCharmScore(int score); void SetPhoneNumber(char* number); }; | cs |
1 2 | Student minsu; minsu.studyScore = 90; // 틀린예 | cs |
1 2 3 4 5 6 7 8 | Student::void SetStudyScore(int score) { this->studyScroe = score; // this포인터는 이해를 돕기위해 사용했으나 생략 가능 return; } Student minsu; minsu.SetStudyScore(90); | cs |
실제 외부(main 함수, 혹은 그외)에서 학생 Class에 대해사용할 수 있는 부분. 멤버변수가 존재하는 데이터 영역은 private 접근 제한자의 영향으로 사용할 수 없다.
외부에서 멤버변수를 마음대로 수정할 수 없다는 점에서, 누군가의 실수나 기타 요소에 의해서 접근을 제한해버리니 데이터가 안전하게 저장될 수 있고, ADT를 사용하기 때문에 유지보수에 용이하다. 실제로 학생수준의 코딩에서는 멤버변수가 쉽게 변경되도 크게 지장은 없으나, 규모가 큰 시스템을 짤 때에는 최대한 안전하고 정확하게 코딩해야 하기 때문에 C++ 이상의 객체지향 언어에서는 모두 데이터 캡슐화를 사용한다.
'C,C++' 카테고리의 다른 글
정렬(Sort) : 선택정렬(Selection Sort) (0) | 2016.03.11 |
---|---|
정렬(Sort) : 삽입정렬(Insertion Sort) (5) | 2016.03.11 |
추상 자료형(ADT)란 무엇인가? (0) | 2016.03.09 |
C++ : Critical Section [임계영역] (0) | 2015.06.25 |
리틀 엔디안과 빅 엔디안 (Little Endian, Big Endian) (1) | 2015.06.25 |
- Total
- Today
- Yesterday
- 프로세스
- 데이터베이스
- 소켓
- 소켓 프로그래밍
- 터미널
- 유즈케이스
- 파이썬
- 스레드
- 안드로이드
- 파일
- 티그널
- Sort
- 리눅스
- socket
- 정렬
- 액터
- 라즈베리파이
- 쓰레드
- C/C++
- 디렉터리
- UML
- 악보
- 클래스
- 파이썬예제
- MFC
- 티라노 시그널
- C++
- C
- 자료구조
- 클라이언트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |