ToolBar and DrawingPanel
ToolBar에서 정형화된 도형인 4가지의 그림을 그려서 보여주던가 저장을 하는 것이다. 그중에서 ToolBar은 어떠 도형을 눌렀는지 선택하고 DrawingPanel은 그림을 그리는 것이다. 비슷해보여도 다른 역할이다. 하나는 제어를 하고 있고 하나는 ..
동그라미, 네모, 라인 이렇게 있다. 얘가 뭘 알아야하냐. 어떤 툴바가 선택되었는지를 알아야 한다. 이게 그 정보다. selection을 툴바에서 한다. 선택되면 얘를 네모나 동그라미냐 쓰는 방법이 있고 그림그릴 때에는 DRawingPanel에서 읽어와야 한다.
툴바는 그냥 뜯어서 가져가면 다른 프로그램에서 그대로 쓸 수 있다. 표준화된 인터페이스를 고정시켜 놓으면 툴바를 뜯어서 다른곳으로 옮긴다. DrawingPanel에서는 selection되면 한번만 얘끼해야되는데 ..
Drawing Panel. 그림그릴 때마다 물어봐야한다. 뭐가 눌렀냐. 툴바에가면 인터페이스에서는 getEButtonShape
association 내 친구라는 것이다. 얘가 얘의 주소를 가지고 있다.
Association관계가 만들어진다. 주소를 가지고 있으니 ToolBar에게 물을 수 있다.
연결을 작게할 수록 복잡도가 많아지고
DrawingPanel
association은 자식과 부모와 연결되는 것은 이해해주는데
손자의 손자까지 연결되는 이러한 것들은 좋은 것이 아니다. 학년이 같은 레벨의 형제, 자매는 허용을 해준다. 프로그램을 짤 때 가장 중요한 것은 부모 자식간의 관계 기둥이다. aggregation hireachy가 가장 웅요한 개념이다. 필요할 때 association을 만들 수 있는데 가장 중요한 것이 sibeling이다. 가끔씩은 더 예외가 생길 수 있지만 지금은 제약적이다. 이렇게 되면 너네들이 감당할 수 없는 구조가 만들어진다.
순서는 내 마음이다. 내가 주도한다. 이러한 식으로 내가 화면에 전체적인 선택할 수 있는 옵션이 나오고 거기서 내가 선택해서 하는 프로그램을 event driven program이라고 한다. 전체적인 프로그램의 흐름. 내 이벤트에 의해 결정되는 프로그램 방식을 이벤트 드리븐 프로그램이라고 한다.
Event-Driven-Programming
Mouse Event
- Button Pressed
- Mouse Dragged
- Button Released
- Button Cliked
- Mouse Moved
Mouse press realize를 클릭되면 이걸 한번 생각해보자.
우리는 프로그램 잘 때 가진 것이 이거다. 원하는 것은 Drawing.
Action
- Draw
-> Shape selection
-> N point
- Move
-> Mouse on Shape
-> 2 point
- Resize
-> Mouse on Resize Actors
-> 2 point
- Rotate
-> Mouse on Rotate Actor
-> 2 point
Draw하려면 시작점과 끝점 필요. 즉, 점의 갯수가 필요하다.
기하학에서 배웠듯이 도형은 선의 집합이고 선은 점의 집합이다. 결론은 점의 집합이다. 마우스가 할 수 있는 것은 점을 찍는 것이다. 점을 찍으려면 press아니면 clicked 다. Release를 할 수도 있긴 하다.
점은 버튼에 관련된 이야기이다.
점 두개가지고 polygon은 몇개가 될지도 모르겠고 쭉 그리는 자유선은 n개의 포인트 가지고 하는 것이다.
resize하려면 도형을 select해야하고
참고 )
- Action
* Controller
- ToolBar selection
* Target
- Drawing Panel
- Shape
* State
-> selected or not
-> Mouse
단순히 이벤트가 발생했다고 의미가 전달되는 것이 아닌, action의 결정은 첫 째 이벤트가 어떤 이벤트가 왔느냐, 그 이벤트를 수식하는 상태가 어땠느냐,
ex. 날씨가 추워졌다.
ToolBar은 외부의 상태를 연결한 것이다. 외부의 제약조건이 생겼다. context문맥이라고 하는데, ToolBar은 뭐가 눌리니까 뭔갈 한게 눌림. 어떤 이벤트냐 타겟이냐 .. 외부의 조건을 건 것이다.
네가지를 가지고 문법을 만든다. Driven일 때에는 툴바를 확인하는 것이다.
Target이 다르면 아예 다른 것이다. ToolBar와 DrawingPanel은 아예 다른 것. 다 EventHandler이 다르다.
제약 조건때문에 내용을 엮은 것 뿐이다.
그림 그리는 액션은 press, drag, click, move
1. 도구가 선택됐냐
2. 밑에 타겟이 있냐 없냐.
Scenario
- if (Toolbar.GetSelection() {
draw ()
} else {
if (event.getLocation()onShape) {
move }
}}
한번 그리고 나면 이것이 리셋이 되어야 한다.
ToolBar하고 reset selected하라고
과제는
그렸어 놨어 실제로는 얘가 null이 되었다. 그래서 얘까 그림을 다시 안 그리잖아 얘의 그림이 없어져야 한다. 얘를 집어서 움직일 때 움직여야한다. move가 비어있지? 그걸 바꾸면 지금 짜야할 프로그램이 10줄도 안 된다. 이걸 딱 움직이면 움직일 수 이썽야 한다. 이렇게하면 죽어버린다. 왜냐하면 얘가 없다. 정상적으로 돌아가게 해라...
과제
Move
Reset ToolBar
'JAVA_School > JAVA_School_class' 카테고리의 다른 글
[0403] 패턴중심적사고와프로그래밍 (0) | 2023.04.03 |
---|---|
[0329] DB설계및구현1 (0) | 2023.03.29 |
[0327] DB설계및구현1 (0) | 2023.03.27 |
[0327] 패턴중심적사고와프로그래밍 (0) | 2023.03.27 |
[0322] DB설계및구현 (0) | 2023.03.23 |