챕터 한줄 평
프로그래밍의 패러다임의 흐름속에서 지금까지 소개한 객체지향 개념들이 탄생하게 된 배경
프로그래밍의 진화
- 메인함수에다가 전부 때려넣기
- 데이터 문제
- 비지니스로직과 사용자 인터페이스의 결합
- 변경에서의 취약성
- 함수형 프로그래밍
- 여전히 데이터에 지나치게 의존하며
- 수정에 용이하지 않다.
- 데이터 추상화 계층
- 다른 종류의 객체가 아닌
- 데이터만을 포장하고 있는 계층
- 객체지향
- 타입을 기준으로 절차를 추상화한다.
- 어떻게 알 수 있는가?
- 인스턴스 변수를 통해서 타입을 판단하고 그에 맞게 다른 로직을 수행한다? 객체지향 위반
- 각기 다른 클래스를 생성하고 다형성을 활용하여 절차를 추상화하여 제공하는 방식이 객체지향
- 즉 조건문이 다형성으로 대체되는 것
협력의 관점에서 바라보자.
객체지향의 다양한 개념은 단순히 분리를 위해서 사용되는 것이 아니다. 객체들간의 협력이라는 관점에서 역할을 할당하고 역할을 할당하면서 무엇 을 할것인가에 집중하게 된다. 이 과정에서 같은 역할을 수행하는 객체를 묶음짓고 재사용성을 높이기 위한 방안이지, 단순히 절대적인 법칙이 아니다.
- 단순히 타입을 분리하기 위해서 조건문을 쓰지 않기 위해서 다형성을 활용하는 것은 좋지 않다.
- 협력이라는 관점에서 객체가 해야하는 역할을 정의하고
- 이 역할을 적절히 수행할 수 있는 객체를 찾는 과정에서 다형성이 활용될 수 있는 것이지
- 그자체로써 중요한 것이 아니다