본문 바로가기

UML 모델링

객체지향

728x90

이 글은 책 'UML모델링 객체지향분석및설계'를 읽고 정리한 것이다

 

1. 객체지향 개념
    1) 객체
        -객체지향 시스템의 가장 기본적인 구성요소는 객체(object)이다
        -객체는 정체성을 가지는 어떤 것을 의미하며, 유형객체 또는 무형객체이다
        -모든 객체는 정체성을 가진다
        -객체는 상태와 행위를 갖는다
        -객체의 상태는 객체가 가질 수 있는 속성이며, 행위는 객체가 수행할 수 있는 작업을 의미한다
        -상태와 행위는 객체의 특징이 된다
        -상태 = 속성 = 필드 = 인스턴스/변수
        -행위 = 연선 = 메서드 = 메서드
        -잘 정의된 경계와 정체성을 가지며 상태와 행위를 캡슐화한 개별 독립체

    2) 클래스
        -실 세계 도메인에는 유사 종류(타입)의 수많은 객체들이 존재한다
        -유사 특징을 갖는 객체들의 집합을 클래스 라고 한다
        -행위와 데이터 구조가 논리적으로 유사한 객체들의 집합
        -각 객체가 갖는 고유특징을 제외하고 공통특징만을 추출하여 의미있는 이름을 정의하는 것을 추상화(abstraction)
        -추상화 과정을 통해 유사 객첻들의 집합인 클래스를 정의할 수 있다
        -클래스에 속하는 모든 객체들은 공통특징을 포함하지만 이들 객체는 각각의 정체성을 갖는 각기 다른 객체이다
        -클래스는 유사종류이 객체들이 공통으로 갖는 특징구조를 명세하므로 클래스는 객체의 설계도이다
        -객체는 클래스의 실제보기이므로 객체를 클래스에 대한 인스턴스 라고도 부른다

    3) 메시지
        -메시지는 특정 객체에세 행위를 수행하도록 요청하는 명령이며 객체 사이에 정보를 교환하는 방법이다
        -객체지향 시스템은 객체 상호간에 메시지를 주고받는 상호협력을 통해 문제를 해결한다
        -객체지향 시스템은 상태 데이터와 행위(메서드)를 객체로 정의하고 객체사이의 행위요청(메시지 통신)을
         통해 문제를 해결한다
        -객체의 행위는 다른 객체에서 자신이 준비한 행위를 제공한다는 의미에서 서비스 라고도 부른다
        -객체지향 언어에서 메서드에 대한 명세를 시그니처 라고 한다
         시그니처 : 다른 객체에서 메서드를 호출하기 위한 규약, 메서드 수행을 요청하는 객체는 시그니처를 준수해야 한다

    4) 캡슐화 정보은닉
        -캡슐화 : 상태와 행위를 하나로 묶는 것을 의미한다
        -캡슐화를 지원하는 클래스를 통해 객체 내부의 상태 데이터를 외부 객체로부터 보호 할 수 있다

         이를 정보 은닉이라고 한다
        -켑슐화는 정보은닉을 포함하는 개념이다
        -객체의 데이터는 외부 객체로부터 직접 접근될 수 없으며 외부 객체가 데이터에 대한 접근이 필요할 때에는 

       공식적으로 외부에 서비스하는 연산에 대한 메시지 호출을 통해 간접적으로 접근될 수 있다
         =>즉 외부객체 = 인터페이스를 호출하여 간접적으로 접근한다

    5) 상속
        -상속은 기존 클래스의 상태와 행위를 재사용하는 방법이다
        -상속은 클래스 사이에 계층구조가 성립할 때 발생, 일반화 과정을 통해여 만들어진다
        -일반화는 여러 클래스 사이에 공통적인 특징을 파악하여 더욱 일반적인 상위클래스를 정의한 것이므로 

          추상화 개념과 유사하다
        -상위클래스는 하위클래스보다 더욱 일반적인 특징을 포함하고 있다
        -하위계층 클래스는 상위계층 클래스의 특징을 상속한다

      일반화
        -계층관계가 성립되어 하위클래스들의 공통적인 특징을 추출하여 상위 계층 클래스를 정의하는 것이 일반화 이다
        -상위클래스 = 수퍼클래스, 부모클래스, 기반클래스
        -하위클래스 = 서브클래스, 자식클래스, 확장클래스, 파생클래스

      특수화 
        -상위클래스에서 하위클래스로 더욱 구체화하는 것을 특수화 라고 한다
        -하위클래스는 상위클래스로부터 공통적이며 일반적인 특징을 상속하고 자신만의 특별한 특징을 포함하므로
          상위계층보다 더욱 구체적인 클래스가 된다
        -서브클래스는 수퍼클래의 모든 특징을 상속받으며 자신만의 특별한 특징을 추가 할 수 있다
        
        -서브클래스는 수퍼클래스의 모든 특징을 상속하므로 서브 클래스는 수퍼클래스의 한 종류라고 할 수 있다
        -일반화 관계는 '이다(is-a)' 관계 라고도 부른다
        -서브클래스는 수퍼클래스의 특징을 포함하므로 서브클래스는 수퍼클래스의 종류가 되지만 

        이에 대한 역은 성립하지 않는다

 

    6) 다형성
      -다형성은 특정 객체가 다양한 클래스 타입이 될 수 있다는 것 이다
      -다양한 클래스 타입은 특정 객체에 대한 수퍼클래스 타입을 의미한다
      -하위클래스는 상위클래스의 특징을 상속하는 것과 더불어 자신만의 특징을 갖는다
       이에 따라 하위클래스 객체는 상위클래스의 어떤 타입이라도 될 수 있다 그러나 역은 안된다
      -특정 객체가 상속특징에 의해 다양한 클래스 타입이 될 수 있는 특징을 다형성이라고 한다

      -다형성의 가장 큰 장점은 일반화 프로그래밍을 가능하게 한다는 것이다
      -일반화 프로그래밍에 대한 첫번째 보기는 동적 바인딩에 의한 동적 메서드 호출이 가능하게 한다는 것이다
      -동적바인딩에 의한 동적 호출이란, 동일 종류(타입)에 해당하는 다양한 객체들이 동일 연산 요청에 대하여
       다르게 행동하는 것을 의미한다
      -일반화 프로그래밍에 대한 두번째 보기는 메서드의 인수 타입을 넓은 범위에서 사용하는 것을 가능하게 한다
      -메서드 매개변수 타입이 수퍼클래스 타입이면 해당 수퍼 클래스의 어떤 서브클래스 객체라도 전달할 수 있다

728x90

'UML 모델링' 카테고리의 다른 글

UML 모델링  (0) 2023.03.17
모델과 모델링  (0) 2023.03.16