소프트웨어공학

5. 모델링 - 객체지향모델링

HAHAKO 2023. 4. 10. 12:35

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에 할당하라는 의미이다.

 

- 상태다이어그램 :

변수값(상태)을 표현한 것

 

예시)

- 액티비티 다이어그램 : 

액티비티 사이의 제어흐름을 보여 주는 일종의 흐름도

액티비티는 시스템관점, 메소드관점(복잡, 병렬)으로 나뉜다.

 

 

위 그림처럼 메소드수준, 시스템수준으로 나눌 수 있다.

검정색 가로 막대기는 상위의 과정이 완료가 되면 다음단계로 넘어간다는 의미이다.

개발자 관점에서는 아래의 사진과 같이 나타낼 수 있다.