본문 바로가기
반응형

유니티 공부/C# 문법48

C# - 상태 패턴(State Pattern) 상태 패턴이란?객체 자신의 내부 상태에 따라 행위를 변경하도록 하는 패턴이다. 즉 객체의 특정 상태를 클래스로 선언하고 해당 상태에서 할 수 있는 행위들을 메소드로 정의한다. 그리고 이러한 상태클래스를 인터페이스로 캡슐화하여 클라이언트에서 인터페이스로 호출하는 방식으로 사용한다. 상태 패턴 구조 State인터페이스 : 상태를 추상화한 고수준 모듈ConcreteState : 구체적인 각각의 상태를 클래스로 표현Context : State를 이용하는 시스템, 시스템 상태를 나타내는 State 객체를 합성하여 가지고 있다. 클라이언트로부터 요청받으면 State객체에 행위 실행을 위임한다.코드 예시상태 패턴을 사용하는 경우using System;// 상태 인터페이스public interface IState{ .. 2024. 5. 7.
C# - 전략 패턴(Strategy Pattern) 디자인 패턴이란?(소프트웨어)디자인 + (공통적으로 마주치는 문제를 해결하는 방법의)패턴이다. 전략이란?특정한 목표를 수행하기 위한 행동계획이다. 예를 들어 로봇을 만든다고 해보자로봇에는 다양한 전략 기능을 넣을 수 있다. 1) 이동 전략(걷기,뛰기, 날기) 2) 온도 전략(차갑게,뜨겁게,미지근하게) 전략 패턴이란?디자인 패턴 중 하나로, 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고 사용하며, 동적으로 전략 수정이 가능한 패턴이다.  전략 패턴 구조전략 : 모든 전략 구현체제에 대한 공용 인터페이스구체적인 전략(전략 인터페이스) : 알고리즘, 행위, 동작을 객체로 정의한 구현컨텍스트 : 알고리즘을 실행해야 할 때마다 해당 알고리즘과 연결된 전략 객체의 메소드를 호출클라이언트 : 특정 전략 객체.. 2024. 5. 7.
C# - SOLID 원칙 1. 단일 책임 원칙(Single Response Principle)이름 그대로 하나의 클래스는 하나의 책임만 갖는 원칙이다.예를 들어 플레이어와 관련된 스크립트가 있다고 해보자 그러면 플레이어의 입력, 이동 관련, 각종 사운드 관련 기능 등이 있을때 아래와 같이 별도의 스크립트로 분리해야한다. 왜 이렇게 해야할까?만약 플레이어의 움직임만 수정하고 싶을 때 단일 책임 원칙을 지키고 있다면 Movement스크립트만 수정하면 되지만 원칙을 지키지 않는 경우 모든 클래스를 수정해야한다. 01 가독성스크립트에 단일 기능만 적혀있으니 많은 기능들이 포함된 경우보다 스크립트의 길이가 짧아질 것이다. 그러므로 가독성이 좋다.02 확장성하나의 기능으로만 이루어져있기 때문에 이 클래스를 상속받아 확장하기에 용이하다.03.. 2024. 5. 6.
C# - const와 readonly const const 값은 변수가 선언될 때 초기화 되며 이후에는 변경할 수 없다. 또한 자동으로 static의 특성을 갖는다. 마지막으로 const는 선언과 동시에 초기화 되어야한다. 만약에 안될 경우 컴파일 에러가 뜬다. const int pi = 3.14; readonly 초기화 이후에는 변경할 수 없지만 선언할 때 또는 클래스의 생성자에서 값을 할당할 수 있다. 자동으로 static되지 않는다. 마지막으로 변수는 선언시 초기화할 필요가 없이 생성자에서 초기화 할 수 있다. 이 변수는 런타임시 할당된다. public class Piggy { public readonly static int piggy_age; public readonly int piggy_weight; static Piggy() { .. 2024. 4. 9.
C# - 클래스(Class)와 구조체(Struct)의 차이 01 가장 큰 차이점은 상속 가능의 여부 구조체는 상속이 안된다. 그렇다면 구조체가 필요없는거 아닐까? C와 C# 간의 호환성 때문에 C#에서도 C코드를 돌릴 수 있도록 남겨둔 것이다. 02 타입 여부 구조체는 값 타입, 클래스는 참조 타입이다. 간단한 예시로 알아보자 재산이 많은 할아버지가 자손에게 재산을 상속하고 싶은데 알고보니 재산이 구조체로 선언되어있어서 재산을 상속할 수 없다. 아래와 같이 코드를 작성하면 오류가 난다. struct Father { public void fathermoney() { } } struct Son : Father { public void sonmoney() { } } class main { public static void Main() { Father father; f.. 2024. 3. 29.
C# 문법 - 값 타입(Value type)과 참조 타입(Reference type) 값 타입(Value type) 스택에 저장된다. 그러므로 힙에 객체로 할당되지 않아서 GC가 관리 하지 않고 포인터로 가리켜지도 않는다. 선언되는 즉시 메모리에 할당 따라서 생성과 동시에 값을 할당할 수도 있다. int a = 10; c#에서 값타입에는 int, 부동 소수점, double와 같은 원시 타입과 구조체 참조 타입(Reference type) 값을 별도의 메모리 공간(heap)에 저장하고 메모리의 주소를 변수명과 함께 stack에 저장한다. 참조 타입은 새로운 값을 할당하기 위해서는 new를 통해 선언을 해주어야한다. 참조 타입에는 객체, 배열, 문자열,클래스 등이 있다. 코드 예시 예를 들어서 우리집 클래스가 있다고 해보자 class myHome { void room() { } } 만약 객체.. 2024. 3. 29.
반응형