책/오브젝트15 15. 디자인 패턴과 프레임워크 15. 디자인 패턴과 프레임워크태그비어 있음날짜2024년 5월 22일소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 반복적으로 적용할 수 있는 해결 방법을 디자인 패턴이라고 부른다.디자인 패턴 정의패턴은 추상적인 원칙과 실제 코드 작성 사이의 간극을 메워주며 실질적인 코드 작성을 돕는다.저저가 동의하는 마틴 파울러의 디자인 패턴 정의패턴은 한 컨텍스트에서 유용한 동시에 다른 컨텍스트에서도 유용한 ‘아이디어’다.캡슐화와 디자인 패턴대부분의 디자인 패턴의 목적은 특정한 변경을 캡슐화 함으로써 유연하고 일관성 있는 협력을 설계할 수 있는 경험을 공유하는 것이다.패턴을 맹목적으로 사용하면 안된다.어떤 컨텍스트에서 어떤 패턴을 적용해야 하는지 다양한 실무경험을 통해 감각을 익히자프레임워크와 코드 재사용프레임워.. 2025. 3. 17. 14. 일관성 있는 협력 14. 일관성 있는 협력태그비어 있음날짜2024년 5월 22일휴대폰 과금 시스템을 구현할 때 처음 예제는 일관성이 없어서 이해하기 어렵다유사한 기능은 유사한 방식으로 구현해야 한다. 협력을 일관성 있게 만들어야 한다.설계에 일관성 부여하기변하는 개념을 변하지 않는 개념으로부터 분리하라변하는 개념을 캡슐화 하라추상화를 찾아 추상화에 의존하도록 만드는 것조건에 따라 분기되는 어떤 로직들이 있다면 이 로직들이 바로 개별적인 변경이라고 볼 수 있다.클래스를 분리하면 유사한 행동을 하는 클래스들을 역할이라는 추상화로 묶을 수 있고 이는 설계를 일관성있게 유지시킬 수 있다.캡슐화 다시 살펴보기캡슐화는 데이터 은닉 이상이다.캡슐화는 변하는 어떤 것이든 감추는 것이다.캡슐화 종류데이터 캡슐화메서드 캡슐화객체 캡슐화서브.. 2025. 3. 17. 13. 서브클래싱과 서브타이핑 13. 서브클래싱과 서브타이핑태그비어 있음날짜2024년 5월 14일올바른 타입 계층을 구성하는 원칙을 살펴보자🏁 타입객체의 타입이란 객체가 수신할 수 있는 메시지의 종류를 정의하는 것이다.⇒ 퍼블릭 인터페이스 🏁 타입 계층타입 계층을 구성하는 두 타입 간의 관계에서 더 일반적인 타입을 슈퍼타입, 더 특수한 타입을 서브타입이라고 부른다.🏁 서브클래싱과 서브타이핑언제 상속을 사용해야 하는가?상속 관계가 is-a관계를 모델링하는가?is-a로 연결해 문장을 만들어도 어색하지 않은 단어로 타입의 이름을 정하라 클라이언트 입장에서 부모 클래스의 타입으로 자식 클래스를 사용해도 무방한가?행동의 호환 여부를 판단하는 기준은 클라이언트의 관점이다.인터페이스를 클라이언트의 기대에 따라 분리함으로써 변경에 의해 영향을.. 2025. 3. 17. 12. 다형성 12. 다형성태그비어 있음날짜2024년 5월 14일단순히 코드를 재사용하기 위해서라면 상속을 사용하지 말아야 한다.✅ 다형성여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법✅ 상속의 양면성상속은 다형성을 가능하게 하는 타입 계층을 구축하기 위한 것이다.데이터 관점의 상속자식 클래스의 인스턴스는 자동으로 부모 클래스에서 정의한 모든 인스턴스 변수를 내부에 포함하게 되는 것행동 관점의 상속메시지를 수신한 객체는 자신의 클래스에 메서드가 존재하지 않으면 parent포인터를 따라 부모 클래스를 차례대로 훑어가면서 적절한 메서드가 존재하는지를 검색한다. ✅ 업캐스팅과 동적 바인딩업캐스팅 : 부모 클래스 타입으로 선언된 변수에 자식 클래스의 인스턴스를 할당하는 것동적 바인딩 : 선언된 변수의 타입이.. 2025. 3. 17. 이전 1 2 3 4 다음