no image
UndoRedo를 구현 하고 있습니다.
UndoRedo를 구현하기 위해서 Memento 패턴을 사용하고 있습니다. Command패턴과 섞어서 쓰는 것이 맞는지 모르겠지만 일단 Memento만 이용하고 있습니다. UndoRedo했을때 대상이 되는 상태를 심볼매니저에 있는 멤버변수들로 했습니다. 심볼매니저의 멤버변수에는 현재 캔버스에 그려진 심볼들, 사용자가 선택한 심볼들, 라인을 가질 후보 Figure 이 있습니다. DSymbolManager가 Originator가 되고, DMemento가 memento가 됩니다. reodo undo를 하기 위해서 memento를 많이 갖고 있어야 하므로, 그것을 관리하는 UndoRedoManager를 만 들어 관리하도록 하였습니다. 클라이언트에 해당하는 painter클래스에 DSymbolManager와 Und..
2009.10.25
typesafe enumeration 기반의 클래스를 하나 더 만들었습니다.
기존의 타입 안전 열거형 클래스는 각 심볼의 타입을 나타내기 위해서 만들었습니다. 각 심볼의 순서가 필요하지 않기 때문에 클래스에 타입정보만 들어 있었습니다. 이번에 만든 타입 안전 열거형 클래스는 심볼을 클릭하면 리사이즈 박스가 나오는데, 이때 8개의 리사이즈 박스를 나타내야 합니다. (LEFT, RIGHT, UP, DOWN, LEFTUP, LEFTDOWN, RIGHTUP, RIGHTDOWN) 8개의 리사이즈 박스 자체만으로는 순서가 필요없지만, 마우스가 어떤 리사이즈 박스를 클릭했는지 알려면 루프를 돌면서 확인을 해야 하고 그때의 딱 걸릴때의 루프 변수번째가 해당 박스라고 구현 되어 있으므로 순서를 정해 주어야 했습니다. 다음은 기존의 리사이즈 박스에 대한 Named constant을 쓰고 있는 코드..
2009.10.23
no image
Happy Printer
2009.10.21
Type safe enumeration pattern을 적용하고 있습니다.
기나긴 고민뒤에 Type safe enumeration pattern이라는 것을 발견하고 public static finale int 로 정의된 열거 형 변수들을 정리 하고 있습니다. C언어에서는 enum구문이 자바에는 없습니다. (Enumeration이라는 인터페이스가 있지만 C/C++의 enum과 달리 iterator입니다.) C에서는 #define TERMINAL 0 #define PROCESS 1 #define LINE 2 ... 이런식으로 하던지, typedef enum { TERMINAL, PROCESS, LINE, ARROW, ...}symbolType; 이런식으로 사용했습니다. 하지만 자바에서는(물론 자바에서만은 아니겠지만 지금은 자바만 생각하고 있습니다.) 어떻게 해야 할지 몰랐습니다. ..
2009.10.20