서적/오브젝트: 코드로 이해하는 객체지향 설계
오브젝트 포스팅을 끝내며
오브젝트 마지막인 마치며, 나아가기에 이런 문구가 있다 어떤 기술을 처음 학습하려는 사람은 '따라가는 수준'에서 시작한다. 나는 객체지향을 코드로 이해하기 위해서 오브젝트를 읽기 시작했다. 처음엔 객체지향 개념도 제대로 안 잡힌 상태여서 오브젝트 내용을 잘 이해하지 못했다. 말 그대로 글과 코드를 보면서 따라갔다. 그러다가 중반부터 한달정도 멈췄다가 다시 읽으면 첫 완주를 했다. 첫 완주 했을 때의 심정은 드디어 다 읽었구나, 나도 이제 객체지향에 대해 좀 알게 된 거 같은 기분이다. 객체가 무엇인지 검색을 해보면 객체란 상태와 행동을 가진 거라 정의하는 사이트가 많았다. 오브젝트 초반 부분도 객체는 행동과 상태를 같이 가진 것이라고 표현한다. 하지만 초반 이후엔 객체는 협력이라는 문맥 안에서 적합한 책..
오브젝트 15_ 디자인 패턴과 프레임워크
디자인 패턴과 프레임워크에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 디자인 패턴은 소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법이다. 디자인 패턴의 목적은 설계를 재사용하는 것이다. 프레임워크는 설계와 코드를 함께 재사용하기 위한 것이다. 한마디로 디자인 패턴과 프레임워크는 모두 협력을 일관성 있게 만들기 위한 것이다. 디자인 패턴과 설계 재사용 소프트웨어 패턴 패턴이란 무엇인가 논의되면 반복적으로 언급되는..
오브젝트 14_ 일관성 있는 협력
일관성 있는 협력에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 객체지향 설계의 목표는 적절한 책임을 수행하는 객체들의 협력을 기반으로 결합도가 낮고 재사용 가능한 코드 구조를 창조하는 것이다. 개발하다 보면 유사한 요구사항을 반복적으로 추가하거나 수정할 수 있다. 유사한 요구사항을 추가하는 상황에서 협력마다 서로 다른 패턴으로 변경되면 전체적인 설계의 일관성이 무너지게 된다. 객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것이다. 재사용을 위해..
오브젝트 13_ 서브클래싱과 서브타이핑
서브클래싱과 서브타이핑에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 동일한 메시지에 대해 서로 다르게 행동할 수 있는 다형적인 객체를 구현하기 위해서는 객체의 행동을 기반으로 타입 계층을 구성해야 한다. 타입 사이의 관계를 고려하지 않은 채 코드 재사용을 위해 상속하면 여러 문제를 갖게 된다. 개념 관점의 타입 우리가 인지하는 세상의 사물의 종류를 개념 관점의 타입이라 하며, 어떤 대상이 타입으로 분류 될 때 그 대상을 타입의 '인스턴스(instanc..
오브젝트 12_ 다형성
다형성에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 객체지향 패러다임이 주목받기 시작한 초기에 상속은 계층 타입과 다형성을 구현하는 유일한 방법이었고, 상속을 이용하면 코드를 재사용할 수 있다는 '과대광고'가 널리 생겨 상속에 대한 맹신과 추종이 생겼다. 현재는 다양한 방법으로 다형성을 구현할 수 있어서 상속의 비중은 많이 사라졌다. 다형성(Polymorphism) 다형성은 많은 형태를 가질 수 있는 능력을 의미하며, 객체지향 프로그래밍에서 다형성은 ..
오브젝트 11_ 합성과 유연한 설계
합성과 유연한 설계에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 시작하면서 합성은 구현에 의존하지 않는다는 점에서 상속과 다르다. 상속 관계는 클래스 사이의 '정적인 관계'이고 합성 관계는 객체 사이의 '동적인 관계'다. 정적인 관계는 컴파일시점으로 변경이 불가능하지만 동적인 관계는 실행시점에 동적으로 변경이 가능하다. 객체 합성이 클래스 상속보다 더 좋은 방법이다. 상속은 구현된 코드를 재사용하면 합성은 객체의 퍼블릭 인터페이스를 재사용한다. 서브클래싱(상속)..
오브젝트 10_ 상속과 코드 재사용
상속과 코드 재사용에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 상속과 중복 코드 중복 코드는 모두를 의심하게 만든다. 이것만으로 제거하기 충분한 이유지만 결정적이 이유는 따로 있다. DRY 원칙 중복 코드는 변경을 방해한다. 이게 중복 코드를 제거해야 하는 가장 큰 이유다. 중복 코드는 수정과 테스트에 드는 비용을 증가시키고 공황상태로 몰아넣을 수 있다. 중복 여부의 판단 기준은 변경이다. 변경이 생겼을 때 두 코드를 수정해야 한다면 중복이다. 함께 수정이 안..
오브젝트 09_ 유연한 설계
유연한 설계에 대한 내용이다 자세한 내용이 궁금하면 오브젝트를 펼쳐보는 걸 추천드립니다.📖 오브젝트 역할, 책임, 협력을 향해 객체지향적으로 프로그래밍하라!객체지향으로 향하는 첫걸음은 클래스가 아니라 객체를 바라보는 것에서부터 시작한다. 객체지향으로 향하는 두번째 걸음은 객체를 www.yes24.com 개방-폐쇄 원칙(Open-Closed Principle, OCP) 로버트 마틴은 확장이 가능하고 변화에 유연하게 대응하는 설계 원칙 중 하나로 개방-폐쇄 원칙을 고안했다. 확장에는 열려있고, 수정에는 닫혀야 한다. - 확장에 열려있다 : 새로운 요구사항이 생기면 변경에 맞게 새로운 '동작'을 애플리케이션에 추가할 수 있다. - 수정에 닫혀있다 : 기존의 '코드'를 수정하지 않고 애플리케이션의 동작을 추가 ..