sicp.io
2.1.1 · 추상화 장벽

표현이 아니라 인터페이스로 만든다.

생성자와 선택자를 사용하면 프로그램 곳곳에 순서쌍 표현 방식을 퍼뜨리지 않고 유리수를 사용할 수 있습니다.

생각해 볼 질문

추상화 장벽은 어떤 변경에서 우리를 보호해 줄까요?

  • 추상 값과 그 표현을 구분하기
  • 생성자와 선택자만 경계로 사용하기
  • 추상화 안쪽으로 직접 들어가는 코드 알아보기

make-rat은 유리수 값을 만들고 numer와 denom은 그 부분을 꺼냅니다. add-rat은 car나 cdr, 또는 순서쌍에 두 항목을 넣은 순서를 직접 알 필요 없이 세 프로시저에만 의존합니다.

순서쌍은 유용한 구현 장치이고 공개 개념은 인터페이스입니다. 표현 방식에 대한 지식을 안정된 인터페이스 뒤에 두면 나중의 변경이 다른 코드까지 퍼지지 않습니다.

SICP 코드UTF-8 346 / 1,048,576바이트
예제
결과
출력
진단
실행 추적0 / 0 개 이벤트
    실행은 브라우저 안에서 이루어지며 프로그램 결과와 실행 추적을 보여줍니다.
    예상 결과

    첫 프로그램은 정확한 유리수 값 5/6을 반환합니다.

    실행 추적에서 볼 점

    make-rat과 numer와 denom 호출을 따라가세요. add-rat은 순서쌍 연산을 직접 쓰지 않으므로 저장 순서를 실행 과정에 드러내지 않습니다. 실행 흐름은 선택한 한 실행의 추상화 장벽 통과를 정확히 기록합니다.

    직접 해보기

    프로그램을 수정하고 결과를 비교해 보세요.

    make-rat에서 분모를 먼저 저장하세요. numer와 denom만 바꾼 다음 add-rat이 여전히 5/6을 반환하는지 확인하세요.

    힌트 보기

    add-rat까지 바꿔야 한다면 표현 방식에 대한 지식이 추상화 장벽을 넘어온 것입니다.

    이 수업 완료하기

    이 장의 총 20개 수업 중 0개 완료0%