이 프로젝트는 객체지향설계 과목의 텀프로젝트로, C++ 기반의 콘솔 환경에서 동작하는 텍스트 편집기를 구현한 결과물입니다. 페이지 단위 출력, 문자열 조작, 텍스트 탐색 및 수정 기능 등을 포함하며, 디자인 패턴 을 활용한 객체지향적 설계를 목표로 합니다.
test.txt
파일을 프로그램 실행 시 자동 로드- 한 페이지는 20라인 × 75바이트 기준으로 출력
- 사용자의 명령어를 기반으로 텍스트 삽입, 삭제, 검색, 치환 등을 처리
- 싱글톤 디자인 패턴을 활용한 구조적인 텍스트 편집기 구현
- 비정상 입력에 대한 예외 처리
이 프로젝트에서는 TextEditor 클래스에 싱글톤(Singleton) 패턴을 적용했습니다.
- TextEditor는 텍스트 편집의 핵심 기능을 담당하며, 프로그램 전반에서 빈번하게 호출됩니다.
- 해당 클래스의 인스턴스를 하나로 제한함으로써 메모리 낭비를 방지하도록 의도했습니다.
- 실제 구현에서는
static 포인터
와getInstance()
메서드를 활용하여 하나의 인스턴스를 생성 및 재사용합니다.
파일명 | 설명 |
---|---|
TextEditor.h |
편집 기능을 담당하는 핵심 클래스이며, Singleton 패턴이 적용됨 |
File.h |
텍스트 파일 읽기, 페이지 정보 유지 등 입출력 관리 담당 |
InputView.h |
사용자 입력을 받아 처리하는 UI 레벨 인터페이스 |
PrintFile.h |
텍스트 데이터를 콘솔에 출력 (20라인 × 75바이트 기준) |
RequesParser.h |
명령어를 파싱하여 각 명령에 맞는 인자를 분리하는 유틸리티 |
main.cpp |
프로그램 시작점. 파일 로딩, 메뉴 출력, 사용자 명령 처리 루프 등 |
명령어 | 설명 |
---|---|
i(line, index, text) |
해당 라인의 index 위치에 문자열 삽입 |
d(line, index, length) |
해당 라인의 index 위치부터 length 바이트 삭제 |
s(word) |
단어가 포함된 라인을 페이지 최상단에 위치시키며 출력 |
c(target, replacement) |
모든 target 문자열을 replacement로 치환 |
t |
편집된 내용을 파일에 저장하고 종료 |
n |
다음 페이지 출력 |
p |
이전 페이지 출력 |
입력: i(1,10,hello) → 1번째 라인 10번째 위치에 'hello' 삽입
입력: d(2,10,3) → 2번째 라인 10번째 위치부터 3바이트 삭제
입력: c(hello,bye) → 'hello' 문자열 전체를 'bye'로 변경
입력: s(bye) → 'bye'가 있는 첫 라인을 화면 상단에 출력
입력: t → 저장 후 종료