1. 개요객체지향에서의 객체와 타입은 전통적인 데이터 타입과 연관이 있습니다. 객체는 일종의 데이터처럼 사용되며, 그 행동에 따라 변할 수 있는 상태를 가집니다. 두 가지 중요한 조언을 통해 객체지향 설계의 핵심 원칙을 이해할 수 있습니다.2. 객체와 데이터객체는 데이터인가?객체는 데이터처럼 사용되지만 실제로는 데이터가 아닙니다.객체의 중요성객체에서 중요한 것은 상태가 아닌 행동입니다.상태는 행동의 부수효과로 표현됩니다.3. 타입의 분류와 중요성객체의 타입 분류객체가 수행하는 행동에 따라 타입이 결정됩니다.내부 표현의 은닉객체의 내부적인 표현은 외부로부터 감춰져야 하며, 효과적인 행동 수행만 중요합니다.4. 객체지향 설계의 원칙행동 중심객체가 이웃하는 객체와 협력하기 위해 어떤 행동을 해야 할지 결정하는..
개요객체지향의 핵심 원칙은 객체의 타입은 행동에 의해 결정된다는 것입니다. 데이터는 타입을 결정하지 않으며, 같은 책임과 행동을 가진 객체들은 동일한 타입에 속합니다.객체의 분류 기준객체의 타입을 결정하는 기준그 객체가 다른 객체와 동일한 행동을 하는지 여부입니다. 객체가 어떤 데이터를 가지고 있는지는 중요하지 않습니다.다형성의 의미동일한 행동을 가진 객체들은 서로 다른 데이터를 가질 수 있으며, 다형성이라는 능력을 갖게 됩니다. 다형성은 동일한 요청에 대해 서로 다른 방식으로 응답할 수 있는 능력을 말합니다.캡슐화 원칙객체는 외부에 행동만을 제공하고 데이터는 행동 뒤로 감추어야 합니다. 이 원칙은 캡슐화라고 하며, 객체지향 설계에서 중요한 기본 원칙입니다.책임-주도 설계객체가 어떤 책임을 가질지 먼저 ..
1. 타입의 정의객체가 동일한 타입으로 분류되려면 공통의 행동을 가져야 한다. 여기서 실세계의 트럼프 카드와 트럼프 인간의 차이점이 발생한다.2. 트럼프 타입트럼프 타입은 '납작 엎드릴 수 있고 뒤집어질 수 있다'는 내연으로 정의된다.3. 트럼프 인간 타입트럼프 인간 타입은 트럼프 타입이 할 수 있는 모든 것을 할 수 있고, 추가로 '걸을 때마다 몸이 종이처럼 좌우로 펄럭일 수 있다'는 특화된 행동을 가진다.4. 일반화/특수화 관계트럼프 인간은 트럼프의 특수한 형태로, 모든 트럼프 인간은 트럼프이지만 모든 트럼프는 트럼프 인간이 될 수 없다. 이 관계를 일반화/특수화(generalization/specialization) 관계라고 부른다. Uploaded by N2T
1. 개요객체지향에서 타입 간의 일반화/특수화 관계는 매우 중요한 개념이다.이 관계는 개념이 포괄적이거나 구체적인지에 따라 분류된다.2. 일반화일반화는 더 포괄적인 의미를 가진 타입을 나타낸다.예를 들어, "트럼프"는 "트럼프 인간"보다 더 일반적인 개념입니다.일반적인 타입은 특수한 집합을 부분집합으로 가지며 , 더 큰 외연 집합과 더 적은 수의 행동을 가집니다.3. 특수화특수화는 더 구체적인 의미를 가진 타입을 나타냅니다."트럼프 인간"은 "트럼프"보다 더 특수한 개념입니다.특수한 타입은 더 작은 외연 집합을 가지지만, 더 많은 수의 행동을 가집니다.4. 행동의 중요성일반화/특수화 관계에서 중요한 것은 객체의 상태가 아닌 행동입니다.일반적인 타입은 특수한 타입이 가진 일부 행동만을 가집니다.특수한 타입..
슈퍼타입과 서브타입일반화/특수화 관계: 좀 더 일반적인 타입(슈퍼타입)과 좀 더 특수한 타입(서브타입) 간의 관계중요한 것: 두 타입 간의 관계가 행동에 의해 결정됨(행위적 호환성)행위적 호환성서브타입은 슈퍼타입의 행위와 호환되어야 함서브타입은 슈퍼타입을 대체할 수 있어야 함일반화/특수화 관계 표기법슈퍼타입: 상단, 서브타입: 하단, 속이 빈 삼각형으로 연결서브타입에서는 슈퍼타입과 중복된 행위를 생략 가능서브타입에게 슈퍼타입의 행동이 자동으로 상속됨// 슈퍼타입 클래스 정의 class Trump { void flatten() { System.out.println("납작 엎드릴 수 있다."); } void flip() { System.out.println("뒤집어질 수 있다."); } } // 서브타입 클..
1. 개요객체지향 패러다임에서는 추상화와 일반화/특수화 계층이 중요하게 작용한다.2. 일반화와 추상화일반화는 특수한 것을 더 넓은 의미로 표현하는 것이다.추상화는 중요한 부분만 강조하고 불필요한 세부사항을 제거하여 단순화하는 것이다. 이러한 방법을 통해 객체를 좀 더 관리하기 쉽게 만들 수 있다.2.1 일반화/특수화의 예시예를 들어, 트럼프 인간을 트럼프로 일반화하면 복잡성을 줄이고 중요한 특성만을 강조할 수 있습니다. 이렇게 일반화와 특수화를 함께 사용하면 객체를 더 효율적으로 다룰 수 있습니다.3. 정적 모델시간에 따라 변하는 객체의 복잡성을 정적인 관점에서 표현하기 위해 타입을 사용합니다.시간이라는 요소를 제거하고 상태를 단순화함으로써 객체를 더 쉽게 다룰 수 있게 됩니다.3.1 타입의 목적타입은 ..