블로그

<도서정리> 객체지향의 사실과 오해

객체지향이란. 흔히 객체지향을 세상을 객체들의 모임으로 보고, 객체들이 상호작용하는 것을 소프트웨어 세계에 모방하는 방식으로 소개한다. 하지만, 객체지향은 실세계를 모방하는 것이 아닌 새로운 세계를 창조하는 것이다. 현실 속에서 수동적인 존재가 소프트웨어 객체로서는 능동적인 객체가 된다. 사물의 의인화가 이루어지며, 얼마든지 필요한 능력을 가질 수 있다. 객체 상태와 행동의 명명 또한 창조의 영역이다.   객체란. 객체들 간에는 특정한 목표를 위해 협력하며, 객체는 협력 속에서 맡은 역할에 책임을 진다. 협력은 연쇄적인 요청과 응답으로 구성되어있다. 객체 특징재활용성 - 여러 객체가 동일한 역할을 수행할 수 있다.활용성 - 역할을 대체가능성을 의미한다.다형성 - 책임을 수행하는 방법은 자율적으로 선택할 수 있으며, 다양한 방식으로 요청 수행이 가능하다.한 객체가 동시에 여러 가지 역할을 수행할 수 있다. 다양한 곳에 참여한다.(참조되어 사용된다)   협력. 시너지; 전체는 부분의 합보다 크다. 성공적인 협력을 위해서는 적절한 단위적인 책임을 부여하는 것이 중요하다.  객체는 충분히 협력적이어야한다. 다른 객체에게 적극적으로 도움을 요청할 정도로 열린 마음을 지녀야 하며, 모든 것을 스스로 해결하려는 전지전능한 객체는 복잡함에 의해 자멸한다. 객체는 자율성을 가진다.   객체의 자율성. 캡슐화 - 객체의 자율성은 객체의 내부와 외부를 명확하게 구분하는 것으로부터 나온다. 객체의 사적인 부분은 객체 스스로 관리하고, 외부에서 일체 간섭할 수 없도록 차단해야한다. 객체의 외부에서는 접근이 허락된 수단을 통해서만 객체와 의사소통해야한다. 무엇을 수행하는지는 알 수 있지만 어떻게 수행하는지에 대해서는 알 수 없다. 객체는 상태와 행동을 지닌다.  객체는 자신의 상태를 직접관리하고 상태를 기반으로 스스로 판단하고 행동하는 자율적인 존재이다. 객체의 행동이 상태를 결정한다. 객체의 행동은 객체가 협력에 참여하는 방법이며, 객체의 적합성은 객체의 행동으로부터 결정된다. 책임주도설계 - 객체가 어떤 책임을 갖는가가 설계를 주도한다. interface를 통해 제공가능한 정보와 서비스를 알려주는 동시에 캡슐화를 수행할 수 있다 인터페이스가 변경되지 않는다면, 내부 방식을 변경하더라도 그것이 영향을 끼치지 않는다. 동일한 인터페이스에 의존한다면, 어떠한 구현체와도 상호작용을 할 수 있다.   객체와 추상화. 추상화를 통해 현실세계의 복잡성을 극복할 수 있으며, 그를 통해 사물의 본질에 접근할 수 있다. 추상화 과정 - 유사성, 공통점을 통해 분류한다. 객체의 추상화는 분류(classification)를 통해 이루어진다. 객체지향은 객체를 지향하는 것이지 클래스를 지향하는 것이 아니다 일반화/특수화 서브타입은 슈퍼타입(본질)을 대체할 수 있어야한다. 슈퍼타입의 행동은 서브타입에 자동으로 상속된다. 타입 타입은 추상화이다. 타입은 동적인 상태 변경을 단순화하는 정적 객체 특징에 집중한다. 클래스는 타입을 구현하는 도구이다. 추상화를 통해 다양한 객체들이 조립되어 역할을 수행할 수 있다면 협력이 유연해지며 객체들의 재사용성이 높아진다.   메세징 메세징(요청)은 객체에게 접근할 수 있는 유일한 방법이다. 어떻게 할지는 객체 스스로가 결정하며, 메세지로는 무엇을 할지만을 요청한다. 요청을 받은 후 객체는 적절한 메서드를 선택하여(다형성) 요청을 수행할 것이다.  객체지향은 객체들이 주고받는 메세지들로 구성된다. 클래스는 객체들의 속성과 행위를 담는 틀일 뿐이며, 객체의 속성과 행위가 중심이 되어야한다. 또한 객체지향은 객체를 넘어서 객체들 간의 커뮤니케이션에 초점을 맞출 때 이루어진다. 메세징을 이용한 객체지향 객체가 책임을 완수하기 위해, 다른 객체의 도움이 필요하다고 판단되면도움 요청 메세지를 결정한다. 메세지를 결정한 후 메세지를 수행하기에 적합한 객체를 선택한다. -> 메세지가 수신자의 책임을 결정한다.   

도서객체지향협력역할책임추상화다형성캡슐화

채널톡 아이콘