클래스 VO 설계방법

728x90

클래스 설계방법 - 실물세상 안의 상식으로 적용되야 한다.

[is a] relationship : 상속 = 
만약 cat is an animal 이란 문장으로 클래스를 설계한다면 Cat extends Animal 이 될 것이다.
하지만 animal is a cat이란 문장은 말이 되지 않기때문에 위와 같은 설계가 불가능하다.
따라서 is a 의 관계를 가지는 classes 들은 상속으로 클래스들을 설계한다.
상속으로 설계한다면 Animal a = new Cat()이란 설계가 가능하다. 역시 반대의 경우인 Cat c = new Animal()은 불가

[has a] relationship :  속성으로 설정
Police has a gun = 어떤 클래스가 다른 클래스의 기능을 가지고 있는 것.
만약 Police라는 객체가 gun이라는 기능을 가지고 있을 때 Gun클래스를 인스턴스 변수로 선언하는 것 = 소속이 되어있다. 
public Class police{private Gun gun;}

항상 하던 클래스를 가지고 예시를 하나 더 들어보자 
Board라는 게시판 객체가 있다고 가정하고 그 안에 게시판의 num, contents를 선언한다.
그리고 첨부파일의 정보를 나타내는 filename, filesize, att_num을 인스턴스로 선언하는데 이 3개의 속성같은 경우는 Attach의 클래스에 소속이 되어있다.
따라서 위의 3개의 attach속성 인스턴스 변수를 attach클래스에 생성하고 Board객체에 attach클래스를 선언하여 효율을 높인다.
Board{int num, String title, String contents, Attach att}
하지만 위와 같이 선언하면 한개의 board에는 한개의 첨부파일 밖에 가지지 못한다.
따라서 여러가지 첨부파일을 가질 수 있게 Collection으로 재선언해주어야 적절하다.


최종결론:  Board{int num, String title, String contents, List<Attach> att}

728x90