객지프 기말 대체 과제로 만든 문서 작업 프로그램입니다. (With 세림)
약 2300줄의 코드로 돌아갑니다.
텍스트, 표, 막대그래프, 꺾은선그래프 등을 출력할 수 있습니다. 하나의 Document는 텍스트, 표, 막대그래프, 꺾은선그래프 등의 객체를 모두 포함할 수 있습니다.
텍스트 편집 기능으로 임의 위치 삽입/수정/삭제 등의 기능과 Spellcheck 기능을 제공합니다. Spellcheck 기능은 텍스트의 스펠링이 틀렸을 경우 교정을 제안해 주는 유용한 기능입니다. 탐색 시간은 단어의 길이에 정비례합니다(즉 O(s)입니다).
표 편집 기능으로 임의 위치 삽입 기능을 제공합니다.
그래프 편집 기능으로 데이터 삽입 기능과 크기 조절 기능을 제공합니다.
Inheritance와 Polymorphism을 통해 모든 문서 객체들을 비슷한 인터페이스로 사용 가능합니다. 모든 객체들은 멤버 함수 print()로 출력 가능하고 save()로 저장 가능합니다. 또한 컴포지트 디자인 패턴을 적용하였기 때문에 문서 자체도 print()로 출력 가능하고 save()로 저장 가능합니다.
Trie 자료 구조를 통해 Spellcheck 검사기의 성능을 크게 향상시켰습니다.
현재 텍스트 편집 기능 중 임의 위치 삽입/수정/삭제의 시간복잡도는 O(n)입니다. 이를 O(log n)으로 단축하기 위해 Treap 자료 구조를 도입하고 있습니다.
Document 내부 객체들 중 일부를 묶을 수 있는 Folder 객체를 도입하고 있습니다. 컴포지트 디자인 패턴을 확장하여 Folder 객체를 마치 단일 객체들처럼 다룰 수 있도록 설계하려고 합니다.