5. 모델링 - 객체지향모델링
Class Diagram
Class Diagram : 정적Diagram
추상 Class( Abstract class) : 추상 method가 있는 class
추상 method : 실제로 구현이 안되어있는 method
ex) Shape라는 클래스를 상속받은 Circle, rectangle, Shape에 있는 Draw() 함수 - Shape에서 구현 불가 (표준화를 위함)
interface Class :추상 메소드만 가지는 class - 이를 상속받을 때는 점선으로 표시함 (대체로 이름이 ~able로 이루어짐)
- 상속(inheritance) : IS_A 관계 -> 세모로 표현
서브클래스가 슈퍼클래스의 속성을 "상속"받는 것을 의미 + 서브클래스의 또 다른 속성
ex) 사람클래스를 상속받은 학생, 학생클래스를 상속받은 학부생, 대학원생
구분되는 속성이 많은 경우에만 상속받는 것이 좋음
구분되는 속성이 많은 경우 : 학생 클래스를 상속받는 학부생, 대학원생
구분되는 속성이 많지 않은 경우 (안좋음) : 학생클래스를 상속받는 1학년, 2학년 ... (학생클래스에서 학년 속성을 추가 하면 됨)
- 구현(실체화) : 그림으로 나타내기
method는 대체로 public
객체는 대체로 private
+기호는 public
-기호는 private
#기호는 protected - 상속받은 클래스까지만 확인할 수 있는 특성
- 부분(Part-of) 관계 : 집합(Aggreagation : 약한 부분관계), 합성(Composition : 강한 부분관계)
마름모로 표현(흰색 : 약한, 검정 : 강한)
약한 부분관계 : 부모클래스가 지워질 때 함께 지워지지 않는 관계 (관계선만 없어짐)
강한 부분관계 : 부모클래스가 지워질 때 함꼐 지워지는 관계
- 연관 (Assosiation) :
다중도 (multiplicity) : 1 : 1
1 : *
* : *
0 .. * : 0 .. *
지도교수의 경우 학생당 한명
- 의존 (Dependency)
Class의 유형 : 엔티티클래스, 경계클래스, 제어클래스
- 엔티티클래스 : 영구적으로 저장/검색/활용할 정보를 넣는 클래스(중요한 개념, 명사)
- 경계클래스 : UI(User Interface), 시스템이 사용자에게 전다하는 메시지 및 리포트가 있는 클래스(User와 System사이)
- 제어클래스 : 계산, 처리, 분석, 조작의 임무 수행 ( 엔티티, 경계클래스를 빼고 나머지 클래스 )
시스템 예시)
- 동적 모델링 : 클래스들의 상호작용이나 상태변화, 시스템 내부의 동작을 모델링
시퀀스 다이어그램, 상태다이어그램, 액티비티다이어그램
- 시퀀스 다이어그램 :
위에서 아래는 시간의 흐름, 좌우는 객체표현
두번째 예시)
위 그림에서 hasPrerequisites := hasPassedCourse[prereq]는
prereq가 true라면 hasPassedCourse를 hasPrerequisites에 할당하라는 의미이다.
- 상태다이어그램 :
변수값(상태)을 표현한 것
예시)
- 액티비티 다이어그램 :
액티비티 사이의 제어흐름을 보여 주는 일종의 흐름도
액티비티는 시스템관점, 메소드관점(복잡, 병렬)으로 나뉜다.
위 그림처럼 메소드수준, 시스템수준으로 나눌 수 있다.
검정색 가로 막대기는 상위의 과정이 완료가 되면 다음단계로 넘어간다는 의미이다.
개발자 관점에서는 아래의 사진과 같이 나타낼 수 있다.