Webtoon Paint OSP Stage 2030 Team 2 200911371 김민철 200911381 김진현 200911417 정명권
Activity 2031. Define Essential Use Cases 1. 파일불러오기 Use Case Actors Purpose Overview 파일불러오기 이미지파일을불러와컷위에표시한다 가불러오기버튼을누르면불러올파일을선택하는인터페이스를표시한다. 가파일을선택하면컷위에그이미지를조절하여추가한다. Primary R4.2 Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 이미지파일불러오기요청 2. (S) 불러올이미지파일의경로를입력받는화면보여주기 3. (A) 이미지파일의경로입력 4. (S) 파일이존재하는지검사 5. (S) 컷을추가 (R4.2) 하고불러온이미지를해당컷에표시 Line 3. 파일의경로가올바르지않으면재입력을요청 Line 4. 파일이존재하지않으면경고후재입력을요청
Activity 2031. Define Essential Use Cases 2. 파일저장하기 Use Case Actors Purpose Overview 파일저장하기 컷상에표시된이미지를파일로저장한다 가저장하기버튼을누르면저장할위치를선택하는인터페이스를표시한다. 가저장할위치를선택하면현재컷을이미지파일로저장한다. Primary Pre-Requisites 컷이하나이상존재하고활성화되어있어야한다. Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 이미지파일저장하기요청 2. (S) 저장할파일의경로를입력하는화면보여주기 3. (A) 이미지파일의경로와이름입력 4. (S) 파일의이름이중복되는지검사 5. (S) 컷위의이미지를파일로저장 Line 4. 파일의이름이중복되면경고후재입력을요청
Activity 2031. Define Essential Use Cases 3. 브러시 Use Case Actors Purpose Overview Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 브러시 컷상에자유선을그린다 가브러시버튼을누르면마우스포인터가점으로표시된다. 마우스왼쪽버튼을누르면그위치에선택된색상과굵기로컷위에점이그려진다. Primary 컷이하나이상존재하고활성화되어있어야한다 (A) :, (S) : 시스템 1. (A) 브러시기능요청 2. (S) 마우스포인터를변경 3. (A) 원하는위치에서마우스왼쪽버튼클릭 4. (S) 컷위에적용 Line 3. 마우스포인터의위치가컷바깥쪽이면입력을무시한다
Activity 2031. Define Essential Use Cases 4. 지우개 Use Case Actors Purpose Overview Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 지우개 컷상의이미지를지운다 가지우개버튼을누르면마우스포인터가흰색점으로표시된다. 마우스왼쪽버튼을누르면그위치가선택된영역만큼흰색으로바뀐다. Primary 컷이하나이상존재하고활성화되어있어야한다 (A) :, (S) : 시스템 1. (A) 지우개기능요청 2. (S) 마우스포인터를변경 3. (A) 원하는위치에서마우스왼쪽버튼클릭 4. (S) 컷위에적용 Line 3. 마우스포인터의위치가컷바깥쪽이면입력을무시한다
Activity 2031. Define Essential Use Cases 5. 굵기조절 Use Case Actors Purpose Overview Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 굵기조절 브러시와지우개의적용범위를변경한다 가원하는굵기의버튼을누르면브러시와지우개가적용되는범위가조절된다. Primary (A) :, (S) : 시스템 1. (A) 적용할굵기버튼선택 2. (S) 마우스포인터변경
Activity 2031. Define Essential Use Cases 6. 색상선택 Use Case Actors Purpose 색상선택 브러시와지우개의적용색상을변경한다 Overview 가원하는색상을누르면브러시와지우개에적용되는색상이조절된다. Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events Primary (A) :, (S) : 시스템 1. (A) 적용할색상버튼선택 2. (S) 마우스포인터변경
Activity 2031. Define Essential Use Cases 7. 영역선택 Use Case Actors 영역선택 Purpose 불러온이미지파일에자신이원하는영역을선택한다. Overview 가영역선택버튼을누른후원하는영역을정한다. Pre-Requisites Typical Courses of Events Alternative Courses of Events Primary (A) :, (S) : 시스템 1. (A) 영역선택요청 2. (S) 마우스포인터변경 3. (A) 영역의시작점을마우스로클릭 4. (S) 영역지정프레임이영역의시작점부터마우스포인터까지생김 5. (A) 영역의끝점을마우스로지정 6. (S) 선택된영역에영역지정프레임이화면에뜸 Exceptional Courses of Events Line 4. 마우스포인터가컷밖으로나갈수없음.
Activity 2031. Define Essential Use Cases 8. 영역삭제 Use Case Actors 영역삭제 Purpose 선택된영역을삭제한다. Overview 가 del 키를누르면선택된영역이지워진다. Primary Pre-Requisites 영역이선택되어있어야함. Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 영역선택후 del 키를누름 2. (S) 선택영역이지워지고하얀공백이생김. 3. (S) 선택영역이해제됨.
Activity 2031. Define Essential Use Cases 9. 영역크기조절 Use Case Actors 영역크기조절 Purpose 선택된영역의크기를조절한다. Overview 가선택된영역의가장자리를드래그해서크기를조절함. Primary Pre-Requisites 영역이선택되어있어야함. Typical Courses of Events Alternative Courses of Events (A) :, (S) : 시스템 1. (A) 선택된영역의가장자리위에마우스가올라감. 2. (S) 마우스포인터를양쪽화살표로변경 3. (A) 마우스를클릭한상태에서드래그함 4. (S) 선택된영역이화살표를따라늘거나줄어듦. 5. (A) 마우스를언클릭함. 6. (S) 선택영역이마우스를따라늘거나줄지않음. 7. (A) 선택영역을해제함. 8. (S) 선택영역이화면에고정됨. Exceptional Courses of Events Line 5. 4 에서선택영역을줄였으면그차이만큼이공백이됨. Line 5. 4 에서선택영역이늘어나면늘어난크기에비례해서선택영역이확대됨
Activity 2031. Define Essential Use Cases 10. 영역이동 Use Case Actors 영역이동 Purpose 선택된영역을이동한다. Overview 가선택된영역의가운데를드래그해서위치를이동함. Primary Pre-Requisites 영역이선택되어있어야함. Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 가선택된영역의가운데를마우스로클릭 2. (S) 마우스커서를 4 방향화살표로변경 3. (A) 가마우스를클릭한채로선택영역을드래그 4. (S) 마우스를따라선택영역이이동 5. (A) 가선택영역을해제함. 6. (S) 선택영역이컷에고정됨.
Activity 2031. Define Essential Use Cases 11. 영역잘라내기 Use Case Actors 영역잘라내기 Purpose 선택된영역을클립보드에저장하고선택된영역은지워진다. Overview 가영역잘라내기를하면선택된영역이지워지고클립보드에복사된다. Primary Pre-Requisites 영역이선택되어있어야한다. Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 영역잘라내기요청 2. (S) 선택된영역을클립보드에복사 3. (S) 선택된영역삭제
Activity 2031. Define Essential Use Cases 12. 영역복사하기 Use Case Actors 영역복사하기 Purpose 선택된영역을클립보드에저장한다. Overview 가영역복사하기를하면선택된영역이클립보드에복사된다. Primary Pre-Requisites 영역이선택되어있어야한다. Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 영역복사요청 2. (S) 선택된영역을클립보드에복사
Activity 2031. Define Essential Use Cases 13. 영역붙여넣기 Use Case Actors 영역붙여넣기 Purpose 클립보드에저장된이미지를붙여넣음. Overview 가붙여넣기를누르면클립보드에저장된이미지가화면에복사됨. Primary Pre-Requisites 클립보드에저장된이미지가있어야함. Typical Courses of Events Alternative Courses of Events (A) :, (S) : 시스템 1. (A) 영역붙여넣기요청 2. (S) 클립보드에저장된이미지를컷에복사함. 3. (S) 붙여진영역이영역선택됨. Exceptional Courses of Events Line 2. 저장된이미지가컷보다크면영역크기조절을통해컷최대크기로조절함.
Activity 2031. Define Essential Use Cases 14. 문자입력 Use Case Actors 문자입력 Purpose 선택된영역에문자를입력한다. Overview 가문자입력을선택하면문자를입력할수있다. Primary Pre-Requisites 영역이선택되어있어야한다. Typical Courses of Events Alternative Courses of Events (A) :, (S) : 시스템 1. (A) 문자입력요청 2. (S) 기존의영역이문자입력영역으로변경되며문자입력커서가생김. 3. (A) 가문자를입력 4. (S) 문자입력영역에입력받은문자표시 5. (A) 선택영역해제 6. (S) 선택영역이컷에고정됨. Exceptional Courses of Events Line 5. 문자를입력하다영역의가로크기를넘어가면자동으로줄이넘어감. Line 5. 문자를입력하다영역의세로크기를넘어가면영역이모자란크기에맞춰늘어남. Line 5. 영역이늘어나다가컷크기를넘어가게되면문자가입력되지않음. Line 6. 가입력없이영역을해제하면문자입력을취소
Activity 2031. Define Essential Use Cases 15. 컷전환하기 Use Case Actors Purpose Overview Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events 컷전환하기 다른컷으로이동한다 가다른컷의번호를클릭하면컷이전환된다 Primary (A) :, (S) : 시스템 1. (A) 다른컷번호클릭 2. (S) 활성화된컷을변경
Activity 2031. Define Essential Use Cases 16. 컷추가하기 Use Case Actors 컷추가하기 Purpose 새로운컷을추가한다. Overview 컷추가버튼을클릭하여탭형식으로새로운컷을생성한다. Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events Primary (A) :, (S) : 시스템 1. (A) 컷추가버튼클릭 2. (S) 현재마지막컷의다음번호가적힌새로운컷을생성
Activity 2031. Define Essential Use Cases 17. 컷삭제하기 Use Case Actors 컷삭제하기 Purpose 현재활성화된컷을삭제한다. Overview 컷삭제버튼을클릭하여현재활성화된컷탭을삭제한다. Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events Primary (A) :, (S) : 시스템 1. (A) 컷삭제버튼클릭 2. (S) 활성화되어있는컷을삭제
Activity 2031. Define Essential Use Cases 18. 컷크기조절 Use Case Actors 컷크기조절하기 Purpose 현재활성화된컷의크기를조절한다. Overview 컷의모서리에있는크기조절포인트를클릭하여컷을확대 / 축소한다. Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events Primary (A) :, (S) : 시스템 1. (A) 현재컷의모서리에있는크기조절포인트를클릭 2. (A) 마우스를드래그하여크기를조절 3. (S) 마우스를놓으면현재까지조절된크기로컷의크기를설정 4. (S) 컷크기와이미지크기를비교 Line 4. 컷크기가이미지크기보다작아질경우이미지를컷크기에맞춰지움
Activity 2031. Define Essential Use Cases 19. 컷합치기 Use Case Actors 컷합치기 Purpose 모든컷들을합쳐서새로운컷으로만든다. Overview 컷합치기버튼을클릭하면현재까지작성된컷들을하나로합쳐새로운컷을만든다. Primary R4.2, R3.1, R3.6, R3.7 Pre-Requisites Typical Courses of Events Alternative Courses of Events Exceptional Courses of Events (A) :, (S) : 시스템 1. (A) 컷합치기버튼클릭 2. (S) 현재작성되어있는컷들을컷번호순서에따라아래로붙임 3. (S) 합친이미지를새로운컷을만들어집어넣는다.
Activity 2032. Refine Use Case Diagram
Activity 2033. Define Domain Model
Activity 2034. Refine Glossary Refine terms Term Category Remark Project Class 여러컷들의집합 Cut Class 하나의그림이띄워져있는창 AreaTool Class Area를핸들링하는처리기 Area Class 컷의일부분을선택할수있는영역 TextArea Class 텍스트를입력할수있는영역 DrawingTool Class 그리기도구를핸들링하는처리기 Brush Class 브러시의정보 Eraser Class 지우개의정보 Picture Class 그림 Project.cut Attribute 프로젝트가가지고있는컷들 Cut.cutnum Attribute 컷의번호 Cut.width Attribute 컷의길이 Cut.height Attribute 컷의높이 Cut.picture Attribute 컷이가지고있는그림 Cut.cutstat Attribute 컷의상태
Activity 2034. Refine Glossary Refine terms cont. Term Category Remark DrawingTool.brush Attribute 그리기도구에설정된브러시정보 DrawingTool.eraser Attribute 그리기도구에설정된지우개정보 DrawingTool.linesize Attribute 브러시와지우개의굵기 Brush.color Attribute 브러시의색상 AreaTool.area Attribute 영역도구에설정된영역정보 Area.startX Attribute 영역의시작점의 x좌표 Area.startY Attribute 영역의시작점의 y좌표 Area.endX Attribute 영역의끝나는점의 x좌표 Area.endY Attribute 영역이끝나는점의 y좌표 Area.picture Attribute 영역이설정된부분의그림 TextArea.text Attribute 영역에입력된텍스트
Activity 2035. Define Sequence Diagrams Determine system boundary
Activity 2035. Define Sequence Diagrams Use Case Name of Actor-Activated Event 1. 파일불러오기 requestloadimage() 2. 파일저장하기 requestsaveimage() 3. 브러시 requestbrushing() 4. 지우개 requesterasing() 5. 굵기조절 requestsetlinesize() 6. 색상선택 requestsetcolor() 7. 영역선택 requestselectarea() 8. 영역삭제 requestdelarea() 9. 영역크기조절 requestsetareasize() 10. 영역이동 requestmovearea() 11. 영역잘라내기 requestcutoffarea() 12. 영역복사 requestcopyarea() 13. 영역붙여넣기 requestpastearea() 14. 문자입력 requestentertext() 15. 컷전환하기 requestchangecut() 16. 컷추가하기 requestaddcut() 17. 컷삭제하기 requestdelcut() 18. 컷크기조절 requestsetcutsize() 19. 컷합치기 requestmergecut()
Activity 2035. Define Sequence Diagrams Use Case 1 : 파일불러오기 (A) :, (S) : 시스템 1. (A) 이미지파일불러오기요청 2. (S) 불러올이미지파일의경로를입력받는화면보여주기 3. (A) 이미지파일의경로입력 4. (S) 파일이존재하는지검사 5. (S) 불러온이미지를도화지에표시 1. requestloadimage()
Activity 2035. Define Sequence Diagrams Use Case 2 : 파일저장하기 (A) :, (S) : 시스템 1. (A) 이미지파일저장하기요청 2. (S) 저장할파일의경로를입력하는화면보여주기 3. (A) 이미지파일의경로와이름입력 4. (S) 파일의이름이중복되는지검사 5. (S) 컷위의이미지를파일로저장 1. resquestsaveimage()
Activity 2035. Define Sequence Diagrams Use Case 3 : 브러시 (A) :, (S) : 시스템 1. (A) 브러시기능요청 2. (S) 마우스포인터를변경 3. (A) 원하는위치에서마우스왼쪽버튼클릭 4. (S) 컷위에적용 1. requestbrushing()
Activity 2035. Define Sequence Diagrams Use Case 4 : 지우개 (A) :, (S) : 시스템 1. (A) 지우개기능요청 2. (S) 마우스포인터를변경 3. (A) 원하는위치에서마우스왼쪽버튼클릭 4. (S) 컷위에적용 1. requesterasing()
Activity 2035. Define Sequence Diagrams Use Case 5 : 굵기조절 (A) :, (S) : 시스템 1. (A) 적용할굵기버튼선택 2. (S) 마우스포인터변경 1. requestsetlinesize()
Activity 2035. Define Sequence Diagrams Use Case 6 : 색상선택 (A) :, (S) : 시스템 1. (A) 적용할색상버튼선택 2. (S) 마우스포인터변경 1. requestsetcolor()
Activity 2035. Define Sequence Diagrams Use Case 7 : 영역선택 (A) :, (S) : 시스템 1. (A) 영역선택요청 2. (S) 마우스포인터변경 3. (A) 영역의시작점을마우스로클릭 4. (S) 영역지정프레임이영역의시작점부터마우스포인터까지생김 5. (A) 영역의끝점을마우스로지정 6. (S) 선택된영역에영역지정프레임이화면에뜸 1. requestselectarea()
Activity 2035. Define Sequence Diagrams Use Case 8 : 영역삭제 (A) :, (S) : 시스템 1. (A) 영역선택후 del 키를누름 2. (S) 선택영역이지워지고하얀공백이생김. 3. (S) 선택영역이해제됨. 1. requestdelarea()
Activity 2035. Define Sequence Diagrams Use Case 9 : 영역크기조절 (A) :, (S) : 시스템 1. (A) 선택된영역의가장자리위에마우스가올라감. 2. (S) 마우스포인터를양쪽화살표로변경 3. (A) 마우스를클릭한상태에서드래그함 4. (S) 선택된영역이화살표를따라늘거나줄어듦. 5. (A) 마우스를언클릭함. 6. (S) 선택영역이마우스를따라늘거나줄지않음. 7. (A) 선택영역을해제함. 8. (S) 선택영역이화면에고정됨. 1. request SetAreaSize()
Activity 2035. Define Sequence Diagrams Use Case 10 : 영역이동 (A) :, (S) : 시스템 1. (A) 가선택된영역의가운데를마우스로클릭 2. (S) 마우스커서를 4 방향화살표로변경 3. (A) 가마우스를클릭한채로선택영역을드래그 4. (S) 마우스를따라선택영역이이동 5. (A) 가선택영역을해제함. 6. (S) 선택영역이컷에고정됨. 1. requestmovearea()
Activity 2035. Define Sequence Diagrams Use Case 11 : 영역잘라내기 (A) :, (S) : 시스템 1. (A) 영역잘라내기요청 2. (S) 선택된영역을클립보드에복사 3. (S) 선택된영역삭제 1. requestcutoffarea()
Activity 2035. Define Sequence Diagrams Use Case 12 : 영역복사하기 (A) :, (S) : 시스템 1. (A) 영역복사요청 2. (S) 선택된영역을클립보드에복사 1. requestcopyarea()
Activity 2035. Define Sequence Diagrams Use Case 13 : 영역붙여넣기 (A) :, (S) : 시스템 1. (A) 영역붙여넣기요청 2. (S) 클립보드에저장된이미지를컷에복사함. 3. (S) 붙여진영역이영역선택됨. 1. requestpastearea()
Activity 2035. Define Sequence Diagrams Use Case 14 : 문자입력 (A) :, (S) : 시스템 1. (A) 문자입력요청 2. (S) 기존의영역이문자입력영역으로변경되며문자입력커서가생김. 3. (A) 가문자를입력 4. (S) 문자입력영역에입력받은문자표시 5. (A) 선택영역해제 6. (S) 선택영역이컷에고정됨 1. requestentertext()
Activity 2035. Define Sequence Diagrams Use Case 15 : 컷전환 (A) :, (S) : 시스템 1. (A) 다른컷번호클릭 2. (S) 활성화된컷을변경 1 requestchangecut()
Activity 2035. Define Sequence Diagrams Use Case 16 : 컷추가 (A) :, (S) : 시스템 1. (A) 컷추가버튼클릭 2. (S) 현재마지막컷의다음번호가적힌새로운탭형식의컷을생성 1. requestaddcut()
Activity 2035. Define Sequence Diagrams Use Case 17 : 컷삭제 (A) :, (S) : 시스템 1. (A) 컷삭제버튼클릭 2. (S) 활성화되어있는컷을삭제 1. requestdelcut()
Activity 2035. Define Sequence Diagrams Use Case 18 : 컷크기조절하기 (A) :, (S) : 시스템 1. (A) 현재컷의모서리에있는크기조절포인트를클릭 2. (A) 마우스를드래그하여크기를조절 3. (S) 마우스를놓으면현재까지조절된크기로컷의크기를설정 4. (S) 컷크기와이미지크기를비교 1. requestsetcutsize()
Activity 2035. Define Sequence Diagrams Use Case 19 : 컷합치기 (A) :, (S) : 시스템 1. (A) 컷합치기버튼클릭 2. (S) 현재작성되어있는컷들을컷번호순서에따라아래로붙임 3. (S) 합친이미지를새로운컷을만들어집어넣는다. 1. requestmergecut()
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestloadimage() 새로운컷을만든다새로운컷의크기에맞춰이미지를불러온다 파일을읽을수없으면파일을다시선택하게한다 새로운컷이생긴다 Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestsaveimage() 활성화된컷을그림파일로저장한다 파일이름이중복되면파일이름을다시입력받는다새로운파일컷이활성화되어있다컷이새로운파일로저장된다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestbrushing() 마우스포인터를브러시상태로바꾼다가컷안에서드래그를하면마우스를따라브러시색상을그린다 마우스포인터가컷밖으로넘어가면그려지지않는다 마우스포인터가브러시상태이다마우스로드래그한부분이지정된색상으로채워진다 requesterasing() 마우스포인터를지우개상태로바꾼다가컷안에서드래그를하면마우스를따라하얀색으로지운다 마우스커서가컷밖으로넘어가면지워지지않는다 마우스커서가지우개상태이다마우스로드래그한곳이하얀색으로지워진다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestsetlinesize() 브러시, 지우개의굵기를바꾼다 Brushing, erasing 브러시, 지우개의굵기가바뀐다 Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestsetcolor() 브러시의색상을지정한다 brushing 브러시의색상이바뀐다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestselectarea() 마우스포인터를영역선택상태로바꾼다가드래그를시작하면시작지점부터마우스포인터지점까지영역선택표시를출력하고드래그를끝내면영역선택표시를고정한다. 영역선택후선택된영역의밖을클릭하면영역선택이해제된다 컷영역밖에서영역선택을시작할수없다영역선택을시작하면마우스가컷영역밖으로나갈수없다 설정된영역 컷에영역이선택된다 requestdelarea() 영역선택된부분을하얀색으로채운후영역이해제된다 영역선택 영역이선택되어있지않으면사용할수없다 영역이선택되어있다 영역을선택했던부분이지워진다영역선택이해제된다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestsetareasize() 가지정되어있는영역의모서리에마우스를올리면포인터가방향에따라화살표로변경되고그상태에서드래그하면영역선택표시가늘어난다가드래그를끝내면해당영역선택표시에맞춰영역을고정한다기존에있던영역의그림을새로만든영역에맞춰서확대 / 축소한다영역크기를조정하면서생긴공백은하얀색으로채운다 SelectArea 영역크기조절을시작하면마우스는컷밖으로나갈수없다 새로운영역 영역이선택되어있다 새로운영역이선택된다기존에영역의그림이새로운영역에맞게확대 / 축소된다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output requestmovearea() 선택된영역위로마우스가이동하면마우스포인터가영역이동으로변경된다그상태에서드래그를시작하면마우스를따라영역이이동된다영역이이동하면서생긴공백은하얀색으로채운다 영역선택 영역이동중에는마우스커서가컷밖으로나갈수없다 바뀐영역의위치 Pre-conditions 영역이선택되어있어야한다. Post-conditions 영역의위치가바뀐다영역으로생긴공백이하얀색으로채워진다 Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestcutoffarea() 영역을잘라내클립보드에복사한다영역을잘라내서생긴공백은하얀색으로채운다 영역선택 영역이선택되어있지않으면사용할수없다 클립보드에이미지가저장된다 영역이선택되어있어야한다 클립보드에이미지가저장된다영역을잘라내서생긴공백이하얀색으로채워진다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions Name Responsibilities Exceptions Output Pre-conditions Post-conditions CopyArea() 영역을클립보드에복사한다 영역선택 영역이선택되어있지않으면사용할수없다 클립보드에이미지가저장된다 영역이선택되어있어야한다 영역이클립보드에복사되어있다 PasteArea() 클립보드에저장된이미지를복사하고이미지만큼의영역을설정한다 활성화된컷이없으면복사가되지않는다 새로운영역 컷이활성화되어있어야한다 클립보드의이미지가컷에출력된다출력된이미지가영역이선택된다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestentertext() 영역선택후문자입력을요청하면영역을하얀색공백으로바꾼다영역안에문자입력커서가생기고입력되는문자를영역안에표시한다문자가영역의길이를넘어가면줄을넘기고영역이좁으면영역이늘어난다 영역선택 영역은컷밖으로넘어가지않는다영역이선택되어있지않으면사용할수없다 입력된문자 영역이선택되어있어야한다 영역이하얀색공백으로바뀐다영역에입력받은글자가출력된다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestchangecut() 활성화되어있는컷을비활성화시키고가선택한컷을활성화시킨다 컷이두개이상없으면사용할수없다새로운활성화된컷컷이두개이상열려있어야한다컷이전환된다 Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestaddcut() 새로운컷을추가한다 새로운컷 새로운컷이생긴다새로운컷은하얀색으로채워진다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestdelcut() 활성화되어있는컷을지운다 활성화되어있는컷이없으면사용할수없다 컷삭제 컷이활성화되어있다 컷이지워진다다음컷이활성화된다 requestsetcutsize() 활성화되어있는컷의크기를바꾼다 활성화되어있는컷이없으면사용할수없다 컷의크기가바뀜 컷이활성화되어있다 컷의크기가바뀐다
Activity 2036. Define Operation Contracts Name Responsibilities Exceptions Output Pre-conditions Post-conditions requestmergecut() 열려져있는컷들을하나로합쳐새로운컷을만든다 컷이하나이상열려있어야한다 컷들이합쳐진새로운컷 컷이하나이상있다 새로운컷이생긴다새로운컷은이전까지컷들이합쳐진다