[0517] 패턴중심적사고와프로그래밍
Event State Constant
Source -> Event -> Target State
process는 memory 를 이야기를 하는 것이다.
상태는 target의 값이다.
상태란? 속성, 값을 얘기한다.
객체라는 것은? 어떤 값을 가질 수 있는 틀이고 그걸 상태라고 한다. 사람이 있으면 내 뱃속에 밥이 없어, 배고픈 상태야 내 뱃속에 밥이 들어가면 배부른 상태이다. 그 안에 어떤 것이 채워지는 것에 따라 달라진다. 객체는 틀은 변하지 않는다. 명사와 동사에 대한 이야기이다.
언어라는 것은? 이 우주를 사람이 머릿속에서 표현하는 방법이다. 언어에는 무엇이 들어가있냐면 우주가 들어가 있어야 한다. 한국에서는 한국의 우주가 들어간다. 말로 우주를 만들 수 있다. 우리가 아는 한에서는 우리가 모르는 것은 못 만든다.
언어는 명사와 동사로 만든다.
명사와 동사가 무엇인가? 우리가 보는 우주는 3차원 공간과 시간이 있다.
동사는 시간의 흐름에 대해 말하는 것이다. 시간은 뭘 재냐면 변화를 측정하는 것이다.
상대적으로 천천히 변한다는 것이다.
동사는 변화에 관한 것이고 명사는 구조나 형태를 이야기 한다. 사람도 계속 변하지만 구조나 형태안에 있는 값은 변한다.
"일루와" 이런 것이 니가 근육의 에너지를 이쪽 힘을 줘서 늘리고 줄이고 오는 것이다. 자체의 구조가 변하는 것은 아니다. 그때그때의 근육의 상태가 변화한다.
동사라는 것은 명사가 필요하다.
우리가 다루는 Event는 어떤 대상이 무언가 발생이 되면 내가 이걸 어떻게 하는지 판단하는 것이다. Event driven program이라는 것은 어떤 이벤트가 발생을 하면 받는자가 뭘하지? 판단하는 것이다. 그러니까 신호등이 바뀌면 동사에 있던 사람은 똑바로 갈 것이다. 신호등은 그냥 바뀌고 있는 것이다. 하지만 그것을 받는 자동차에 따라 행위가 달라진다.
행위가 달라진 다는 것은 동사가 실행되는 것이고 Operation symentic이라고 한다. "자네 일루와" 그말을 하기 전에는 거기 있었는데 .. 의미는 여러 종류가 있다.
동사라는 것은 의미가 무엇이냐면 어떤 변화가 일어났느냐를 보는 것이다.
Event driven program은 내가 이벤트를 발생 시키고 받는 사람이 그냥 받고 그걸 해석해서 하는 것이 의미가 다르다. 수동적이냐 능동적이냐의 차이이다. 수동적인 명령이냐 능동적인 명령인가에 대한 차이다.
자의적 해석이라고 하는데, 그때의 context와 상태에 따라 이벤트를 해석하는 의미가 달라진다. object가 달라진다. Event driven program을 짤 때는 잘 봐야 한다.
신호등의 이벤트는 내 상태와 내 바깥에 있는 context 세가지에 따라 달라진다.
어떤 이벤트가 발생하고 어떤 object가 받았는지 중요하다. 그 이벤트를 받았을 때가 중요하다.
Action은 객체 속성값.
동사는 구조체 안에 있는 분할된 요소들을 속성이라고 한다. 구조가 틀어지면 명사가 되지 않는다.
사거리에서 교통 경찰의 수신호도 될 수 있고 눈치를 보고 가는 경우도 있고 신호를 보고 가는 경우도 있다.
이벤트 발생과 액션을 섞어놓으면 프로그램을 다 따로 짜야한다.
중립적인 언어로 표현함. 수신호가 되나 신호등이 되나. 얘네들이 어떤 혀애건 똑같이 이벤트를 만들어줬음 좋겠다.
prepare action finish 3단계이다. 표준화된 언어로 바뀐다. 준비해라 resize해라. 계속해라
nPoint를 계속해라 이런 의미이다. 어떤 정보가 필요한지를 설계할 수 있어야 한다.
Event Processing
- Draw
-> setOrigin, animate, setPoint
->
- Resize
- Move
- ...
eidle상태에서 mousepress가 일어나면 init transforming
1. DrawingPanel이 이벤트가 일어나면 함수가 호출된다. 이 이벤트가 발생했을 때 함수가 호출돼서 Target이 뭔가를 한다.
init transforming은 DrawingPanel이 한다. DRawingPanel의 함수가 실행되면 상태가 변화한다. 거기에있는 속성 값이 변한다.
eidle시간과 eDrawing시간이 있다. 안에 있는 속성에 따라 drawing이 일어난다.
MousePress가 일어나면 init Transforming이 일어나는데, 이것은 DrawingPanel에서 실행된다.
이벤트가 발생을 하면 변화가 일어난다.
eidle에서 draiwng으로 가는 이유가 외부에서 init drawing 을 해서 값이 변한다.
상태 다이어그램이라는 것은 타겟이 명확하게 있는 것이다. 타겟은 드로잉 패널이다.
init Transforming해서 . 마우스와 중립적인 명령을 어떻게 mapping해야하는지 봐야한다. 상태가 뭐고 이런 것은 안 쓴 것이다.
eDrawing이라는 상태는 진짜 그림을 그리지 않은 것이다. press와 release로 나뉜다. 그래서 상태가 변하지 않았기 때문에 eDrawing은 자기 혼자 도는 것이다.
움직이지않고 button press Release가 생기면? Button press release라는 것은 click이다.
polygon이 n개가 딲딲 생긴다.
클릭하면 default사이즈를 그린다.