추상화 

객체지향 패러다임과 추상화의 관계

: 객체를 개념을 이용하여 분류하여 추상화한다.  

 

 

차이점을 무시하고 공통점만을 취해 트럼프라는 개념으로 단순화 한것은 추상화의 일종이다. 

 

수 많은 객체들을 개별적인 단위로 취급하기에는 인간의 인지능력에 한계가 있다. 

따라서 공통점을 기반으로 객체들을 묶기 위한 그릇인 개념이 필요하다. 

 

개념을 이용하면 객체를 그룹으로 만들어 분류할 수 있다. 개념은 공통점을 기반으로 객체들을 분류 할 수 있는 일종의 체와 같다. 

 

객체에 어떤 개념을 적용해서 개념 그룹의 일원이 될때 객체를 그 개념의 인스턴스 라고 한다. 

 

 

추상화는 두가지 차원에서 이루어진다. 

1. 사물들간의 공통점은 취하고, 차이점은 무시하여 일반화를 통해 단순화 한다. (분류)

2. 중요한 부분을 강조하기 위해 불필요한 부분은 제거하여 단순하게 만든다. (일반화/특수화) 

 

추상화는 분류와 일반화/특수화 기법을 적용한다. 

 

객체지향 패러다임을 통해 분류와 일반화/특수화 기법을 적용하여 세상을 추상화한다. 

 

객체란 특정한 개념을 적용할 수 있는 구체적 사물이다. 개념이 객체에 적용되었을때 객체를 개념의 인스턴스라고 한다. 

 

 

 

개념 

개념은 특정 객체가 어떤 그룹에 속할 것인지를 결정한다. 

하트 왕비가 트럼프라는 개념에 속하는 이유는 트럼프를 생각할때 떠오르는 특징들을 가지고 있기 때문이다. 

 

어떤 객체에 어떤 개념이 적용됐다는 것은, 그 개념이 가지고 있는 특징들을 만족시킬 수 있다는 것이다. 

 

일반적으로 객체를 분류하는 틀로써의 개념을 이야기 할때는 3가지 관점이 함께 언급된다. 

 

심볼, 내연, 외연 

 

 

앨리스가 정원사,병사,신하,왕자와 공주,왕과 왕비들, 하트왕과 왕비의 몸이 납작하고 두 손과 두 발이 네모 귀퉁이에 달려 있기 때문에 트럼프라는 개념으로 묶었다. 

 

  • 심볼은 개념을 가리키는 이름으로, 앨리스의 이야기에서는 트럼프이다. 
  • 내연은 개념의 의미로, 몸이 납작하고 두 손과 두 발이 네모 귀퉁이에 달려 있다는 트럼프에 대한 설명이 바로 내연이다. 내연은 개념을 객체에게 적용할 수 있는지를 판단하는 기준이 된다. 하얀 토끼는 트럼프의 내연을 만족시키지 못하기 때문에 트럼프라는 개념을 적용할 수 없는 것이다. 
  • 외연은 개념에 속하는 객체들, 즉 개념의 인스턴스들이 모여 이뤄진 집합을 의미한다. 앨리스의 이야기에서 정원사,병사,신하,왕자와 공주,왕과 왕비들, 하트왕과 왕비가 트럼프의 외연이다. 

 

심볼 : 트럼프
내연:  몸이 납작하고 두 손과 두 발이 네모 귀퉁이에 달려 있다
외연:  정원사,병사,신하,왕자와 공주,왕과 왕비들, 하트왕과 왕비 

 

 

분류

분류란 특정한 객체를 특정한 객체집합에 포함 시키거나 포함 시키지 않는 작업을 의미한다. 

분류란 객체에 특정한 개념을 적용하는 작업이다. 객체에 특정한 개념을 적용하기로 했을때 우리는 그 객체를 특정한 개념 집합의 멤버로 분류하고 있는 것이다. 

 

 

개념을 통해 객체를 분류하는 과정은 추상화의 두가지 차원을 모두 이용하고 있다. 

 

분류는 추상화를 위한 도구이다. 

 

 


 

타입 

타입은 개념과 완전히 동일하다 

 

객체를 타입에 따라 분류하고 그 타입에 이름을 붙이는 것은, 결국 프로그램에서 사용할 새로운 데이터 타입을 선언하는 것과 같다. 

 

객체를 만들때 가장 중요하게 생각해야하는 것은 이웃하는 객체와 협력하기 위해 어떤 행동을 할지 결정해야하는 것이다. 

즉, 협력을 위해 어떤 책임을 지녀야 할지를 결정해야한다. 

 

타입= 역할 

 

객체의 타입을 결정하는 것은 객체의 행동뿐이다. (다형성) 

어떤 객체가 어떤 타입에 속하는지를 결정하는 것은 객체가 수행하는 행동이다. 

객체가 어떤 행동을 하느냐에 따라 객체의 타입이 결정된다. (객체가 하는 행동 = 내연)  

객체 내부의 표현 방식이 다르더라도 어떤 객체들이 동일하게 행동한다면, 그 객체들은 동일한 타입에 속한다.

= 어떠한 행동을 해야하는 동일한 책임을 가지고 있다면 동일한 개념에 속한다.  

 

동일한 데이터를 가지고 있더라도 다른 행동을 한다면, 서로 다른 타입으로 분류되어야한다. 

 

같은 타입에 속한 객체는 행동만 동일하다면 서로 다른 데이터를 가질 수 있다. 

동일한 행동 = 동일한 책임, 동일한 책임이란 동일한 메세지 수신을 의미한다. 

 

동일한 타입에 속한 객체는 동일한 메세지를 받고 이를 처리 할 수 있지만, 내부 데이터 표현 방식은 다를 수 있기 때문에 처리하는 방식은 다를 수 있다. 이것은 "다형성"과 관련이 있다. 

 

 

동일한 메세지를 서로 다른 방식으로 처리하기 위해서는 동일한 메세지를 수신 할 수 있어야하므로, 다형적인 객체들은 동일한 타입에 속하게 된다. 

 

 

동일한 행동을 한다는 것은 동일한 책임을 가지고 있다는 것이고, 동일한 책임을 가진다는 것은 동일한 메세지를 수신 받는다는 것이다. 
같은 타입에 속한 객체는 동일한 메세지를 수신 받지만, 내부 표현 방식에는 차이가 있기 때문에 메세지를 처리하는 방식에서 차이가 나타나게 된다. 이를 다형성이라고 한다. 

 

 

캡슐화

객체의 내부 표현 방식과 무관하게 행동만으로 타입이 결정된다는 것은, 외부에 데이터를 알릴 필요가 없다는 것이다. 

따라서 이러한 데이터는 외부로부터 감춰져야한다. 이는 캡슐화와 관련이 있다. 

 

타입의 계층 

 

일반화/특수화 관계

앨리스가 말하는 트럼프는 우리가 알고있는 트럼프 카드와 동일하지 않다.

앨리스가 말하는 트럼프는 더 정확하게 표현하면 "트럼프 인간"과 같다.

 

트럼프 인간 타입의 객체는 트럼프 타입의 객체가 할 수 있는 모든 행동을 할 수 있을뿐만 아니라 추가적으로 걸어다니는 행동을 할 수 있다.

 

트럼프 인간 타입은 트럼프 타입에 속한다. 

 

트럼프는 트럼프 인간을 포괄하는 좀 더 일반적인 개념이다. 트럼프 인간은 트럼프보다 좀 더 특화된 행동을 하는 특수한 개념이다. 

 

이 두 개념 사이의 관계를 "일반화/특수화 관계" 라고 한다. 

 

객체지향에서 일반화/특수화 관계를 결정하는 것은 객체의 행동이다. 

두 타입간에 일반화/특수화 관계가 성립하기 위해선 한 타입이 다른 타입보다 더 특수하게 행동하고, 반대로 한 타입은 더 일반적으로 행동해야한다. 

 

 

그럼 더 일반적으로 행동하고, 반대로 더 특수하게 행동한다는게 무슨 말일까? 

 

일반적인 타입은 특수한 타입 보다 더 적은 수의 행동을 가지고, 특수한 타입은 일반적인 타입보다 더 많은 수의 행동을 가진다. 단, 특수한 타입은 일반적인 타입이 할 수 있는 모든 행동 + 자신만의 행동을 수행한다. 

 

일반화/특수화 관계에서 일반적인 타입은 특수한 타입보다 더 작은 가짓수의 행동을 가지지만, 더 큰 크기의 외연을 가진다. 

 

 

슈퍼타입/서브타입 

일반화 타입 = 슈퍼 타입 / 특수한 타입= 서브 타입 

 

객체의 타입은 객체의 행동에 의해서만 결정된다. 

객체를 타입으로 분류하는 것은 시간에 따른 상태변화를 배제하고, 정적인 관점에서 객체를 묘사 할 수 있도록 한다. 

+ Recent posts