그림판 기능
- 그리기 도구 모음 열기 / 닫기
- 사각형, 타원, 선 그리기
- 도형 그룹화하기
- 도형 이동하기
- 색상 채우기
- 도형 지우기
교내에서 'C++과 Windows api를 이용한 그림판 제작'을 주제로 2달간 프로젝트를 했습니다. 객체 지향 프로그래밍을 했고 여러가지의 component의 클래스와 메서드를 window 라이브러리에서 가져다 쓰는 것이 아닌, gui를 설계하며 바닥부터 구현해나갔습니다. composite / opserver 디자인 패턴을 활용했습니다. 다형성을 적극 활용하여 유지, 보수에 신경썼습니다.
라이브러리로 사용할 프로젝트를 먼저 만들고, 이 라이브러리를 갖다 쓰는 응용프로그램으로 그림판 프로젝트를 만들어 둘을 분리시킵니다. 두 프로젝트로 분리하려면 각 클래스의 사용처를 잘 생각해야만 합니다.
예시 ->라이브러리를 갖다 쓰는 계산기 프로젝트를 만든다면?
전체적인 상속 관계를 알아야만 불필요한 멤버변수와 메소드를 줄일 수 있습니다. 이는 clean code에도 영향을 주며, 유지 보수하기도 간단해집니다. 따라서 클래스 UML을 작성하여 상속을 적극 활용했습니다.
각 자식 class 마다 공통적인 부분은 부모에게 상속받도록 하고, 개별 특징을 나타내는 부분만 override해서 추가로 구현해주는 것이 기본 원리입니다.
예시 -> 부모에게 상속받는 부분 / override 해서 개별 구현하는 부분
처음으로 30개가 넘는 소스파일이 필요한 프로젝트를 수행하면서 헤더파일 / 상속과 관련된 이슈들이 끊임없이 발생했습니다. 그 때마다 디자인패턴과 UML을 파고들면서 숲을 보는 안목을 길렀습니다.
이 프로젝트를 통해서 객체 지향 프로그래밍 / API 에 적응하는법 / 디자인패턴의 중요성 / 클래스 UML 작성의 중요성과 필요성을 몸소 체험했습니다.
'프로젝트' 카테고리의 다른 글
[Java][프로젝트] Swing으로 GUI 그림판 만들기 (0) | 2022.06.30 |
---|