많은 대학에서 객체 지향 프로그래밍을 가르칠 때 프로젝트를 시킨다. 그러나 16주라는 짧은 기간 안에 4 Pillars of OOP도 끝까지 가르치기는 힘들다. 교수님이 잘못하셨다는 게 아니라, 원래 4 Pillars of OOP에 익숙해지는 과정에서 신문법을 다수 익혀야 하다 보니... 그래서 신문법 배우기에 바빠 설계법까지 미처 배울 시간이 없는 경우가 종종 있다. 그래서, 내가 본 어떤 프로젝트에서는 '여자' 클래스를 만든 뒤 '여자' 클래스를 상속받는 '사람' 클래스를 만들기도 하더라. 그래서 훗날 객체 지향 프로그래밍 과제를 하게 될 불쌍한 사람들을 위해 이 게시글을 쓰게 되었다.
프로그램의 소스 코드 길이는 과제를 마친 2022년 6월 19일 기준으로 2280줄이다. 그 중 약 200줄 정도가 디버깅용 더미 코드인 것으로 추정되므로 실제로는 2000줄 정도 될 것이다. 그리고 추가적인 보완을 거치면서 길이가 늘어나거나 줄어들 가능성은 있다. (예시: 우리 팀은 2주 안에 2000줄짜리 코드를 만들어야 한다는 압박감에 그만 클래스 상단 멤버함수 선언 몰아넣기를 안 하는 짓거리를 저질러 프로그램의 유지보수 편리성을 크게 떨어뜨렸다.)
이 프로그램은 다음과 같은 기능을 포함할 것이다.
- 문서에 글자 삽입/수정/삭제, 맞춤법 검사
- 표 출력하기
- 막대그래프와 꺾은선그래프 출력하기
[C++로 문서 작성 프로그램 만들기] (객체 지향 프로그래밍 가이드) 시리즈에서는 프로그램을 만들면서 다음 개념들을 실제로 적용해 본다.
- 4 Pillars of OOP. (캡슐화, 상속, 추상화, 다형성)
- Class 간 관계. (Composition이나 Aggregation 등...)
- RAII 규칙.
- 스마트 포인터, rvalue 전달 등 C++의 유용한 features.
- OOP의 요소들을 사용하여 실제로 자료구조 디자인해 보기.
- 람다 함수와 함수 객체를 사용하여 자료구조를 더 flexible하게 만들어 보기.
- 디자인 패턴 요소들 중 몇 개. (찍먹)
이렇듯 이 글의 목표는 대체 상속이 뭐 하는 녀석이고 추상화가 뭐 하는 녀석인지를 실제 구현을 보며 설명하는 것이다. 그렇기 때문에, 가능하다면 글을 쓰면서, 우리가 지금 어떤 문제에 직면했고, 그걸 어떻게 해결하려고 하는지... 같은 것을 열심히 설명하려고 한다.
나도 아직 대학 2학년이라 내가 C++에 능숙하다고는 생각 안 하는데... 그래서 이 글은 앞으로 객지프 과제를 할 사람들을 위해 쓰고자 한다. 어딘가에, 2주 안에 2000줄짜리 코드를 만들어야 하는 나 같은 불쌍한 대학생이 또 있다고 믿으며. 대학 2학년이 쓴 하찮은 코드가 그래도 누군가에게는 도움이 됐으면 좋겠군.
'Computer Science > (temp)' 카테고리의 다른 글
C++로 문서 작성 프로그램 만들기 - 1. 클래스 다이어그램 짜기 [객체 지향 프로그래밍 프로젝트 가이드] (0) | 2022.08.26 |
---|
댓글