본문 바로가기

오브젝트13

15장 - 디자인 패턴과 프레임워크 개요 이번 장에서는 객체지향 관점에서 디자인 패턴과 프레임워크가 설계에 어떻게 영향을 주는지에 대해 알아봅니다. 소프트웨어 패턴이란 무엇일까? 패턴이란 하나의 실무 컨텍스트에서 유용하게 사용해 왔고 다른 실무 컨텍스트에서도 유용할 것이라고 예상되는 아이디어입니다. 이러한 패턴을 잘 이해하기 위해서는, 단순한 정의를 넘어서 패턴이 내포하는 미묘한 의미와 적용의 배경을 파악하는 것이 중요합니다. 패턴은 문제와 그 해결책을 연결하는 방식으로 정리되며, 이를 통해 개발자들 사이의 의사소통을 돕고, 추상적인 원칙과 실제 코드 사이의 간극을 메우는 역할을 합니다. 패턴의 장점은 무엇일까? 1. 실무에서 얻은 경험을 효과적으로 요약하고 전달할 수 있다는 점입니다. 이는 초보자들이 경험을 통해 검증된 방법론을 배우고,.. 2023. 11. 14.
12장 - 다형성 개요 이번 장에서는 상속의 관점에서 다형적인 타입 계층을 구현하는 방법과 올바른 타입 계층을 구성하기 위해 고려해야 하는 원칙에 관해 소개합니다. 다형성(Polymorphism)이란? 다형성이라는 단어는 그리스어에서 많은을 의미하는 poly와 형태를 의미하는 morph의 합성어로 많은 형태를 가질 수 있는 능력을 의미하며, 컴퓨터 과학에서는 다형성을 하나의 추상 인터페이스에 대해 코드를 작성하고 이 추상 인터페이스에 대해 서로 다른 구현을 연결할 수 있는 능력으로 정의합니다. 위 두 의미를 정리하자면 다형성은 여러 타입을 대상으로 동작할 수 있는 코드를 작성할 수 있는 방법이라고 할 수 있습니다. 다형성 분류 다형성은 크게 유니버설 다형성과 임시(Ad Hoc) 다형성으로 분류할 수 있습니다. 유니버설 다.. 2023. 9. 20.
11장 - 합성과 유연한 설계 개요 이번 장에서는 상속의 문제점을 해결하기 위한 방법에 대해서 소개합니다. 상속의 문제들을 어떻게 해결할 수 있을까? 합성(Composition)을 사용하면 상속의 문제들을 해결할 수 있습니다. 합성(Composition)은 기존의 객체를 재사용하기 위해 그 객체를 포함하는 새로운 객체를 생성하는 디자인 패턴입니다. 다음 간단한 예제들을 통해 어떻게 문제를 해결하는지 알아보겠습니다. 상속을 사용한 예제 class Car: def __init__(self, fuel_efficiency): self.fuel_efficiency = fuel_efficiency # 초기 연료 효율성 설정 def fuel_needed(self, distance): return distance / self.fuel_efficie.. 2023. 8. 28.
10장 - 상속과 코드 재사용 개요 이번 장에서는 객체지향에서 중복 코드를 제거하는 대표적인 기법인 상속에 대해 설명합니다. 왜 중복 코드를 제거해야 할까? 중복 코드가 가지는 가장 큰 문제는 코드를 수정하는 데 필요한 노력을 몇 배로 증가시킵니다. 프로세스 예시) 어떤 코드가 중복인지 확인 → 찾았다면 찾아낸 모든 코드를 일관되게 수정 → 테스트하여 동일한 결과가 출력되는지 확인 위 프로세스의 노력이 늘어날수록 코드의 변경이 힘들게 됩니다. 따라서 이러한 이슈 때문에 중복 코드를 제거해야 합니다. 중복 여부를 판단하는 기준은 변경입니다. 요구사항이 변경됐을 때 두 코드를 함께 수정해야 한다면 이 코드는 중복이며, 함께 수정할 필요가 없다면 중복이 아닙니다. 어떻게 중복 코드를 제거할 수 있을까? 여러 가지 방법이 있겠지만 이 책에서.. 2023. 8. 6.