목록기타 개발 지식 (10)
개발하는 리프터 꽃게맨입니다.
개요 팩토리 패턴은 객체를 생성하기 위한 디자인 패턴으로, 이러한 종류의 디자인 패턴을 생성 패턴이라고 합니다. 말 그대로, 객체를 생성하는 역할을 담당하고 있는 클래스, 함수를 만든다라고 보시면 되겠습니다. C++ 코딩에서는 메모리 관리를 개발자 스스로 해야하기 때문에, 객체의 생성을 아무데서나 하기는 부담스럽습니다. 더하여, 생성자를 여기저기서 호출할 경우 유지보수에도 별로 좋은 코드는 아니죠. 그래서 생성만을 담당하는 팩토리 객체를 만들면 누가 언제 어디서 객체를 생성하는지 알 수 있고 관리도 쉬워집니다. 팩토리 패턴에는 팩토리 메서드 패턴, 가상 팩토리 패턴이 있습니다. 이번 포스팅에서는 팩토리 메서드 패턴만 다루도록 하겠습니다. 팩토리 메서드 패턴 1) 개요 팩토리 메서브 패턴은 부모 클래스에서..
이때까지 객체 지향 프로그래밍만 해왔지만 정확히 객체 지향 프로그래밍은 ~야 라고 말하기는 힘든 것 같다. 그래서 이번 포스팅으로 간결하게 정리하고자 한다. 1. 객체 지향 프로그래밍이란? 단순히 데이터와 로직에 의해 프로그램이 진행되는 것이 아니라, 상태와 기능을 가지는 '객체' 라는 단위로 추상화하여 객체들 끼리의 상호작용으로 프로그램을 설계하는 방식을 뜻합니다. 2. 객체란 무엇인가? 서로 연관된 변수와 메소드를 묶어서 관리할 수 있는 것을 객체라고 정의할 수 있습니다. 3. 객체 지향의 특징은 무엇인가? 객체 지향의 특징은 크게 추상화, 캡슐화, 상속성, 다형성의 특징을 가집니다. 1) 추상화 불필요한 정보는 숨기고 중요한 정보만들 표현함으로써 핵심적인 개념과 기능을 간추려 내는 것을 뜻합니다. ..
디자인 패턴이란? 처음에 프로그래밍에 입문했을 때 이런 말을 들었습니다. '좋은 코딩 습관을 들여라' 여기서 좋은 코딩 습관이란 사람마다 생각이 다 다르겠지만, 저는 가독성이 좋은 코드를 작성하는 것이 좋은 코딩 습관이라고 생각합니다. 버그나 오류가 많은 것도 나쁜 코드겠지만, 성능이 좋다고 하더라도 나만 알아보거나 나조차도 못 알아보는 코드는 아무래도 좋은 코드가 아니겠죠. 그러나 작은 규모의 프로그램을 작성해도 설계를 할 때 있어서 실수나 문제를 피하기는 어렵습니다. 프로그램 설계에 있어 자주 발생하는 문제를 피하고, 좋은 코드를 지향하기 위해서 만들어진 설계 패턴이 디자인 패턴입니다. 컴퓨터 과학은 수십년간 발전을 이뤄왔기 때문에 내가 겪은 문제를 다른 사람이 겪지 않았을 확률은 매우 낮습니다. 그..
const라는 수식어는 Constant에서 따온 것으로 수학적으로 '상수'라고 부르며 '변하지 않는 값'을 뜻합니다. 항상 변할수 있는 값인 '변수'와는 반대 개념이죠. 처음에는 '상수'라는 개념을 어디에 사용하는지 궁금했으나, 대부분 상수의 능력은 프로그램이 어느 정도 커졌을 때 빛을 발합니다. 간단하게 상수가 사용되는 예시를 보여드리겠습니다. 1. 하드 코딩 방지 하드 코딩이란 데이터를 코드 내부에 직접 입력하는 것을 뜻합니다. int main() { int arr[100]; for (int i = 0; i < 100; i++) arr[i] = 0; } 위 코드는 전혀 이상한 코드가 아닙니다. 근데, for문의 '조건 블럭'을 보면 그냥 직접 100이라고 코딩해 두었죠. 만약, 배열의 사이즈가 50으..
📕 개요 RAII는 C++ 에서 메모리 누수를 막기위해 탄생한 '디자인 패턴'입니다. Resource Acquisition Is Initialization 줄여서 RAII라고 부릅니다. '자원의 할당은 객체 초기화시, 자원의 반환은 객체 소멸시한다.' 라는 원칙이라고 이해하시면 되겠습니다. 자원의 할당은 생성자에서 보장해주고 자원의 반환은 소멸자에서 보장해주는 것이죠. C++에서 '힙(heap)' 메모리를 사용하고자 할 때, 우리는 직접 자원을 할당하고 직접 해제해야 합니다. //힙 메모리를 할당 int* number = new int; //number 포인터가 가리키는 힙 메모리 할당 해제 delete number; 그런데 조금 큰 프로그램을 개발하는 과정에서 필히 발생하는 것이 '메모리 누수' 문제죠..