깨져서 계속 이어 적겠습니다.
예 6부터.. 끝부분이라 내용은 얼마 없어요.
예 6.
C++의 템플릿(Template)을 사용해도 추상화가 가능하다.
템플릿은 Template라는 말 그대로 형틀이고, 적용 대상의 기능은 정해졌지만 자료형(double, int 같은 것.)은 정해지지 않고 가변적인 특성을 가지게 만듭니다.
'자료형'을 추상화 한다는 것.
그래서 의미하는 것은 같지만 여러 자료형이 쓰여야 될 변수, 쓸데없이 오버로딩(Overloading)된 함수의 코드를 줄일 수 있습니다.
int와 double을 사용한 예시를 보자.(코드를 최대한 짧게 하기 위해 Cirlce 클래스의 정의부분만 사용했다.)
에서 템플릿을 사용하면
이렇게 됩니다.
이때 템플릿이 적용되는 자료형은 'T'로 표시했으며 네이밍은 바꿀 수도 있습니다.
헝가리안 표기법으로 t를 사용한 것은 인텔리전스를 사용할 때 헷갈리지 않기 위해 사용했습니다.(맨날 까먹어서...ㅜㅜ)
(제가 헝가리안을 사용하는 경우는 딱 2경우. 전역변수, 템플릿)
이젠 템플릿이 적용된 템플릿 클래스 코드를 어떻게 사용하는지 알아보자.
이렇게 사용하고 싶은 함수 내부에서 '<>'안에 자료형을 정의하여 사용할 수 있다.
이후는 일반 구조체나 클래스를 사용하는 것처럼 사용하면 됨.
솔직히 템플릿에 관한 것은 쓸 것이 너무 너무 많기 때문에 귀찮아서 여기까지만 쓰겠다.
+
템플릿 클래스의 정의와 구현을 파일단위로 분리하여 사용할 때 주의 사항.
++
템플릿은 C++의 흑마법이라 불리는 TMP(Template MetaProgramming)의 첫번째 관문 이기도 하다.
(실행이 아니라 컴파일시에 연산을 해버린다니.. 어마무시!!)
필자는 TMP를 아직 잘 모르기 때문에 따로 적진 않겠다.(앞으로 공부할 예정)
요약하면
데이터를 적절히 변수와 상수로 나눈다.
변수, 함수, 알고리즘을 잘 사용해서 함수를 구성한다.
문제를 해결하는 과정에서 값들의 각 연관성에 대해 잘게 달라서 함수를 구성한다. (함수의 모듈화)
OOP를 지원하는 언어라면 클래스와 상속도 적절히 사용한다.
자료형이 가변적일 경우 템플릿도 사용할 수 있다.
그리고...
또 쓰지만 프로젝트할 때 main에 다 박지 말자.
요즘 공부할 수록 C++이 마음에 든다 정도?
후기
하이라이팅을 위해 Visual Code에서 DrRacket Syntax Colorizer를 깔아서 사용했는데 하이라이팅이 이쁘게 안되어 수작업을 했는데 너무 힘들었다.
이딴식으로 일관성을 삶아 드셨다.(이쁘지도 않구)
+
racket을 넣은 의도가 함수형 언어와 추상화에 대해 다루기 위해서였는데..
아직 입문 일주일채 안된터라 함수형의 간결함, 추상화에 대해서는 못다루겠습니다.ㅜㅜ
보완해주실 분은 보완해주세요~
끝~~
개추 개추~
댓글 댓글~
개념글
추천
개추 먹어라~
ㄴ 좀 오래된 글인데, 감사합니다.