본문 바로가기

Database/모델링

[설계] CRC카드 , 클래스다이어그램

요즘에 프로젝트를 하다보니 설계단에 관심이 많아졌다. 정확히는 DB설계에.
뭐 어느 프로그램이든 설계단은 거의 비슷비슷해서 크게 달라지진 않는다.
중요한건 사용자,요구자의 의견이 어떻게 반영되었는가. 어떤 형식으로 풀고 어떻게 정의하였는가가 설계에서 가장 중요하다는걸 느꼈다.
그중에서도 가장 중요한것이 해당 프로그래밍에 사용될 단어들. 즉 객체의 속성들일 것이다.
데브피아에 간단한 요청이 들어와서 심심풀이로 풀어보았다.(물론 틀릴수 있다는 가정하에 글을 쓴다.)

문제는 이것.


imagine that you want to keep track of your library.
당신은 당신의 라이브러리 내용을 파악합니다. 

Each book is of a particular format (hardback, paperback, trade paperback. ect) and has a title and an author.
각 책의 (하드커버, 종이커버, 등)에는 자세한 형식 그리고 제목과 저자명이 있고

You also want to know how many books you have.
또한 당신은 당신의 책이 어느정도 양인지 파악합니다. 

Design, implement, and demonstrate a class book that meets the previous requirements.
이전 조건에 해당하는 클래스 책의 설계, 방법을 증명합니다.

Include a CRC card and a UML diagram that gives only the class names and the associations between them. 
오직 클래스 명과 클래스 명을 합쳐서 CRC card와 UML 다이어그램에 포함합니다.
 

글에 나온 키워드를 보면은 library, book, writer , bookname, bookform, bookcount 가 있다. 이제 CRC카드로 만들어 보자.

CRC카드란 Candidate, Responsiblity, Collaboration 의 약자로 클래스를 정의 하기위한 키워드 산출및 클래스간의 관계를 간단하게 표기하는 문서라고 생각하면 된다.

CRC카드의 형태는 다음과 같다.



 이제 위에서 뽑은 키워드 들로 간단한 CRC 카드를 만들어보면 다음과 같은 형태가 나온다.

 
각 클래스에 해당하는 책임 즉 클래스가 해야될 임무는  간단하게 말로 풀이 하였다.
그러면 위의 산출물을 근거로 클래스다이어그램을 그려보았다.
클래스 다이어그램은 CRC카드와 비슷하지만 코딩에 바로 쓰일수 있는 명칭들과 변수들, 매개변수들이 포함되었다고 생각하면 된다.






Library 클래스는 간단하다. Book을 생성해서 담을 벡터와(물론 배열,해쉬 등 다른걸 써도 되지만 개인적으로 벡터가 편해서 벡터로 했다.) 책의 갯수를 확인하기 위한 함수 getBookcount()가 있다. 책의 갯수를 세는것은 간단하게 vector의 .length 쓰면 return만 해주면 끝날거라 생각한다. getBookInfo()의 경우 안에 들어갈 함수는 Book클래스의 함수들을 호출하면 될거라 예상된다.

Book 클래스는 정보를 읽고 쓰는 클래스다. Book 본연의 임무인 형식,제목,저자명을 넣을수 있고 꺼내올수 있는 함수와 변수들로 구성된다.



간단하게 CRC카드와 클래스 다이어그램으로 표현해 보았다. 사실 간단해도 다른 사람은 다르게 그릴수 도 있고 내가 그린 설계가 틀릴수도 있으니 참고만 하셨으면 한다.

-CRC카드를 처음 봐서 쓴 내용들이다;; ㅎ