본문 바로가기

정보교과서

[고등학교 정보교과서] 3. 문제 해결과 프로그래밍 (1) 추상화 Abstraction - 씨마스

고등학교 정보교과서 3. 문제 해결과 프로그래밍 (1) 추상화 Abstraction

고등학교 정보교과서 3. 문제해결과 프로그래밍 (1) 추상화 - 씨마스

 


 

추상화 Abstraction

어떤 대상을 표현할 때, 중요하다고 생각되는 부분들만 가려내는 것입니다.

모듈, 시스템 등에서 핵심 요소만 추출하는 것이죠.

상대적으로 덜 중요한 부분은 걸러내므로 간결하여 원본 대상보다 추상화한 모델이 그 대상을 분석/파악하기 훨씬 빠르고 쉽습니다.

추상화는 문제 분석 + 문제 분해 + 모델링의 과정을 거칩니다.

 

1. 문제 분석

해결해야 하는 문제(일, job)이 주어졌을 때, 문제를 해결하기 위해 지금 처한 상황을 이해하고 원하는 결과가 어떤 것인지 정확히 아는 것이 중요합니다.

▶ 현재 상태

해결해야 하는 문제가 발생한 상태

목표 상태

문제가 해결된 상태

 

문제 정의

문제가 발생했을 때 현재 상태를 파악하기 위해

  • 문제가 무엇인지
  • 어떤 문제인지
  • 정말 문제인지
  • 누구의 문제인지
  • 어디에서 발생하였는지
  • 정말 해결하고 싶은지 

를 점검하여 문제를 정의합니다.

 

같은 문제라도 사람에 따라 다른 분석을 할 수 있으므로

  • 문제는 정확하고 간결하게
  • 조건을 동일하게 설정

해야 합니다.

 

아침에 집에서 등교해야 하는데, 셔틀버스가 운행하지 않는 경우

현재 상태 목표 상태 조건 문제 정의
학교에 등교 👉 셔틀버스가 아닌 대중교통으로 이동
👉 지각하지 않기
집에서 학교까지 가장 빠르게 대중교통으로 이동할 수 있는 방법

 


 

2. 문제 분해 Decomposition

위와 같은 단순한 문제는 바로 해결할 수 있죠.

복잡한(큰) 문제들은 한번에 파악하거나 해결할 수 없습니다.

따라서 복잡한(큰) 문제들을 단순한(작은) 문제들로 분해하여 해결한 결과들을 종합한다면 수월하게 해결할 수 있습니다.

문제를 분해하여 해결한 후 종합할 때, 분해된 작은 문제들의 순서, 관계, 포함관계를 고려해야 합니다.

 

분할정복 Divide and Conquer
나눠 정복하기
문제들을 해결하기 쉬운 작은 단위로 분할하여 다시 합친다.

 


 

3. 문제 모델링

문제를 분석하면서 추상화하고 그 대상들과 관계를 표현해야 하죠.

대상의 핵심 요소만을 추출하여 구조화하는 모델링을 통해 대상들을 표현할 수 있습니다.

문제를 분석하는 과정에서 문제 정의시 나오는 반복적인 패턴들을 시각적으로 글, 표, 그래프 등으로 구조화할 수 있습니다.

현실에 존재하는 모든 대상들은 모델링이 가능합니다.

지하철 노선도가 대표적인 모델링이죠.

 

728x90