OOP로 개발을 하다보면 캡슐화가 매우 중요하다. 특히 게임개발을 하다보면 데이터 하나하나가 매우 중요한데 이런 데이터를 캡슐화하지 않게 되면 치명적인 오류를 발생시킬 수도 있다. (게임의 의도대로 진행이 안된다던지 등의 이슈) 그래서 한 클래스 내부에서 데이터를 Private 으로 설정하여 제한된 접근을 생성하며 캡슐화를 한다. 하지만 게임 로직 상 값이 수정돼야할 상황이 종종 발생하는데 이 때, Getter/Setter를 이용하여 좀 더 안전하게 값을 수정한다. protected static _language = Application.systemLanguage; // getter setter public static get Language() { if (this._language === 23) { r..
UE5를 학습하던 도중 캡슐화를 하면서 Pure 체크박스에 체크를 하여 순수함수로 만들어줬었는데, 확실하게 순수함수에 대해 짚고 넘어가고자 학습하게 되었다. 순수 함수를 검색하면 아래와 같이 나온다. - 같은 입력를 넣으면, 항상 같은 출력이 나오는 함수 - 사이드이펙트(부작용)이 없는 함수 본격적으로 학습하기 전에, 함수에 대한 기본개념을 다시 숙지하자면, 함수는 아래와 같은 목적으로 사용된다. - Mapping : 주어진 입력을 원하는 출력으로 매핑해주는 기능 - Procedures : 함수는 순차적으로 처리하도록 실행될 때가 있는데, 이를 절차형 프로그래밍 (PP) 라고 부른다. - I/O : 다른 시스템과 소통하기 위해 존재하는 함수도 있다. 만약에 여러 개의 함수가 하나의 데이터를 동시에 수정하..
객체 지향 설계 5원칙 (SOILD 원칙) SRP (Single Responsibility Principle) - 모든 클래스는 각각 하나의 책임만 가져야한다. 클래스는 그 책임을 완전히 캡슐화해야함을 말한다. (캡슐화 : 객체지향프로그래밍에서의 중요한 특징 중 하나로, 연관된 데이터와 함수를 논리적으로 묶어놓은 것이며, 데이터를 보호하기 위해 다른 객체의 접근을 제한하는 접근 제한 수식자의 기능을 제공한다. OCP (Open Closed Principle) - 확장에는 열려있고 수정에는 닫혀있는, 기존의 코드를 변경하지 않으면서(Closed), 기능을 추가할 수 있도록(Open) 설계까 되어야한다는 원칙을 말한다. LSP (Liskov Substitution Principle) - 자식 클래스는 언제나..
객체 지향 설계 원칙 총정리 응집도를 높인다 1-1. 단일 책임 원칙 하나의 클래스는 하나의 기능만 가져야 한다. 그렇지 않다면 클래스를 분리한다 분리된 클래스끼리 위계 관계가 있다면 있다면 상속한다 1-2. 인터페이스 분리 원칙 특정 클라이언트는 클래스의 특정 기능만을 사용해야 한다 따라서 특정 클라이언트를 위한 특정 인터페이스를 정의한다 그리고 특정 클라이언트는 특정 인터페이스로 객체를 선언한다 객체 생성시에 구체 클래스를 쓰거나 추상 클래스를 쓴다 결합도를 낮춘다 2-1은 2-2와 2-3의 조합 즉, 추상성과 다형성으로 성취될 수 있다 2-1. 개방 폐쇄의 원칙 변경을 최소화하고 동시에 확장이 가능한 설계를 고려한다 이를 위해서 추상성과 다형성을 활용해야 한다 이를 통해서 결합도를 낮춘다 2-2. ..
핵심 디자인 패턴 6가지 싱글톤 패턴 전략 패턴 팩토리 패턴 어댑터 패턴 프록시 패턴 옵저버 패턴 싱글톤 패턴 프로그램 실행 중에 최대 하나만 있어야 할 경우나 전역적으로 접근이 가능한 개체여야 할 경우, 어떤 클래스에서 만들 수 있는 인스턴스 수를 하나로 제한하기 위해서 사용한다. static 변수를 직접 쓰는 대신 대신 굳이 싱글톤 패턴을 쓰는 이유는 static 변수는 전역 변수에 가깝지만 싱글톤 객체는 객체지향 패러다임에 맞기 때문 싱글톤은 객체이므로 생성자로 생성 시점을 제어할 수 없다. 전략 패턴 간단히 말해서 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴입니다. 예를 들어, 기차( Tra..