Factory Method Pattern 팩토리 메서드 패턴은 인스턴스를 생성하는 방법을 상위 클래스 측에서 결정하지만, 구체적인 인스턴스의 유형까지는 결정하지 않는 디자인 패턴입니다. 대신, 구체적인 내용은 모두 하위 클래스 측에서 수행됩니다. 이를 통해 인스턴스 생성을 위한 골격과 실제 인스턴스 생성의 클래스를 분리하여 생각할 수 있습니다. 상위 클래스에서 인스턴스 생성 방법 결정: 상위 클래스에서는 인스턴스를 생성하기 위한 추상 메서드(팩토리 메서드)를 정의합니다. 이 메서드는 실제로 어떤 유형의 인스턴스를 생성할지 결정하지 않고, 그 결정은 하위 클래스에 위임됩니다. 하위 클래스에서 구체적인 내용 수행: 실제 인스턴스 생성에 관련된 구체적인 로직은 하위 클래스에서 수행됩니다. 각 하위 클래스는 상..
Creation Design Pattern (생성 디자인 패턴) 생성 디자인 패턴은 객체 생성에 관련된 디자인 패턴을 말합니다. 이 패턴들은 객체의 생성 과정을 캡슐화하여, 객체 생성을 더 유연하게 만들어 줍니다. 주로 객체 생성 로직이 단순하지 않거나, 객체 생성과 관련된 정보를 캡슐화하여, 시스템의 다른 부분과의 의존성을 줄이는 데 유용합니다. Factory Pattern (팩토리 패턴) 팩토리 패턴은 객체를 생성하기 위한 인터페이스를 정의하고, 어떤 클래스의 인스턴스를 생성할지는 서브클래스가 결정하게 합니다. 이를 통해 객체 생성을 위한 코드와 사용을 위한 코드의 분리가 가능해집니다. 팩토리 패턴은 크게 세 가지로 나뉩니다. Simple Factory (단순 팩토리) 단순 팩토리는 팩토리 메서드를 ..
Object-Oriented Programming (객체지향 프로그래밍, OOP)의 이해 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 실세계의 사물이나 개념을 객체로 모델링하여 소프트웨어를 개발하는 프로그래밍 패러다임입니다. 이 접근 방식은 데이터(속성)와 그 데이터를 처리하는 데 필요한 기능(함수 또는 메소드)을 하나의 단위로 묶어서 생각합니다. 예를 들어서 Car라는 객체가 있을때? 속성: fuel: 차량의 연료 양, speed: 차량의 현재 속도, steering wheel: 핸들의 위치, coordinate: 차량의 현재 위치 함수: accelerate(): 차량의 속도를 증가시킵니다. takeLeft(): 차량을 왼쪽으로 조향합니다. takeRight(): ..
What is UML? UML(Unified Modeling Language, 통합 모델링 언어)는 시스템의 구조와 동작을 시각화하고, 사양(specification)을 문서화하는 데 사용되는 표준화된 모델링 언어입니다. 시스템을 시각화 하거나 시스템의 사양, 설계를 문서화 하기 위한 표현 방법입니다. 통합 모델링 언어는 객체 지향 프로그래밍 소프트웨어 집얍 시스템을 개발할 때 산출물을 명세화, 시각화, 문서화할 때 사용합니다. 일반적으로 UML의 범위는 매우 넓지만, 여기서는 클래스 다이어그램 및 시퀀스 다이어그램에 대해서만 설명해 보겠습니다. Code Pattern들을 표현할 때도 유용합니다. Class Diagram: 클래스와 계층 관계 클래스 다이어그램은 시스템의 정적 구조를 나타내는 UML 구조..
Solid Principles (솔리드 원칙) SOLID 원칙은 객체 지향 프로그래밍과 소프트웨어 엔지니어링에서 좋은 코드 설계를 위한 다섯 가지 기본적인 원칙을 말합니다. 이 원칙들은 코드의 유지보수성을 향상시키고, 확장성을 용이하게 하며, 복잡성을 관리하는 데 도움을 줍니다. 5개의 원칙이 있습니다. S - Single Responsibility Principle (단일 책임 원칙) 각 클래스는 하나의 책임만을 가져야 합니다. 즉, 시스템에서 변경이 필요한 한 가지 이유만을 가지고 있어야 합니다. 이 원칙은 코드의 재사용성을 높이고, 변경에 대한 유연성을 증가시킵니다. O - Open/Closed Principle (개방/폐쇄 원칙) 소프트웨어의 엔티티(클래스, 모듈, 함수 등)는 확장에 대해서는 열..
What is Design Pattern? 디자인 패턴은 소프트웨어 공학에서 일반적인 문제들에 대한 반복적이고 재사용 가능한 해결책을 제공하는 형식화된 방법론입니다. 이러한 패턴들은 개발자들이 특정 상황이나 문제에 대해 효과적으로 대응할 수 있도록 도와줍니다. 디자인 패턴은 주로 객체 지향 소프트웨어 설계에 적용되며, 코드의 재사용성, 유연성, 확장성을 높이는 데 도움이 됩니다. 디자인 패턴은 규칙이 아니다. 언어 종속적이지 않습니다. 프레임 워크 개발에 적용될 수 있습니다. 특정 영역에 종속적이지 않고 일반적으로 활용할 수 있습니다. 좋은 설계에 대한 제안이기도 합니다. 디자인 패턴은 클래스 라이브러리가 아니다. 프로그래밍 언어(C++, Java, Python 등)를 사용할 때 클래스들이 모인 라이브러..