JAVA_School/JAVA_School_class

[0503] 패턴중심적사고와프로그래밍

지윤이다 2023. 5. 3. 14:49

Backlogs

-Shape / Text

Drawing

- Move

- Resize

- Rotate

 

- Attributes

- Color

- Line Width

- Font

 

기능

- Cup/Paste/Copy

- Do/Undo

- Align

- Save/Open/New

 

Refactoring

 

Sprint Backlogs

- Move

- Transformer

속성이란? 원래 가지고 있는 성질, 성질은 그 전체를 나타내는 값, 관념적으로 나뉘어짐,

Ex. 사람이라면? 그 자체가 값이다. 키나 모양이나 색깔 .. etc

 

repaint쓰면 안됨. 움직일 때마다 껌뻒껌뻑거린다.  -> 사용X

 

Transformer은 사용자가 무엇을 하느냐에 따라 나누는 것이 아니라, 해야할 일을 통해 나누는 것이다.

시간 단위로 나눈 것이다. 업무를 나눌 때 대상과 업무를 분리한다. 대부분은 직교하게 되어있다.

Selecter은 원래 draw안에 들어가 있다. selecter도 일종의 shape일종에 되어야 한다. 

일을 주려고. d가 선택되면 계속 d ~ d

다형성을 써서 얘를 superclass로 만듦, 담당자는 draw,resizer ,... 정해주는 것이다. 새로운 업무가 필요하면 담당자 한 명 만 새로 만든다.

독립성을 유지하기 위해.

항상 객체는 내가 할 일은 내가 해야한다. 다른애가 내가 할 일을 만들게 하면 안 된다. 내 역할은 내가하는 것이다. 이 eventHandler에서는 2point인지 npoint인지 고른다음에 담당자를 drawingPanel에서 부른다음에 태워버리는 것이다.

 

Action이 결정되려면 어떤 상태에서? 그 다음에 제약조건 .. application의 상태에 따라 다르다. 

무슨 이벤트가 발생했느냐, ToolBar에 뭐가 selection됐냐. 

똑같이 move인데 polygon인 경우에는 mouse press move -> 그림 그려짐. 그림 그리는 상태로 와있기에 ..

event가 어떤 의미를 가지고 있냐 ? 컴퓨터는 cpu가 무엇을 하는가가 ..

기계어가 의미이다. 무슨일을 하느냐가 의미이다. 

 

마우스로 변화를 만드는 것 - Event

마우스의 변화가 생김으로 Event가 생김

Event는 명령어다. "뭘해라!" 이렇게 하는 것이다. 

의미가 전달돼서 행위가 일어나야 한다.

즉, Event가 일어나면 Action이 일어난다.

Action - Move, Draw .. 등

프로그램이 Action을 호출한다.

어떠한 작업을 할지를 결정하는 것을 지금 하는 것이다. 어떤 Action을 취할건지를 어떻게 아냐?

 

Transaction은 순차적으로 이어진 명령어이다. 명령어가 2Point면 press Drawing Release다. 

Click move Click move -> n 번 반복

mouse를 움직이는 방법은 2가지 밖에 없다. 마우스를 클릭하거나 마우스를 프레스했을 때 이게 무슨 뜻인가를 알아야 한다.

제약 조건에 의해 달라진다. -> 어떤 조건이 선택됐는지, 

Mouse Press 를 했을 때 밑에 뭐가 있는지 없는지를 확인한다.

도형이 선택되었는지. -> 이러면 다 무시한다. 

어디서든지 그림을 그린다. 

 

ToolVar은 한 번 들어와서 도형을 그리면 풀린다. 이런것의 의미는 우리가 정하는 것이다. 말로 하는 것과 똑같다. 경우의 수를 따져서 말로 한다. 

Select Transformer로 정한다. 

[제약 조건]

1. 마우스 이벤트가 일어난 밑에 뭐가 있는지?

2. ToolBar 에 어떤 도형이 선택되었는지?

-> 어떤 의미를 결정하는 요소, 구체적으로 들어가면 Transformer 가 된다. 

 

그냥 Move를 하면 그림이 그려지지 않는다. 하지만? polygon을 선택하고 move를 하면 어떠한 이벤트가 발생했을 떄의 의미라는 것은 상태에 의해서 바뀐다. 상태가 바로 시간을 얘기한다. 이 전에 뭐가 일어났는지에 따라 달라진다.

Program에 따라 다르다. 제약 조건이라는 것은 내가 의미를 정확히 나누는 거싱다. 상태도 마찬가지이다.

이 전에 어떠한 이벤트가 발생하고 어떤일이 벌어졌느냐와 (상태) 

상태는 Eidle - transforming - eidle과 제약조건에 의해 의미가 만들어 진다.

내가 어떤 event를 발생했을 때 이 전에 뭐가 일어났지? 다른 제약조건이 뭐가 있었지? 를 보고 내가 무엇을 할지를 결정해야 한다.

 

State(상태)는 Object가 존재한다

Object Attrivutes Values

상태가 있으려면 대상이 있어야 한다. 정확하게 대상이 한정되어야 한다. ex. 전구의 상태? - 켜진 / 꺼진 상태

무엇인가가 존재를 해야 한다. 신호등이라는 것은 어떻게 따지냐면 그 구성요소의 상태의 집합으로 따진다. 

신호등 불이 몇개? - 12개 켜지고 꺼지고 12개 .. -> 2의 12승이 있다. 

좌우가 파란불일 때 이쪽이 파란불이면 죽는다. ->  1쪽이 파란불이면, 1쪽은 빨간불  (이러한 제약조건이 만들어짐)

상태는 의미를 가지게 된다. 어떤 제약조건이 포함되면서 의미를 가진다. (4거리 상에서의 신호등이라는 context, 문맥을 만든다)

신호등이 제약조건을 가지고, 거기서 상태가 제약되기 시작한다.

상태라는 것은 대상이 정해져야 한다. 뭔가 대상이 항상 명확해야 한다. 그것이 가지고 있는 값의 집합이라고 한다. 내가 원하는 관점에서. 

상태가 변할 때 eventn가 발생한다.

상태는 값의 집합이다.

값이 바뀌려면?

Event - Action이 발생함

Action은 개체의 값을 바꾼다. 

화살표는 이 신호등에서 발생하는 Event이다. 우리 이벤트는 복잡하지만, 상태는 간단하다.

2Point는 eidle에서 그리기 eidle에서 그리기..

nPoint Action : eidle 계속 그리기 eidle ..

 

상태는 대상 object가 하는 것.

제약조건은 그 바깥에서 하는 것이다.

상태는 그 도형에 관한 일. ToolBar 다른 그림 이러한 것들은 제약조건이다. 

 

Transformer로 바꾸고 할 수 있으면 affine Transformer 로 바꿔라.