본문 바로가기

반응형

c c++ mfc

(15)
디자인패턴 - 프로토타입(Prototype) 프로토타입 패턴(Prototype Pattern)은 객체 생성의 구체적인 클래스를 명시하지 않고, 기존 객체를 복사하여 새로운 객체를 생성하는 방식입니다. 이 패턴은 객체 생성 비용이 큰 경우, 또는 같은 구조의 객체를 여러 개 만들어야 할 때 유용합니다. 프로토타입 패턴은 주로 두 가지 주요 개념으로 구성됩니다: 복사(클론)와 인터페이스.주요 특징객체 복사: 기존 객체를 복사하여 새로운 객체를 생성할 수 있습니다. 이 방식은 객체의 생성 비용이 클 때 유용합니다.유연성: 새로운 객체를 생성할 때, 기존 객체를 기반으로 할 수 있어 유연성이 높습니다.클라이언트 코드 간소화: 클라이언트는 객체의 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 객체를 복사할 수 있습니다. C++ 코드 예시아래는 프로토타..
디자인패턴 - 팩토리 메소드(Factory Method) 팩토리 메소드 패턴(Factory Method Pattern)은 객체 생성에 대한 인터페이스를 정의하지만, 어떤 클래스의 인스턴스를 생성할지는 서브클래스에서 결정하도록 하는 디자인 패턴입니다. 이 패턴은 클라이언트 코드가 구체적인 클래스에 의존하지 않도록 하여, 객체 생성의 유연성과 확장성을 제공합니다. 주요 특징1. 객체 생성의 캡슐화: 객체 생성 로직을 서브클래스에 위임하여, 클라이언트 코드에서 구체적인 클래스에 의존하지 않게 합니다.2. 유연성: 새로운 제품을 추가할 때, 기존 코드를 수정하지 않고 새로운 서브클래스를 추가하여 쉽게 확장할 수 있습니다.3. 일관성 유지: 동일한 인터페이스를 통해 다양한 객체를 생성할 수 있어, 일관된 방식으로 객체를 관리할 수 있습니다.C++ 코드 예시아래는 팩토리..
디자인패턴 - 빌더 패턴(Builder Pattern) 빌더 패턴(Builder Pattern)은 복잡한 객체를 단계별로 생성할 수 있도록 도와주는 디자인 패턴입니다. 이 패턴은 객체 생성의 과정을 캡슐화하여, 동일한 생성 절차에서 서로 다른 표현을 만들 수 있게 해줍니다. 특히, 객체의 속성이 많거나 복잡한 경우에 유용합니다. 주요 특징단계별 객체 생성: 객체를 생성할 때 여러 단계로 나누어 생성할 수 있어, 각 단계를 통해 필요한 속성을 설정할 수 있습니다.불변성: 생성된 객체는 불변(immutable)으로 만들 수 있어, 생성 후 상태 변경을 방지할 수 있습니다.가독성 향상: 명확한 메서드 체이닝을 통해 객체 생성 과정을 쉽게 이해할 수 있습니다.C++ 코드 예시아래는 빌더 패턴을 사용하여 복잡한 Pizza 객체를 생성하는 예시입니다.#include #..
디자인패턴 - 추상 팩토리 패턴(Abstract Factory Pattern) 추상 팩토리 패턴(Abstract Factory Pattern)은 객체 생성 패턴 중 하나로, 관련된 객체 군을 생성하는 인터페이스를 제공하는 패턴입니다. 이 패턴은 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 객체를 생성함으로써 코드의 유연성과 확장성을 높입니다. 주요 특징1. 객체 군 생성: 추상 팩토리 패턴은 관련된 객체를 함께 생성할 수 있도록 해줍니다. 예를 들어, 특정 스타일의 UI 컴포넌트를 생성하는 팩토리를 만들 수 있습니다.2. 인터페이스 제공: 클라이언트는 구체적인 클래스에 의존하지 않고, 인터페이스를 통해 객체를 요청합니다. 이를 통해 코드의 결합도를 낮출 수 있습니다.3. 확장성: 새로운 제품군을 추가할 때 기존 코드를 변경하지 않고 새로운 팩토리 클래스를 추가하는 방식으로 ..
Visual Studio 재배포 패키지가 설치되지 않는 문제 해결방법 1. EXE 실행이 되지 않는 현상 확인이 exe는 여러 Lib, DLL을 사용중이었고, exe 개발 IDE는 오랜 새월동안 Visual Studio 버전을 올려가며 개발되어왔다.내가 기억하는 것만 해도 Visual Studio 2009, 2015, 2019에 이어 2022를 사용하여 빌드된 제품이다. 2. 재배포 패키지 설치구글에 '재배포 패키지' 로 검색하면 다음과 같이 최신버전의 재배포패키지를 다운로드 받을 수 있다.3. 재배포 패키지 설치 실패최신 재배포패키지를 다운로드 받아 설치하였는데, 위와 같이 제대로 설치되지 않는 현상이 발생하였습니다. 위의 창에서 OK를 클릭하면 아래와 같이 출력되는데, 가장 마지막 문구인 Microsoft Visual C++ 2019 X64 Additional Runt..
UML Sequence Diagram에서 Boundary, Control, Entity 클래스가 하는 역할은? 오늘은 UML Sequence Diagram을 그릴 때 좀 헷갈리는 부분이 있어 정리하려고 합니다.보통 수명선(LifeLine)이라고 이렇게 그리는데요.점선은 시간의 경과를 나타내는 거고 그 위의 네모는 객체를 나타냅니다. 그런데 저 객체 자리에 다음과 같이 다른 것들을 그릴 수 있습니다.얘네들은 언제 사용하는 것일까요? 1. Actor (사용자)먼저 Actor는 너무 분명하죠. 프로그램을 사용하는 사용자입니다. 이견의 여지가 없죠.UML 시퀀스 다이어그램에서 Actor는 시스템과 상호작용하는 외부 참여자를 표현하고, 시스템 사용 시나리오를 정의하며, 시스템의 경계와 범위를 설정하는 데 사용됩니다. 2. Boundary(경계)다음으로 Boundary. 해석 그대로 시스템의 경계를 모델링하는 클래스입니다...
GFlags 를 이용하여 메모리 누수 찾기 오늘은 C/C++, MFC를 이용한 Windows Application 개발중에 직면할 수 있는 메모리 누수 문제를 해결할 수 있는 툴에 대해 기록하려 합니다. 1. 설치파일 찾기 GFlags 는 Windows용 디버깅 도구입니다. google에서 검색하면 설치할 수 있는 페이지를 찾을 수 있습니다. 타고 타고 들어가면 아래 세번째 그림과 같이 WDK 설치페이지까지 갑니다. 거기서 2단계, SDK를 설치하면 됩니다. 2. 설치 설치파일을 실행하면 다음과 같은 화면이 나오는데 여기서 'Debugging Tools for Windows' 를 체크하여 설치합니다. 나머지는 필요에 따라 선택하시면 됩니다. 3. 실행 windows 좌측하단의 검색버튼에서 gflags를 검색하여 실행합니다. 그러면 다음과 같은 g..
C++ 20의 주목할만한 Feature 안녕하세요. 오늘도 역시 제 본업입니다. 지난 시간 C++17에 추가된 내용들을 먼저 정리해 보았습니다. 오늘은 이어서 C++20에 추가된 내용중에 제 개인적인 의견으로 유용할 것 같은 애들만 기술했습니다. 참고하시고, 시작합니다~~ 1. 우주선 연산자(Spaceship Operator) C++20에서는 새로운 비교 연산자인 "우주선 연산자"(Spaceship Operator)가 도입되었습니다. 이 우주선 연산자는 기존의 비교 연산자들을 한 번에 처리할 수 있는 강력한 도구입니다. 우주선 연산자는 기호로 표현되며, 공식적으로는 "세 방향 비교"(Three-Way Comparison) 또는 "총 등호"(Total Ordering)라고 불립니다. 이 연산자의 반환 값은 다음과 같습니다: 양수: 첫 번째 인수..

반응형