비트를 쪼개는 개발자

allen321@naver.com

분류 전체보기 82

C# - 인터페이스(Interface)

인터페이스 란(Interface)?   인터페이스는 언뜻 보면 클래스와 상당히 유사해 보이지만 인터페이스 내부에서는 구현이 불가능하다.   메서드나 속성의 선언 및 정의는 가능하지만 멤버들에 대한 구현은 이를 제공하는 클래스 및 구조체에서 행해야 한다. 인터페이스의 특징들은 다음과 같다.     인터페이스의 특징  오직 메서드와 속성의 선언만 가능하다. 각 속성들의 실제 구현은 상속받은 클래스가 인터페이스의 정의된 모든 속성을 구현해야 한다. 다중 상속이 가능하다. 따라서 한 클래스가 여러 인터페이스를 구현할 수 있다. 다양한 클래스에서 동일한 인터페이스를 사용한다면 메서드와 속성을 일관화 할 수 있어 코드의 일관성이 보장된다. 추상화에 용이하다, 즉 인터페이스를 통하기 때문에 세부적인 클래스의 구현을 ..

C# 2024.07.19

게임수학 - 벡터

벡터란 ?   벡터는 물리학과 수학에서 자주 사용하는 용어이다. 벡터는 "크기"와 "방향", 두가지를 가지는 양을 의미한다. (바람의 세기, 플레이어의 이동 방향과 속도 등) 차원에 따라 벡터는 다르게 정의된다.   벡터의 특징  벡터간에는 덧셈과 뺄셈이 가능하다.void Start(){ Vector3 a = new Vector3(3, 4, 0); Vector3 b = new Vector3(-2, 2, 0); Vector3 r1 = a + b; Vector3 r2 = a - b; Debug.Log("r1 : " + r1); Debug.Log("r2 : " + r2);}        Magnitude(벡터의 크기)와 distance(벡터간의 거리) 는 벡터를 뺄셈하거나 피타고라스 정리를 이용해 빗변의 길이..

게임수학 2024.07.16

게임수학 - 삼각함수

삼각비와 삼각함수  삼각비란? 직각삼각형에서 각도와 변의 길이 사이의 관계를 나타내는 말. 삼각비는 사인(sin), 코사인(cos), 탄젠트(tan)의 세 가지 기본적인 함수(삼각함수)로 표현함. 값을 모르는 특정 각을 표현함(각도)를 "세타(θ)" 로 표현함   삼각함수란?  삼각함수는 각도와 관련된 함수로, 주로 직각삼각형의 변의 비율을 설명하는 데 사용함. 특정 값을 입력하면 삼각비의 결과를 반환하는 함수라고 볼 수 있음.   사인 (sin): 직각삼각형에서 주어진 각 θ를 반대변의 길이를 빗변의 길이로 나눈 비율 (높이 / 빗변)​코사인 (cos): 직각삼각형에서 주어진 각 θ의 인접변의 길이를 빗변의 길이로 나눈 비율 (밑변 / 빗변)​탄젠트 (tan): 직각삼각형에서 주어진 각 θ의 반대변의 ..

게임수학 2024.07.15

C# - 라이브러리 vs 프레임워크

프레임워크(Framework) 란?    프레임워크는 말 그대로 개발자가 코드를 개발하는데에 있어서 시간을 단축하기 위해 미리 만들어 놓은 뼈대나 구조와 같이 코드나 클래스를 모아둔 프레임을 이용하고 이를 사용하는 것이다. 프레임워크는 대부분 개발자가 따라야 하는 가이드를 제공하고 일관된 개발 패턴을 유지시킨다. 미리 만들어 둔 프레임워크를 사용하면 특정 부분만 개발자가 원하는 대로 채워 사용하기 때문에 코드의 재사용성이 늘어나고 개발 시간이 크게 줄어든다는 장점이 있다. 유지 보수가 용이하지만 프레임워크에 너무 의존한다면 해당 기능 개발에 있어서 스스로 개발하는데 어려워지기도 한다. C#에서의 사용하는 프레임워크의 예시로는 .Net FrameWork, .NET Core 등이 있다.   라이브러리(Lib..

C# 2024.07.11

C# - Struct 와 Class의 차이점

구조체란?  우선 프로그래밍 언어에서는 변수를 선언할때 이 변수를 담아두는 그릇인 자료형을 먼저 선언하게 된다. 이 변수들을 한 곳에 모아놓고 싶을 때 같은 자료형의 변수라면 배열로 선언할 수 있겠지만 나중에 해당 변수들을 쉽게 가져오거나 혹시나 다른 자료형을 가진 변수들도 모아 놓고 싶다면 코드 관리가 점점 어려워진다.    구조체는 이러한 점을 해결하기 위해 초기 기존의 C 언어에서 만들어진 기능이다. 구조체는 데이터, 즉 하나 이상의 변수들을 모아놓고 새로운 자료형을 정의하는 도구로써 작동한다.  키워드로는 struct를 사용하여 선언해주며 내부에는 원하는 자료형을 자유롭게 사용하여 선언해 주면 된다.   struct의 데이터는 값 타입(call by Value)으로 저장되며 스택 메모리에 할당된다..

C# 2024.06.21

C# - 스레드(Thread)

스레드(Thread) 란?   운영체제가 CPU에 시간을 할당하는 기본 단위이다. (운영체제가 CPU에 일을 시키는 최소 단위) 스레드를 설명하기 위해서는 먼저 운영체제와 프로세스가 무엇인지 알아야 한다.    운영체제  컴퓨터의 하드웨어와 소프트웨어 자원을 관리하고 컴퓨터 프로그램의 실행을 제어하는 시스템 소프트웨어다. 프로세스 관리, 메모리 관리, 파일 시스템 관리, 접근 제어 등의 업무를 담당한다. 리눅스, 윈도우, ios등이 있다.  프로세스 운영체제가 자원을 할당시키고 관리하는 기본 단위이다. 프로그램이 메모리에 로드되어 실행되는 상태이다. 운영체제 안에서 돌아가는 프로그램을 담당한다고 생각하면 된다. 프로그램 상태, 코드, 제어 블록, 메모리 등으로 구성되어 있다. 프로세스는 반드시 하나 이상..

C# 2024.06.18

C# - 동기와 비동기 (Synchronous/Asynchronous)

코드를 동기적으로 작동시키는 것과 비동기적으로 작동시키는 것은 리소스 최적화와 관련해서 매우 중요하다. 특별한 지시가 없다면 C#은 코드를 동기적으로 작동시키며 동기적이라는 것은 명령문을 순차적으로, 즉 하나의 작업이 완료되지 않았다면 다음 작업을 실행하지 않는다.    동기 (Synchronous)  동기적으로 코드를 실행하는것은 다음 키워드들로 설명할 수 있다.  단일 흐름: 작업이 완료될 때까지 현재 쓰레드가 다른 일을 하지 못하고 기다려야 한다. 차단(Blocking): 작업이 완료될 때까지 호출한 쓰레드*가 차단된다. 단순성: 구현이 상대적으로 단순하며, 코드의 흐름이 직관적이고 읽기 쉽습니다.  쓰레드*란? : 프로세스 내에서 실행되는 작은 실행 단위이다. 쓰레드가 차단된다는 것은 어떤 작업이..

C# 2024.06.13

C# - System / Collections / Generic Collection

C#으로 코딩할 때 맨 상단에 위치하는 using ~~~ 지시문은 해당 네임스페이스를 가져와서 사용하겠다는 의미로 사용한다.   내가 별도로 만든 프로젝트 파일의 네임스페이스를 가져와서 사용하기도 하지만 C#에서 자체적으로 지원하는 .NET의 기본 네임스페이스를 보통 많이 사용한다.  System using System; 지시문을 사용해 선언한다. ms 공식 문서에는 using System에 포함된 수많은 클래스가 나와있다. (https://learn.microsoft.com/ko-kr/dotnet/api/system?view=net-8.0) using System 내에서 범용적으로 사용하는 클래스나 네임스페이스는 다음과 같다.  System.Console: 콘솔 입출력에 사용되는 클래스.System.S..

C# 2024.06.11