ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ch01 객체지향 모델링
    25 - 2/설계패턴 2025. 9. 25. 13:38

    1. 모델링

    01. 모델의 역할

    - 서로의 해석 공유해 합의 or 해석의 타당성 검토

    - 현재 시스템 or 앞으로 개발할 시스템의 원하는 모습 가시화

    - 시스템의 구조와 행위 명세

    - 시스템 구축하는 틀 제공

     

    02. 모델링

    - 모델, 추상화를 바탕에 둠 → 특정 관점에서 관련 있는 점은 부각, 관련 없는 것은 무시

     

    2. UML

    대표적인 시스템 모델링 언어

     

    3. 클래스 다이어그램

    01. 클래스 다이어그램

    - 시스템의 정적인 구조 표현

    - 시간에 따라 변하지 X
    - 클래스와 그들간의 관계 표현

     

    02. 클래스

    - 동일 속성 가지고 있고, 동일 행위 수행하는 객체의 집합

    - 객체를 생성하는 설계도

    - UML의 클래스 표현

    • 세 부분으로 나누어진 박스 표현
    • 가장 윗부분: 클래스 이름/ 중간 부분: 속성 / 마지막 부분: 연상

    - 접근제어자

    02. 관계

    - 객체지향 시스템은 상호 관계를 맺는 여러 클래스에서 생성된 객체들이 기능 수행

    • 연관 관계
      1. 연관된 클래스 상에 실선 그어 표시
      2. 두 클래스 사이의 관계 명확한 경우, 이름 사용 X
      3. 역할: 클래스 바로 옆 연관 관계를 나타내는 선 가까이 기술
      4. 역할 이름, 연관된 클래스의 객체들이 서로를 참조할 수 있는 속성의 이름으로 활용

    - 다중성

     

    - 양방향, 단방향 연관 관계

    • 양방향 연관 관계
      1. 두 클래스를 연결한 선에 화살표 사용X
      2. 서로의 존재 인지
    • 단방향 연관 관계
      1. 한쪽으로만 방향성이 있는 관계
      2. 한 쪽은 알지만 다른 쪽은 상대방 존재 모른다는 의미

    - 연관 클래스: 연관 관계에 추가할 속성이나 행위가 있을 때 사용

    • 사건 이력 표현
    • 대출 이력

    - 재귀적 연관 관계

    • 동일한 클래스에 속한 객체들 사이의 연관 관계
    • 역할을 클래스로 할 때 문제 발생

    - 일반화

     

     

    • 세탁기는 가전 제품
    • TV는 가전 제품
    • 식기세척기는 가전 제품
    • 일반화는 상속화

     

     

     

    - 집합 관계

    • 전체와 부분 간의 관계
    • 집약(aggregation)
      1) 전체를 나타내는 객체, 부분 나타내는 개체의 라이프 타임이 독립적
      2) 부분을 나타내는 객체를 다른 객체와 공유 O
      3) 전체 객체가 사라져도 부분 객체 사라지지 X
      4) 빈 마름모로 표시

    public class Computer {
         private MainBoard mb;
         private CPU c;
         private Memory m;
         private PowerSupply ps;
         public Computer(MainBoard mb, CPU c, Memory m, PowerSupply ps) {
              this.mb=mb;
              this.c=c;
              this.m=m;
              this.ps=ps;
         }
    }



    • 합성(composition)
      1) 전체를 나타내는 객체에 부분을 나타내는 개체의 라이프 타임이 종속적
      2) 전체 객체가 사라지면 부분 객체도 사라짐
      3) 채워진 마름모로 표시

    public class Computer {
         private MainBoard mb;
         private CPU c;
         private Memory m;
         private PowerSupply ps;
         public Computer() {
              this.mb=new MainBoard();
              this.c=new CPU();
              this.m=new Memory();
              this.ps=new PowerSupply();
         }
    }

     

     

     

    - 의존 관계

     

    • 한 클래스에서 다른 클래스 사용하는 경우
      1) 클래스의 속성에서 참조
      2) 연산의 인자로 참조
      3) 메소드의 지역 개체로 참조
    • 연산의 인자나 메소드의 지역 개체로 참조 -> 찰나적 관계

     

    - 인터페이스와 실체화 관계

     

     

     

    • 인터페이스, 책임 -> ex: 리모콘의 책임, 가전 기기 on/off, 볼륨 up/down
    • 어떤 공통되는 능력이 있는 것들을 대표하는 관점

     

     

     

    - 실체화 관계

Designed by Tistory.