SlideShare a Scribd company logo
1 of 30
8부 복합값 바꾸기
   39장 캡슐화
39장 캡슐화


여러 상태 변수를 추상화한다.

상태 변수와 local 표현의 함수를 캡슐화한다.
상태변수가 있는 추상

신호등의 현재 색깔을
나타내는 상태 변수
Current-Color

신호등을 다음 색깔로
바꾸는 서비스 함수
next
캡슐화(Encapsulate)
지역 정의가 상태 변수를 포함.
캡슐화(Encapsulate)
지역 정의가 상태 변수를 포함.
캡슐화(Encapsulate)
지역 정의가 상태 변수를 포함.
캡슐화(Encapsulate)
지역 정의가 상태 변수를 포함.
local 표현

상태 변수를 local 표현에 넣음으로써 이 변수들이
임의적인 할당이 아닌 지정된 서비스만을 통해 변
경됨을 보장.

local 표현 정의는 캡슐화와 추상화를 동시에 수행.
신호등
재설정 기능 추가 -
   Service Manager
신호등 제어 기능 - next, reset
주소록
주소록 제어 기능 - add, search
주소록
주소록 제어 기능 - add, search
39.2 캡슐화 연습하기
39.2.1 신호등과 주소록 결합 문제
40장 변경가능한 구조체



구조체를 직접 정의하고 값을 변경하는 함수를 추
가한다.
40.1 함수로부터의 구조체
40.2 변경 가능한 함수 구조체
40.2 변경 가능한 함수 구조체
40.2 변경 가능한 함수 구조체
40.3 변경 가능한 구조체

(define-struct posn (x y)) - 상급자용

1. 생성자 make-posn

2. 선택자 posn-x 와 posn-y

3. 술어 posn?

4. 변경자(MUTATOR) set-posn-x! 와 set-posn-y!
40.3 변경 가능한 구조체

(define-struct posn (x y)) - 상급자용

1. 생성자 make-posn

2. 선택자 posn-x 와 posn-y

3. 술어 posn?

4. 변경자(MUTATOR) set-posn-x! 와 set-posn-y!
x    y
3 5   4
40.4 변경 가능한 벡터

벡터도 변경가능한 복합값이다.(구조체와 동일)
40.5 변수 바꾸기, 구조체 바꾸기


  set! 표현        구조체 변경자

 변수 부분 고정      구조체 변경자는 함수

변수 부분 연산 불가        실행 가능

 표현 부분만 연산     다른 함수에 전달 가능

              구조체 내에 저장할 수 있는 값
set! 표현은 x 가 바인딩되어 있지 않으므로 잘못된
표현.
set! 표현은 x 가 바인딩되어 있지 않으므로 잘못된
표현.




set! 표현에서 the-point 는 수

More Related Content

More from Kyungryul KIM

전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전Kyungryul KIM
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowControllerKyungryul KIM
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2Kyungryul KIM
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_lowKyungryul KIM
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제Kyungryul KIM
 

More from Kyungryul KIM (20)

Node ch12
Node ch12Node ch12
Node ch12
 
11.scripting
11.scripting11.scripting
11.scripting
 
32 osx app_release
32 osx app_release32 osx app_release
32 osx app_release
 
Meteor ddp
Meteor ddpMeteor ddp
Meteor ddp
 
Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2Cocos2dx 7.1-7.2
Cocos2dx 7.1-7.2
 
Cocos2 d x-7.3_4
Cocos2 d x-7.3_4Cocos2 d x-7.3_4
Cocos2 d x-7.3_4
 
Cocos2d x-ch5-1
Cocos2d x-ch5-1Cocos2d x-ch5-1
Cocos2d x-ch5-1
 
Coco2d x
Coco2d xCoco2d x
Coco2d x
 
23 drag drop
23 drag drop23 drag drop
23 drag drop
 
Hadoop ch5
Hadoop ch5Hadoop ch5
Hadoop ch5
 
전문검색기술도전
전문검색기술도전전문검색기술도전
전문검색기술도전
 
Nib_NSWindowController
Nib_NSWindowControllerNib_NSWindowController
Nib_NSWindowController
 
Dsas
DsasDsas
Dsas
 
서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2서버인프라를지탱하는기술5 1 2
서버인프라를지탱하는기술5 1 2
 
Chaper24 languages high_and_low
Chaper24 languages high_and_lowChaper24 languages high_and_low
Chaper24 languages high_and_low
 
Ch22 운영체제
Ch22 운영체제Ch22 운영체제
Ch22 운영체제
 
Mibis ch20
Mibis ch20Mibis ch20
Mibis ch20
 
Mibis ch15
Mibis ch15Mibis ch15
Mibis ch15
 
Mibis ch8
Mibis ch8Mibis ch8
Mibis ch8
 
Mibis ch4
Mibis ch4Mibis ch4
Mibis ch4
 

Htdp 39캡슐화

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n