객체지향 설계는 과연 어떻게 하는 것이 좋을까요?
글쓴이: offree / 작성시간: 월, 2004/08/23 - 11:53오후
객체지향 설계는 과연 어떻게 하는 것이 좋을까요?
간단한(?) 예를 들어 사진들을 보는 갤러리 를 만든다고 했을 때
우선 객체지향 설계와 DB 구조(스키마) 에 대해 어떻게 처리하는 것이 좋은 설계방법인지 모르겠습니다.
Gallery
Gallery_photo
Gallery_comment
이런 DB table 을 이루고 있다고 했을때..
클래스를 이 DB 구조에 맞게 하는 것이 좋은 것인지..
(각 DB table 별 class 를 정하고, table 이름과 동일하게 명칭을 정한다고 보고)
즉,
gallery_list : 주제별,제목별 갤러리들을 나누는 리스트 gallery_view : 해당 갤러리의 사진들을 보는 , 사진은 하나 일 수도 있고, 여러개 일수도 있음. 사진이 여러개 일 경우, 페이지가 나뉠수도 있음. photo_view : 해당 갤러리의 개별 사진을 본다. photo_comment : 해당 사진의 코멘트를 처리.
이런 처리가 필요할때
클래스를 DB 구조에 맞게 만들었다면.(거의 1:1 이라고 보시면됨.)
gallery_list Gallery->list(); 리스트를 출력 Gallery_photo->get_photo_num(); 사진의 수를 출력 gallery_view Gallery->get_gallery_info(); 갤러리의 정보 Gallery_photo->list(); 사진의 리스트(여러개 일경우 페이지처리) Gallery_comment->get_comment_num(); 각 사진에 대한 코멘트 수. Gallery->list(); 갤러리 리스트. photo_view Gallery_photo->get_photo_info(); 사진에 대한정보 Gallery_comment->list(); 코멘트 출력.
대충 이런식으로 하는 것이 정상적인 것인지요?
너무 DB 에 의존적(?)인 것은 객체지향적인 설계가 될 수 없다 인지요?
위 예가 간단한 형식이라 적절한 표현을 할 수 없었을 수도 있을 것 같은데.
잘못된 설계라면, 어떻게 하는 것이 정상적인 설계가 되는지요?
역시 더 책을 봐야 겠지만, 적절한 예가 될 만한 것을 볼 수 없을까요?
머리에 쏙 들어올 만한 것이.. ( 책을 보면 정확히 감이 오질 않네요. )
ps. 엉터리 설계라고 놀리지 말아 주세요. ^^
Forums:
.
앨범을 보는 시스템의 관점에서 본다면 떠오르는 것이 MVC이고 DB를 사용한다고 하시니 Facade가 떠오릅니다.
이런 예는 많이 있습니다. 웹에도 있고 책에도 예제로 많이 나오는 문제입니다.
얼핏 보면 DB에 너무 집중하시는 듯 한데 DB는 앨범 사진이 저장되는 Resource의 '일종'입니다. 여기서 '추상화'가 이루어져야 겠지요.
만약 앨범의 내용을 브라질에 있는 서버에서 FTP로 가져와야 한다면?
혹은 어떤 서버의 특별한 프로토콜을 이용한 stand alone 데몬을 통해야 한다면? 혹은 LDAP?
즉, 처음부터 지나치게 '구체화'시키는 것은 '확장성'에 별로 좋지 않다는 뜻입니다.
좋은 설계의 조건은 참으로 많습니다. 어설프게 한마디 드리는것보다 이른바 '대가'들의 책을 보시길 권합니다.
How do you define Real?
용어에 대한 정리가 필요합니다.
Gallery란 단어가 현재 개발하고자 하는 시스템에서
적합한지를 우선 확인하는 작업이 필요하겠습니다.
즉 요구분석에서의 일들(업무 정의, 용어 정리,등등)을 정리하는 것이 중요합니다. 이는 이후 설계 시점에서 설계를 할때 중요한 자료가 되기 때문입니다.
(OO개념들의 대부분이 실생활의 일들(사물)을 정리(속성-attribute과 행위-operation)하여 설계를 하며, 이는 가장 좋은 시스템이라고 볼수 있습니다-개인적 생각.)
이부분(요구분석)에서 혼선(애매성)이 발생하면, 이후의 과정(공정)들은
짐작하실 수 있을것입니다.
다시 한번 정리해 보시기 바랍니다.
명확한 요구분석 과 용어정리 그리고 설계에 대한 많은 생각들은 좋은 시스템을 설계할 수 있는 바탕이 됩니다.
'대가' 란 구체적으로 누구를 뜻하는 것인가요?
'대가' 란 구체적으로 누구를 뜻하는 것인가요? 이부분은 구체화가 필요할것 같습니다..
댓글 달기