객체지향 3

<오브젝트>에서 말하는 '객체지향, 왜 필요한가?'

책 에서 말하는 객체지향 설계 책 의 34쪽에서 36쪽을 발췌, 요약한 글입니다. 설계가 왜 필요한가 항상 변경되는 요구사항에 잘 대응하기 위해서 좋은 설계가 필요하다. 우리가 짜는 프로그램은 두 가지 요구사항을 만족시켜야 한다. 우리는 오늘 완성해야 하는 기능을 구현하는 코드를 짜야 하는 동시에 내일 쉽게 변경할 수 있는 코드를 짜야 한다. 좋은 설계란 오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계다. - 35p 요구사항은 항상 변경된다. 코드를 변경해야 한다. 버그가 발생할 가능성이 높아진다. 그러니 변경을 수용할 수 있는 설계가 중요하다. 객체지향 설계 객체지향 프로그래밍은 의존성을 효율적으로 통제할 수 있는 다양한 방법을 제공함으로써 요구사항 변경에 좀 더 수..

재사용, 상속보다는 조립으로

재사용: 상속보단 조립 상속을 사용하면 재사용을 쉽게 할 수 있는 것은 분명하다. 하지만 상속을 사용할 경우 몇 가지 문제점이 있다. 이 글에서는 상속을 통한 재사용 과정에서 발생할 수 있는 문제점을 살펴보고, 또 다른 재사용 방법인 객체 조립을 통해 상속을 통한 재사용의 단점을 해소하는 방법을 알아본다. 상속을 통한 재사용의 단점 상위 클래스 변경의 어려움 어떤 클래스를 상속받는다는 것은 그 클래스에 의존한다는 뜻이다. 따라서 의존하는 클래스의 코드가 변경되면 영향을 받을 수 있다. 즉, 상위 클래스에서 변경의 여파가 하위 클래스로 전파된다. 최악의 경우 상위 클래스의 변화가 모든 하위 클래스에 영향을 줄 수 있다. 이는 클래스 계층도에 있는 클래스들을 한 개의 거대한 단일 구조처럼 만들어 주는 결과를..

다형성과 추상 타입

다형성과 추상 타입 객체 지향에서 유연하게 구현을 변경할 수 있도록 하는 방법으로 추상화가 있다. 추상화는 다형성으로 가능해진다. 다형성을 알기 위해서는 상속을 알아야 한다. 상속 개요 상속(Inheritance)은 한 타입을 그대로 사용하면서 구현을 추가할 수 있도록 해주는 방법을 제공한다. 어떤 객체가 갖고 있는 기능을 확장해 새로운 기능을 구현하고 싶을 때 상속을 사용한다. 상속 대상이 되는 클래스를 상위(super) 클래스 또는 부모 클래스라고 부른다. 상속을 받는 클래스를 하위(sub) 클래스 또는 자식 클래스라고 부른다. 자식 클래스는 부모 클래스에 정의된 구현을 물려받는다. 프로그래밍 언어마다 하위 타입에서 물려받을 수 있을 것이 다를 수 있다. 다수의 언어에서 private 범위를 갖는 메..