디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

C++ 초보를 위한 강좌. 4. 추상화, 일반화와 특수화

codesafer갤로그로 이동합니다. 2016.10.12 23:24:14
조회 2039 추천 13 댓글 6

우리는 흔히 추상화라는 말을 듣게 된다.

어릴땐 미술에서 듣다가 프로그래밍 세계에서 만나게 되면 약간의 모호감을 느낄 수 있을듯.


추상이란 말은, ab + straction

ab 는 약, 대략의 의미고

extraction 이 추출의 의미, tract 가 범주의 의미인 '계' 이

말 그대로 뽑을 추, 형태 상.

개략적인 형태를 뽑아내는걸 말한다.


그말은 구체적인 부분을 배제하고, 보다 포괄적인 의미, 큰 붓으로 그릴 이미지를 뽑는단 말이다.

추상없이 모든 디테일을 기억하려 들다간 우리의 머리는 곧 포화상태에 이르게 된다.


다른말로, 추상을 통해 개략적으로 표현된 데이타를 컴퓨터에게 연산시키는 편이 성능을 높이는데도 짱이다.

필요한 개괄적 특징을 뽑아내는것,

즉 의미로운 특징을 뽑아내는것,

즉 시그널이라 불릴 기준을 정해서 사물에서 뽑아내어 정보량으로 표현하는것.

이것이 컴퓨팅 이론에서 말하는 추상이다.


쉬운 예를 들어보자.

갤러그 스러운 슈팅 게임을 만들려고 보니 남은 비행기의 댓수를 표현하고 싶다.

혹은 비행기의 남은 에너지를 표현하고 싶을수도 있고,

잠수함의 남은 배수량을 ( 배수량 한계까지 물이 차면 꼬로록 ) 표현하고 싶다면,


가장 기본적으로는 정수 하나면 충분하겠다. ( 여기서 깨알같이 등장하는 상수. 훗 )

int air_plane  = 5;

int sub_marine = 5; // displacement


이것이 추상이다.


여기서 비행기가 한 대 죽은 경우는 air_plane-- 로 정의된다.

배수량이 감소하는 것도 마찬가지.


마찬가지로 비행기를 한 대 획득한 경우는 air_plane++ 로 정의된다.

배수량이 증가하는 것도 마찬가지.


이건 일반적인 흐름이 된다.


그렇지만 특수한 흐름이 필요하고, 그것은 바로 죽음이다.

아이러니하게도 모든 생물은 죽음이란 상태를 통해 정의가 완성된다.


비행기 한 대의 죽음과, 게임의 끝.

배수량의 감소와, 잠수함의 침몰을 완전히 정의하기 위해 다음과 같은 표현이 필요하다는 것이다.

if( --air_plane == 0 ) game_over();


이런 추상의 과정에 있어서, 일반화와 특수화라는 개념을 포함시키면,

추상은 보다 실제적이지 않은, 개념적 영역에 속하게 되고,

일반화는 추상의 논리적 형태와 가까운 실제화,

특수화는 일반화의 형태에서 부족한 부분을 표현한 실제화가 된다.


말이 어렵지?


일반화는 큰 붓, 특수화는 작은 붓이다.


산을 그리는데 삼각형으로 충분하면 그건 쉬운 산이고 아주 쉽게 일반화 된다.

그런데 나무가 보이는 산 ( 근경 )과 보이지 않는 산으로 구별해야 할 필요가 생기면,

앞서 삼각형으로 정의한 산에 대해 보완이 필요하다. 그게 특수화의 개념이지.


template 의 경우에도 추상, 일반화와 특수화가 적용되고

class 의 경우에도 추상과 일반, 특수의 개념이 적용된다.


우리가 만약, 반복적인 흐름 속에 if 문 한 줄을 통해 예외적 처리를 해야하는 경우를 만난다면,

반복적 흐름은 큰 붓, 즉 일반화, if 문 한 줄의 예외 또한 특수화로 정의 되는 것이다.


이 개념은 OOP 전반, TMP 전반, 실상 모든 프로그래밍 영역에서 활용되는 개념으로,

정리해주고 싶었다.


추천 비추천

13

고정닉 1

3

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 며느리, 사위되면 시댁, 처가에 잘할 것 같은 스타 운영자 25/10/13 - -
AD 프로게이머가 될테야!! 운영자 25/10/01 - -
공지 프로그래밍 갤러리 이용 안내 [96] 운영자 20.09.28 47939 65
2896534 모모 닮은듯? ♥덩냥이♥갤로그로 이동합니다. 04:34 8 0
2896533 에로미온느 ㅋㅅㅋ ♥덩냥이♥갤로그로 이동합니다. 04:24 12 0
2896532 여름모기보다 가을모기가 쌔.. 쌔당 ! ♥덩냥이♥갤로그로 이동합니다. 04:22 10 0
2896531 요즘 모기는 물리면 시간차 공격들어오는듯? ♥덩냥이♥갤로그로 이동합니다. 04:12 12 0
2896530 가을 모기 왤케 쎄냥.. ♥덩냥이♥갤로그로 이동합니다. 04:07 12 0
2896528 먼가 플머의 행동습성중에 수집본능이 있는거같지 않음? 공기역학갤로그로 이동합니다. 03:49 12 0
2896526 심리공작원같아서 댓글 다니 삭제된 글 발명도둑잡기(118.216) 03:46 15 0
2896524 음기 충전 발명도둑잡기(118.216) 03:25 19 0
2896520 화폐 발행의 독점적 성격에 대해 명시한 연구 발명도둑잡기(118.216) 03:05 16 0
2896519 외노자의 수제번역, あたらよ - 10月は無口な君を忘れる。 프로외노자갤로그로 이동합니다. 02:54 14 0
2896518 외노자의 수제번역, やなぎなぎ - 約束をしよう 프로외노자갤로그로 이동합니다. 02:54 14 0
2896516 외노자의 수제번역, 貴方の夜が明けるまで 프로외노자갤로그로 이동합니다. 02:43 14 0
2896515 입법부가 행정부, 사법부 부패 감시하는 것은 고유임무이자 권한 발명도둑잡기(118.216) 02:13 10 0
2896512 수년 전에 역학 갤러리 모니터링 할 때 내가 관심있던 여성 [2] 발명도둑잡기(118.216) 01:56 20 0
2896511 진보당과 당 근처에 경기동부연합이란 조직이 아예 없는데 언론이 발명도둑잡기(118.216) 01:49 18 0
2896510 AI 뭔가 항상 느끼지만 애니메이션 로직은 영 구현 못하네 ㅆㅇㅆ(124.216) 01:44 18 0
2896509 Ada에서의 객체(Object)란 무엇인가? 나르시갤로그로 이동합니다. 01:37 19 0
2896508 MS 보안 빡세네... 이거 핸드폰 못 팔겠네.... ㅠㅠㅠ 넥도리아2025(220.74) 01:33 22 0
2896500 캄보디아 대포통장 살인사건은 은행 책임도 있다 발명도둑잡기(118.216) 01:18 21 0
2896488 후스넘버 허위 내리는법 (106.102) 00:56 31 0
2896485 캄보디아 이거 진짜 무섭네 [4] 노력갤로그로 이동합니다. 00:54 61 0
2896484 ( ㅇ ㅅ ㅇ )a [1] 노력갤로그로 이동합니다. 00:54 31 0
2896483 냥덩아 발명도둑잡기(118.216) 00:53 18 0
2896482 지듣노 발명도둑잡기(118.216) 00:44 12 0
2896480 나르시 에이다 빠는거 보니까 예전에 클로저 빠는 아재 있었는데 [1] 박민준갤로그로 이동합니다. 00:35 35 0
2896478 패턴 매칭(Rust) vs. 직접 접근(Ada): 공정한 비교 나르시갤로그로 이동합니다. 00:30 14 0
2896477 제미니의 편향: Ada는 상대적으로 복잡한 것처럼 서술했네 ㅎㅎ 나르시갤로그로 이동합니다. 00:29 16 0
2896475 현시대는 토발즈도 1찍 짱깨편인 무서운 시대이다ㅋㅋ번식 더 해줘라 이기 타이밍뒷.통수한방(1.213) 00:28 13 0
2896473 인터넷에서 싸우지 마라 [2] 박민준갤로그로 이동합니다. 00:26 43 0
2896472 "대통령님, '소비쿠폰' 저도 할 말 있습니다" 발명도둑잡기(118.216) 00:26 18 0
2896471 제미니의 러스트 편향성: Addr.Addr_V4'Image 이거 아니잖 나르시갤로그로 이동합니다. 00:25 18 0
2896469 와.. 일본은 브라질 이겻넹 ㄷㅅㄷ ♥덩냥이♥갤로그로 이동합니다. 00:23 20 0
2896468 이재명 "홍석천도 폐업..자영업자 임대료 감면에 정부 나서 달라" 발명도둑잡기(118.216) 00:21 12 0
2896467 Rust 의 Result 가 대체 왜 편하다는 것??? 나르시갤로그로 이동합니다. 00:14 15 0
2896465 제미니마저 Rust에 편향되게 설명하네. ㅎㅎ 나르시갤로그로 이동합니다. 00:12 18 0
2896464 요즘 컴공은 next.js도 가르침? [4] ㅇㅇ(211.196) 00:08 48 0
2896463 멍유야 이것만 알아둬 [2] ♥덩냥이♥갤로그로 이동합니다. 00:04 31 0
2896460 Ada와 Rust 비교: 자료구조, 분기, 오류 처리 철학 [1] 나르시갤로그로 이동합니다. 10.14 25 0
2896458 [공지] 멍퀴벌레 신상 제보 받습니다 현상금 있음 ♥덩냥이♥갤로그로 이동합니다. 10.14 19 0
2896456 최근 영화 <추적>을 발표한 최승호 감독이 발명도둑잡기(118.216) 10.14 13 0
2896455 124.48 점마 진짜 개발지식 일천하노 ㅋㅋㅋ [1] ㅆㅇㅆ(124.216) 10.14 43 0
2896446 멍퀴벌레는 21세기 홍길동이당 By 나님 [4] ♥덩냥이♥갤로그로 이동합니다. 10.14 38 0
2896445 Ada 프로그래밍: 열거형과 선택 구조, 그리고 예외 처리 나르시갤로그로 이동합니다. 10.14 18 0
2896442 Ada 프로그래밍: 3.5 주석 (Comment) 나르시갤로그로 이동합니다. 10.14 9 0
2896439 진중권이 말하는 극좌 [2] ♥덩냥이♥갤로그로 이동합니다. 10.14 24 0
2896435 이거 강의 언제 어디서 듣나요 발명도둑잡기(118.216) 10.14 25 0
2896434 냥덩이는 털바퀴가 된당⭐+ 7화 ♥덩냥이♥갤로그로 이동합니다. 10.14 18 0
2896432 안목 유튜브 보고 스포이더로 똑같이. 넥도리아(220.74) 10.14 16 0
2896431 [공지] 나님.. 이 모든 사태에 대해 책임지고 탈갤합니당.. [1] ♥덩냥이♥갤로그로 이동합니다. 10.14 43 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

디시미디어

디시이슈

1/2