제 4 장 관계 2010-2학기 소프트웨어설계
차례 4.1 연관 4.2 다중성 4.3 수식 연관 4.4 반사 연관 4.5 상속과 일반화 4.6 의존 관계 4.7 클래스 다이어그램과 객체 다이어그램 4.8 요약 2010-2학기 소프트웨어설계
4.1 연관 연관 (association) 클래스들이 개념적으로 서로 연결된 관계 역할(role) 연관에서 갖는 클래스의 역할 예 : 선수(Player)와 농구팀(Team) Player와 Team 의 연관 관계 역할(Employee, Employer) 존재 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.1 연관 예 : 선수(Player)와 농구팀(Team) 클래스 사이에 두 개의 연관(Plays on, Employs)이 존재 하나의 클래스(Team)가 여러 개의 클래스(Guard, Forward, Center)와 연관 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.1 연관 연관에 대한 제약(constraints) 연관 관계가 반드시 따라야 할 규칙 예 : 은행직원(BankTeller)과 고객(Customer) 연관 관계 Serves 의 제약 BankTeller의 서비스 는 Customer의 주문순서 (order)에 따라서 제공되어야 함 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.1 연관 예: 고등학생의 진로 결정 고등학생(HighSchoolStudent)이 진로를 결정 (choose) 할 때 진학(Academic) 또는 취업(Commercial) 을 선택할 수 있다 제약: 두 개의 연관이 가지는 or 관계 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.1 연관 연관 클래스(association classes) 속성과 오퍼레이션을 갖는 연관 연관 클래스는 연관선과 점선으로 연결 다른 클래스와 연관될 수 있다. 예: Player와 Team 사이의 Contract 연관 클래스 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계 7
4.1 연관 링크 (links) 연관의 인스턴스 객체 사이를 연결 (클래스가 아닌) 객체 이름 처럼 링크 이름에도 밑줄 객체 이름 처럼 링크 이름에도 밑줄 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.2 다중성 다중성 (Multiplicity) 연관 관계에 있는 두 클래스 사이 하나의 객체에 관련될 수 있는 다른 클래스의 객체 개수 예: 농구팀(Team)은 5 명의 선발선수(StartingPlayer)로 구성 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.2 다중성 다중성 (Multiplicity) UML 표기법 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.3 수식 연관 일 대 다(one-to-many)의 다중성 한 객체가 특정한 객체를 선택해야 하는 상황(lookup) 발생 예 - 호텔의 예약 리스트(ReservationList) 와 예약(Reservation) (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.3 수식 연관 수식연관 (qualified association) 수식자(식별정보)를 포함 UML 표기법 - 작은 사각형이 첨부된 수식 연관 예 - 호텔 예약(Resevation)과 예약확인 번호(Confirmation number) (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.4 반사 연관 반사 연관(reflexive association) 클래스가 자기 자신과 갖는 연관 관계 UML 표기법 연관선 - 같은 클래스를 향해서 그린다. 역할, 연관 이름, 연관의 방향, 다중성을 표시 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.5 상속과 일반화 일반화(generalization) 객체지향 상속(inheritance) 개념에 대한 UML표기법 예 – 동물(Animal)의 분류계통도를 나타낸 클래스 다이어그램 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.5 상속과 일반화 상속 (inheritance) 관계의 결정 슈퍼클래스와 서브클래스를 동시에 가지는 클래스가 존재 시스템 분석가 고객과 상담에서 여러 가지의 상속 관계를 발견 하나의 클래스에 속한 속성과 오퍼레이션의 일반성 이해 다른 클래스에 적용할 수 있는지 검토 2010-2학기 소프트웨어설계 15
4.6 의존 관계 추상 클래스(abstract class) 자신의 객체를 제공하지 않는 클래스 예 - 추상 클래스를 갖는 상속 계층도 Player와 Clock (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.6 의존 관계 의존관계 (dependencies) “한 클래스가 다른 클래스를 사용”하는 관계 의존 관계는 점선 화살표 로 표현 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.7 클래스 다이어그램과 객체 다이어그램 클래스 (Class)다이어그램 클래스의 특성, 속성, 연관 클래스의 일반적인 정보 객체(Object) 다이어그램 클래스의 특정 인스턴스 정보 객체의 구체적 상황 예 - 체스 게임 rook,knight, bishop, queen, king, bishop, knight, rook pawn, pawn, …, pawn (출처: http://www.wikipedia.org, “chess”) (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.7 클래스 다이어그램과 객체 다이어그램 Moves of Chess Pieces * pawns can only move to the white circles to capture, and cannot capture with their normal move 2010-2학기 (출처: http://ko.wikipedia.org, “chess”) 소프트웨어설계
4.7 클래스 다이어그램과 객체 다이어그램 예 - 체스 말(ChessPiece)의 클래스 다이어그램 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.7 클래스 다이어그램과 객체 다이어그램 예: 객체 다이어그램 체스 상황의 모델링 (출처: J. Schmuller, Teach Yourself UML in 24 Hours, 3rd Ed., Sams, 2004) 2010-2학기 소프트웨어설계
4.8 요약 관계 클래스 사이의 의미가 어떻게 연결되는 지 나타냄으로써 모델링하려는 세계를 시각적으로 구체화 연관, 역할, 다중성, 연관 클래스 클래스의 상속 속성과 오퍼레이션을 물려받음 부모(슈퍼) 클래스, 자식(서브) 클래스 추상클래스는 상속 전용으로서, 자신의 객체를 생성할 수 없다 의존관계 한 클래스가 다른 클래스를 사용 클래스는 일반적인 정의를, 객체는 특정상황을 모델링한다. 2010-2학기 소프트웨어설계