독서

    [객체지향의 사실과 오해] 부록A : 추상화 기법

    [객체지향의 사실과 오해] 부록A : 추상화 기법

    추상화 기법 추상화 : 도메인의 복잡성을 단순화하고 직관적인 멘탈 모델을 만드는 데 사용하는 인지 수단 추상화 기법의 종류 분류와 인스턴스화 분류 : 객체의 구체적인 세부사항을 숨기고 인스턴스 간에 공유하는 공통적인 특성을 기반으로 범주를 형성하는 과정 인스턴스화 : 범주로부터 객체를 생성하는 과정 (분류의 역) 예시 : 승용차, 버스, 트럭을 자동차로 분류 일반화와 특수화 일반화 : 범주 사이의 차이를 숨기고 범주 간에 공유하는 공통적인 특성을 강조하는 과정 특수화 : (일반화의 역) 예시 : 자동차와 자전거를 운송 수단으로 일반화 집합과 분해 집합 : 부분과 관련된 세부 사항을 숨기고 부분을 사용해서 전체를 형성하는 과정 분해 : 전체를 부분으로 분리하는 과정 (집합의 역) 예시 : 자동차를 섀시, ..

    [객체지향의 사실과 오해] 04장 : 역할, 책임, 협력

    [객체지향의 사실과 오해] 04장 : 역할, 책임, 협력

    협력 중요도 : 개별 객체의 품질 < 여러 객체들이 모여 이뤄내는 협력의 품질 어떤 협력에 참여하는지가 객체에 필요한 행동을 결정하고, 필요한 행동이 객체의 상태 결정 협력은 다수의 연쇄적인 요청과 응답의 흐름으로 구성됨 책임 객체에 의해 정의되는 응집도 있는 행위의 집합으로, 객체가 알아야 하는 정보와 객체가 수행할 수 있는 행위에 대해 서술한 문장 객체가 '무엇을 알고 있는가(knowing)'와 '무엇을 할 수 있는가(doing)'으로 구성됨 아는 것 (knowing) : 외부에 제공해줄 수 있는 정보 개인적인 정보에 관해 아는 것 관련된 객체에 대해 아는 것 자신이 유도하거나 계산할 수 있는 것에 관해 아는 것 하는 것 (doing) : 외부에 제공해 줄 수 있는 서비스 객체를 생성하거나 계산을 하..

    [객체지향의 사실과 오해] 03장 : 타입과 추상화

    [객체지향의 사실과 오해] 03장 : 타입과 추상화

    객체지향과 추상화 추상화 목적 : 현실의 복잡성 극복하기 위한 방법으로, 복잡한 것을 이해하기 쉬운 수준으로 단순화하는 것 방법1 : 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만듦 방법2 : 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만듦 개념 개념 : 일반적으로 우리가 인식하고 있는 다양한 사물이나 객체에 적용할 수 있는 아이디어나 관념 ⇒ 객체를 여러 그룹으로 분류 가능 & 각 객체는 특정한 개념을 표현하는 그룹의 일원으로 포함됨 (인스턴스(instance)) 개념이 객체에 적용됐을 때 객체를 개념의 인스턴스(instance)라고 함 개념의 세 가지 관점 심볼(symbol): 개념을 가리키는 간략한 이름이나 명칭 내연(intension): 개념의..

    [객체지향의 사실과 오해] 02장 : 이상한 나라의 객체

    [객체지향의 사실과 오해] 02장 : 이상한 나라의 객체

    객체 하나의 개별적인 실체로 식별 가능한 물리적인 또는 개념적인 사물은 어떤 것이라도 객체가 될 수 있음 객체는 변경 가능한 상태, 특징적인 행동, 구별 가능한 식별자를 가지며, 객체는 저장된 상태와 실행가능한 코드를 통해 구현된다. 상태 특정 시점에 객체가 가지고 있는 정보의 집합 상태를 이용하면 과거의 모든 행동 이력을 설명하지 않고도 현재를 기반으로 객체의 행동 방식을 이해하고 행동의 결과를 쉽게 예측하고 설명할 수 있음 모든 객체의 상태는 단순한 값과 객체의 조합으로 표현할 수 있다. 객체의 상태 = 프로퍼티 + 프로퍼티 값 프로퍼티 객체의 상태를 구성하는 모든 특징 프로퍼티는 정적 (변경되지 않고 고정됨) 프로퍼티 값(property value)은 동적 (시간이 흐름에 따라 변경됨) 객체의 프로..

    [객체지향의 사실과 오해] 01장 : 협력하는 객체들의 공동체

    [객체지향의 사실과 오해] 01장 : 협력하는 객체들의 공동체

    객체지향 프로그래밍이란? 현실 속에 존재하는 사물을 최대한 유사하게 모방해 소프트웨어 내부로 옮겨오는 작업 객체지향의 목표는 실세계를 모방하는 것이 아니라, 오히려 새로운 세계를 창조하는 것 소프트웨어 객체와 실세계 사물 사이에 존재하는 연관성은 희미하다. (ex. 현실 세계에서는 사람이 TV를 켜지만, 소프트웨어 세계에서는 TV 객체가 TV를 켠다. 객체지향에서 가장 중요한 개념 3가지 : 역할, 책임, 협력 역할 : 관련성 높은 책임의 집합으로, 재사용 가능한 협력관계를 구축하는 데 중요 여러 객체가 동일한 역할을 수행할 수 있다. (대체가능성) ⇒ 다형성과 관련 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다. (자율성) 하나의 객체가 동시에 여러 역할을 수행할 수 있다. 책임 협력 :..