본문 바로가기

객체지향4

[Object] 객체지향 프로그래밍 2 객체지향 프로그래밍 2 컴파일 시간 의존성과 실행 시간 의존성 코드의 의존성과 실행 시점의 의존성 코드의 의존성과 실행 시점의 의존성은 서로 다를 수 있다. -> 클래스 사이의 의존성과 객체 사이의 의존성은 동일하지 않을 수 있다. 유연하고, 쉽게 재사용할 수 있으며, 확장 가능한 객체지향 설계가 가지는 특징은 코드의 의존성과 실행 시점의 의존성이 다르다는 것이다. 코드의 의존성과 실행 시점의 의존성이 다르면? 코드를 이해하기 위해서는 코드뿐만 아니라 객체를 생성하고 연결하는 부분을 찾아야 하기 때문에 코드를 이해하기 어려워진다. 하지만 코드는 더 유연해지고 확장 가능해진다. 무조건 유연한 설계도, 무조건 읽기 쉬운 코드도 정답이 아니다. 차이에 의한 프로그래밍 차이에 의한 프로그래밍: 상속을 이용해 부.. 2022. 5. 16.
[Object] 객체지향 프로그래밍 1 객체지향 프로그래밍 1 클래스가 아닌 객체에 초점을 맞춰야 한다. 어떤 클래스가 필요한지 고민하기 전에 어떤 객체들이 필요한지 고민해야 한다. 클래스는 공통적인 상태와 행동을 공유하는 객체들을 추상화한 것 클래스의 윤곽을 잡기 위해서는 어떤 객체들이 어떤 상태와 행동을 가지는지 먼저 결정해야 한다. 객체를 중심에 두는 접근 방법은 설계를 단순하고 깔끔하게 만든다. 객체를 독립적인 존재가 아니라 기능을 구현하기 위해 협력하는 공동체의 일원으로 봐야 한다. 객체는 홀로 존재하는 것이 아니라, 다른 객체에게 도움을 주거나 의존하면서 살아가는 협력적인 존재다. 객체를 협력하는 공동체의 일원으로 바라보는 것은 설계를 유연하고 확장 가능하게 만든다. 프로그램의 구조는 도메인의 구조를 따른다. 도메인: 문제를 해결하.. 2022. 5. 16.
[Object] 객체지향 설계 객체지향 설계 좋은 설계란? 우리가 짜는 프로그램은 두가지 요구사항을 만족시켜야 한다. 오늘 완성해야 하는 기능을 구현하는 코드 내일 쉽게 변경할 수 있는 코드 좋은 설계란? 오늘 요구하는 기능을 온전히 수행하면서 내일의 변경을 매끄럽게 수용할 수 있는 설계 객체지향 설계 결국 좋은 코드, 즉 우리가 원하는 것은 변경에 유연하게 대응할 수 있는 코드이다. 객체지향 프로그래밍은 의존성을 효율적으로 통제할 수 있는 다양한 방법을 제공함으로써 요구사항 변경에 좀 더 수월하게 대응할 수 있는 가능성을 높여준다. 변경 가능한 코드는 이해하기 쉬운 코드이다. 아무리 코드가 변경에 유연하다고 하더라도 이해하지 못하는 코드는 변경이 어렵다. 객체지향 패러다임은 세상을 바라보는 방식대로 코드를 작성할 수 있도록 돕는다... 2022. 5. 10.
[Object] 객체와 설계 객체와 설계 객체지향적 사고와 프로그래밍을 위해 Object라는 책을 읽고 정리하는 과정입니다. 코드의 경우 Github 커밋에 대한 링크를 이용합니다. before code: Github commit after code: Github commit 영화관의 티켓 판매를 예시로 하는 코드이다. 예상을 빗나가는 코드 이해 가능한 코드: 동작이 예상에서 크게 벗어나지 않는 코드. 예상을 빗나가는 코드란 이해 가능한 코드가 아니라는 것이다. before code Theater의 enter 메서드 각각의 객체 내에서 해야할 것 같은 행위들이 모두 enter 메서드 내에서 진행된다. 변경에 취약한 코드 의존성: 변경에 대한 영향을 암시한다. 어떤 객체가 변경될 때 그 개체에게 의존하는 다른 객체도 함께 변경될 수 .. 2022. 5. 9.