컴퓨터

    | 니앙팽이 - 객체지향(OOP) | 4-6 | 행동패턴 - Command pattern

    📕 4. 객체지향 디자인 패턴 유니티에서 사용하면 좋을 디자인 패턴만 명시한다. 📄 5. Command Pattern 행동 패턴 1. 커맨드 패턴의 특징 함수 호출(요청)을 저장하는 객체 형태로 캡슐화 Excute와 Undo를 캡슐화 하여 관리하는데 유용한 패턴이다. Command라는 추상적인 단위로 ConcreteCommand라는 클래스를 만들 수 있고. 함수호출이란, 리시버에 의존하여 리시버의 함수를 수행한다 라는것. 함수 호출 타이밍 조절 & 로깅 커맨드를 콜렉션(Queue, Stack, List)으로 관리할 수 있다. 실행 타이밍에 순서를 둘 수 있으니 턴제 게임에도 유용하다. 굳이 그 클래스에 정의되지는 않지만. 특정한 로직을 수행하는 메소드를 외부에 정의하도록 하여 함수에 사용될 데이터와 객체..

    | 니앙팽이 - 객체지향(OOP) | 4-5 | 구조패턴 - Flyweight pattern

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴3). Flyweight Patternⓐ 특징다수의 유사객체를 사용하거나 조작할떄 유용인스턴스가 필요할 때마다 매번 생성하는것이 아닌 가능한 공유를 통해 사용함으로 메모리를 절약하는 패턴인스턴시에이트를 많이 해야할때, 공유를 통해 오브젝트를 더 가볍게, 메모리를 절약할때 사용한다.ⓑ 왜 쓰는건가?마인크래프트를 생각해보자 매~~~~~~우 많은 블럭들이 있을것이다. 이 마크에서는 텍스쳐를 플라이 웨이트방식으로 구현했다만약 스타같은 게임을 만든다할때. 유닛들은 같은 mesh, texture, maxhelth setting등등 이 유닛들이 모두 단일 오브젝트를 받아 공유..

    | 니앙팽이 - 객체지향(OOP) | 4-4 | 구조패턴 - Decorator pattern

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴2). Decorator Patternsⓐ 특징객체의 기본 기능에 추가 기능을 덧붙여 결합 & 장착할 수 있다. 1. 다수의 옷이 가진 각각의 효과를 결합 할 수 있다.즉 객체를 런타임 동안 동적으로 변화시킬수 있다.ⓑ 왜 쓰는가?기능 확장성기존 코드를 수정하지 않고도 데코레이터 패턴을 통해 행동을 확장할수 있다.동적 확장성구성과 위임을 통해서 실행중에 새로운 행동을 추가할 수 있습니다.ⓒ 구성요소Component인터페이스 또는 추상클래스가 된다.기본 기능을 정의한다.ConcreteComponent기본 기능이 되는 인스턴스가 된다. 데코가 붙을 대상Componen..

    | 니앙팽이 - 객체지향(OOP) | 4-3 | 구조패턴 - Composite pattern

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 4. 구조 패턴클래스나 객체를 조합하여 더 큰구조로 만드는 패턴1). Composite Patternⓐ 쓰는 이유?컴포지트 패턴은 앱의 핵심 모델을 트리로 나타낼 수 있는 경우에만 의미가 있다.여러 개체를 동일한 목적으로 사용하고 있으며 각 개체를 처리하는 코드가 거의 동일한 경우 컴포지트를 사용하는 것은 좋은 선택이다.칼이면 휘두루고, 총이면 방아쇠를 당기는등. 컴포지트와 각기다른 객체의 차이를 무시하고 어쨌든 공격한다는 점에서 같은 동작처럼 사용하고 싶을때. Composite should be used when clients ignore the difference between compositions of objects ..

    | 니앙팽이 - 객체지향(OOP) | 4-2 | 생성패턴 - Singleton pattern

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 3. 생성 패턴생성과 참조과정을 캡슐화 하여 객체가 생성되거나 변경되도 시스템에 영향을 크게 받지 않도록 프로그램의 유연성을 더해주는 패턴1). Singleton patternⓔ 구성요소Application : 싱글톤에 접근하는 어떠한 아~무 코드Singletion :private로 싱글톤 인스턴스가 클래스 내부에 포함된다.GetInstance() 로 싱글톤 인스턴스를 static으로 접근한다.ⓐ 특징전역적으로 접근 가능한 객체라 어디에서든지 참조할 수 있다.인스턴스가 오직 단 하나를 상성함을 보장, 불필요한 메모리 낭비를 최소화 할 수 있다 1. 인스턴스가 하나만 있다. 2. 어디서든 문을 열수있다(어디서든 접근 가능)너무..

    | 니앙팽이 - 객체지향(OOP) | 4-1 | 디자인패턴 개요

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 1. 사전 지식1). 응집도와 결합도.link : 응집도와 결합도📄 2. 디자인패턴 개요1). 디자인패턴 왜 배우나?통계적으로 발생되는 문제 23개 패턴 읽기쉽게 이해하기쉽고 수정하기쉬운 코드로 만들기 위해2). 종류 : 이것중 우리는 일부만 배운다.생성 패턴 : 5구조 패턴 : 7행위 패턴 : 113). 아키텍쳐 패턴 VS 디자인 패턴아키텍쳐 패턴 : 시스템 구조에 대한 가이드 라인모듈 & 컴포넌트를 어떻게 배치할지디자인 패턴 : 모듈의 세분화된 역활 & 보듈간의 인터페이스를 상세 구현할때 쓰는 가이드 라인참고https://korstrix.github.io/index/Index/https://github.com/Habrad..

    | 니앙팽이 - 객체지향(OOP) | 4-0 | SOLID 원칙

    📕 4. 객체지향 디자인 패턴유니티에서 사용하면 좋을 디자인 패턴만 명시한다.📄 0. SOLID Principle1). SRP (Single Responsibility Principle)ⓐ 단일 책임 원칙클만변클래스 만들때걔는 단 하나의 책임을 가져야한다클래스 변경할때걔는 단 한가지 이유가 있어야한다높은 응집력과 낮은 결합ⓒ 예시📂SRP BAD 🤪📂class BlogPost { private Author author; private string title; private string content; private DateTime date; // .. public Dictionary getData() { Dictionary ret = new Dictionary(); ret.Add("author", this..

    | 니앙팽이 - 객체지향(OOP) | Extra | 응집도 결합도

    응집도와 결합도1. 응집도모듈내부 요소들간의 연관성 척도모듈 내부의 기능적인 응집 정도를 나타냄높을 수록 좋아요 ❤️A모듈이 아닌 곳에 a 기능 들이 흩어져 있다던가 또는 A 모듈에 a 기능 외에 b, c, d 기능들도 섞여서 복잡하게 구현되어 있다면 수정하기가 힘들겠죠.2. 결합도모듈이 다른 모듈에 의존하는 정도의 척도참조대상의 참조Degree가 얼마나 되는지..낮을 수록 좋아요 ❤️결합도가 높으면 변경하고 검토해야되는 모듈 수가 많아지는 단점이 있으니, 결합도는 낮을수록 검토해야되는 소스의 수가 적어져서 코드를 수정하기가 쉬워집니다.3. 참고https://medium.com/@jang.wangsu/설계-용어-응집도와-결합도-b5e2b7b210ff

    | 니앙팽이 - 객체지향(OOP) | 3-5 | 인터페이스

    📕 3. 객체지향 상속📄 5. 인터페이스1). 인터페이스?인터페이스는 구성원이 오직 메소드만 있고 모든 메소드가 추상 메소드인 경우입니다추상메소드보다 더 심각하게..혼자서 객체도 못만들고오직 추상 메소드만 있고, 변수를 선언할 수 없다(단 상수는 선언가능)✨하지만 다중 상속이 가능!!!✨2). 특징인터페이스의 모든 멤버가 public이고, 모든 메소드는 알아서 abstract가 된다(public abstract 가 붙은것으로 처리).다중 상속이 가능인터페이스도 다형성이 가능하다.interface Idieable {public void Die();} interface Imovable {public void Move(int x, int y);} interface monster : Unit , Idieable..

    | 니앙팽이 - 객체지향(OOP) | 3-4 | 추상클래스

    📕 3. 객체지향 상속📄 4. 추상 클래스1). 추상 클래스(abstract class)?ⓐ 하나 이상의 추상 메소드를 포함하는 클래스를클래스는 클래스인데.. 추상클래스 그 자체로는 인스턴스를 만들 수 없는 미완성 클래스다.. 😶들어있는 추상 매서드도 미완성이다.(구현부가 없다)오직 상속용으로, 파생클래스 만 쓸수 있는 미완성 클래스오버라이딩하고 나서야 비로소 자식 클래스의 인스턴스를 생성할 수 있게 된다..추상 클래스는 추상 메소드를 포함하고 있다는 점을 제외하면 일반 클래스와 모든 점이 같은것이, 생성자와 멤버변수, 일반 메소드도 포함할 수 있다.ⓑ 생긴 모습추상메소드가 하나 이상 포함되거나 abstract로 정의된 경우를 말합니다.abstract class 클래스이름 { /*...*/ abstrac..