추상화
추상화란 실제 세계(현상)를 간략화, 기호화, 보편화 해서 표현한 것이며 코드에도 추상화가 필요하다.
결국 코드는 사람이 짜는 것이기 때문에 다른 사람이 코드를 해석하기 편해야한다.
다른 사람이 인수인계를 받아서 유지보수 하기 편해야 한다.
다른 사람들과 함께 공동으로 코드를 만들기 편해야한다.
c언어에서 코드를 추상화하는 데 사용되는 삼총사 : 배열, 구조체, 함수
배열 : 속성이 동일한 여러 데이터를 같은 이름과 순서를 지정한 연속된 번호로 서로 연관되어 있음을 표시함으로써 추상화한다.
구조체 : 데이터(자료형)을 실제로 쓰이는 데이터끼리 묶어서 추상화
함수 : 프로세스(코드)를 특정 기능 단위로 묶어서 추상화한다.
좋은 추상화, 나쁜 추상화 예시
- string a, b, c <- 변수를 만든 의도도 알 수 없으며 묶지도 않았다.
- string a[3] <- 위의 것 보다는 나은데 여전히 의도는 알 수 없다.
- string name1, name2, name3 <- 묶지 않아서 쓰기 힘들지만, 의도는 알 수 있다.
- string StudentName[3] <- 의도가 명료하게 드러나고 묶어서 쓰기도 편하게 만들어 좋은 추상화라 할 수 있다.
구조체
- 변수를 모아놓은 집합체
- 특정 변수들이 무언가의 하위 개념으로 묶일 수 있을 때 사용
ex) StudentName[5], StudentAge[5], StudentScore[5]
= 학생의 ~(이름, 나이, 점수) 등등을 학생이라는 구조체로 묶어서 사용
구조체를 정의하는 위치는 구조체가 사용되는 함수의 앞에 정의한다.
int main() <= 함수
구조체 정의방법
struct 구조체변수명
{
string StudentName;//구조체 안에 들어갈 변수들 예시
int StudentAge;
int StudentScore;
}김XX, 이XX, 박XX; // 세미콜론이 필요하며 중괄호 끝과 세미콜론 사이에 변수를 미리 선언 가능
구조체는 일종의 우리가 새롭게 만드는 데이터형
구조체 안에 들어갈 수 있는 하위변수의 종류
당연히 int, bool, float 같은 기본 자료형은 모두 사용 가능
string과 같은 클래스도 사용가능
Student[10]과 같은 배열도 사용가능
앞에서 정의한 구조체도 사용가능
구조체의 선언과 초기화
기본적으로 구조체 변수의 개념은 배열 변수의 개념과 동일하며 선언과 초기화 역시 동일하다.
int a[3] = {10, 20, 30};
a[0] = 10; a[1] = 20; a[2] = 30;
구조체를 사용하는 이유
student.name, student.age 같이 주석없이 코드를 배우지 않은 사람에게도 어느 정도의 가독성이 확보된다.
'코딩 > C++' 카테고리의 다른 글
[C++] 동적 배열 만들기 (0) | 2022.06.15 |
---|---|
[C++] 키 인식 (0) | 2022.04.13 |
[C++] 배열 (0) | 2022.04.13 |
[C++] 제어문 (0) | 2022.04.12 |
[C++] 난수 생성 (0) | 2022.04.11 |