Study/Modeling

[UML] 객체 지향 모델링에 대해

ChoiSenn 2022. 3. 7. 17:26

 

 

 

 

객체 지향의 개념

 

 '객체 지향'에서는 시스템을 객체의 관점으로 바라본다. 이러한 객체 지향 시스템을 가시화하고 명세화하고 문서화 하는 것이 UML의 목적이다.

 프로그래밍할 때 클래스라는 것이 있으면 기본적으로 객체 지향 언어이다. 절차 지향 방법은 프로그램의 내부 기능을 순서도처럼 순서와 흐름으로 정의하고, 자료 구조와 함수를 설계하는 방식이다. 반면, 객체 지향 방법은 자료 구조를 중심으로 객체를 설계한 다음 이들의 흐름을 설계하는 방식이다.

 객체 지향은 현실에 존재하는 실체 및 개념들을 객체라는 독립된 단위로 구성하고, 이 객체들이 메시지를 통해 상호작용함으로써 전체 시스템이 운영되는 개념이다.

 

 객체 지향은 객체, 클래스, 메시지라는 세 가지 요소를 기반으로 하고있다.

 

 - 객체 : 현실 세계에 존재하는 모든 것을 의미한다.

 - 클래스 : 개념적으로 존재하는 것을 의미한다. 객체를 생성할 수 있는 구조와 정보를 가진 틀이다. 하나의 클래스에서 생성된 객체들은 같은 속성과 같은 오퍼레이션에 대한 정의를 담고 있다.

 - 메시지 : 객체 간의 상호작용 수단이다. 한 객체가 다른 객체에 특정 작업을 요청하는 신호이다. 이때 메시지를 보내는 객체를 송신 객체, 메시지를 받아서 동작을 수행하는 객체를 수신 객체라고 한다.

 

 

 

객체 지향의 특징

 

 객체 지향에는 추상화, 캡슐화, 상속, 다형성이라는 네 가지 특징이 있다.

 

 - 추상화 : 특정 측면을 강조해서 나타내는 것. 추상화를 통해 실세계의 상황을 간결하고 명확하게 모델링하여 프로그램으로 구현한다. 이러한 구현 과정을 UML에서는 실체화라고 한다. 객체 지향에서는 클래스를 이용하여 실세계에 대응하는 추상 모델을 만든다.

 - 캡슐화 : 데이터와 이 데이터를 처리하는 오퍼레이션이 한 틀 안에서 결합되어 객체라는 단으로 묶여 사용되는 것. 객체 외부에서는 객체 내 정보에 직접 접근하거나 조작할 수 없고, 외부에서 접근할 수 있도록 정의된 오퍼레이션을 통해서만 관련 데이터에 접근할 수 있게 한다. 캡슐화하면 서로 관련있는 데이터와 오퍼레이션을 객체 단위로 처리해주기 때문에 현실 세계를 단순하면서도 명확하게 표현할 수 있다. 정보 은닉이 가능하여, 객체의 상세한 내용을 외부에 숨기고 단순히 메시지만으로 객체와 상호작용 하게 할수 있다는 장점이 있다. 보다 높은 독립성, 유지보수성과 향상된 이식성을 제공한다.

 - 상속 : 객체 지향에서 핵심이 되는 개념으로, 프로그램을 쉽게 확장할 수 있도록 도와주는 수단이다. 추상화와 캡슐화와는 달리, 상속은 객체 지향 패러다임에서만 구현할 수 있다. 상위 클래스의 모든 특성을 하위 클래스가 이어받음으로써 이미 정의한 클래스를 재사용하고 확장할 수 있도록 지원하는 개념이다. 이때 상위 클래스의 속성을 상속받아 하위 클래스에서 실체화하는 관계를 상세화, 반대로 하위 클래스의 공통 특성을 추상화하여 상위 클래스로 정의하는 것을 일반화라고 한다. 정보를 감추고 필요한 인터페이스만 공개하는 캡슐화, 정보 은닉과는 달리 상속은 정보를 공개하고 재사용하는 개념이다.

 - 다형성 : 여러 클래스에 같은 이름의 함수가 존재하지만 동작은 다르게 수행하도록 하는 것. 상위 클래스에서 정의한 오퍼레이션을 하위 클래스에서 자신에게 맞도록 재정의하여 사용할 수 있다. (하위 클래스에서는 그들만의 고유한 속성과 오퍼레이션을 재정의 해야 한다) 객체 지향 언어에서 메소드 오버라이딩 방식으로 구현한다. 상위 클래스에 메소드(오퍼레이션)가 정의되고, 그 메소드를 하위 클래스에서 상속받아 사용할 수 있다. 그러나 하위 클래스의 객체가 다른 방법으로 동작해야 하는 경우에는 상속받은 메소드를 같은 이름으로 재정의함으로써 객체가 상위 클래스와 다르게 동작이 가능하다.