전체 글
-
평생 디자이너를 꿈꾸던 내가 게임 개발자가 되기로 결심한 이유PROJECTS/Programming Journal 2025. 3. 30. 22:22
나는 올해 만 25세 여성이다. 2018년에 부경대 공업디자인과에 현역으로 입학했지만, 2024년에 등록금을 내지 못해 미등록 제적이 되었다. 열악한 배경에 대학 생활은 순탄하지 않았고, 학사경고를 두 번이나 받을 정도로 적응하기 힘들었다. 지금은 삶을 다시 일으키기 위한 새로운 도전으로, 국비지원 직업학원에서 유니티 게임 개발자 과정을 수료하고 있다. 디자인과 나, 그리고 현실어릴 때부터 디자인은 내게 가장 큰 즐거움이자 삶의 목표였다. 타고난 관찰력과 표현력 덕분에 초등학교 저학년 때부터 그림을 잘 그린다는 말을 자주 들었다. 가정 형편상 미술학원을 다닐 수 없었지만, 중학교 시절부터 혼자 컴퓨터로 포토샵과 일러스트레이터를 익히며 학교 행사 포스터를 제작하면서 내 재능을 키워 나갔다. 고등학교 시절 ..
-
멘탈이 흔들릴 땐 곡을 쓰자.카테고리 없음 2025. 3. 30. 04:35
... 난 멘탈이 유리라 유의미한 감정적 사건이 일어난 후엔 꼭 곡을 쓰거나 그림을 그리곤 한다.근데 오늘만큼은 기타를 잡을 힘도 안나서 떠오른 곡 제목만 8개다(추린게 이정도)감정에 압도돼서 머릿속에 스쳐가는 이미지는 여러가지지만 몸가눌 힘도 없어서 손가락만 놀릴 뿐..그래도 한 곡이라도 짧게 후렴구라도 짜고싶은데.. 너무 바빠서 할 수 있을까 싶다ㅠ주기적으로 찾아오는 이 느낌 너무 지긋지긋하게 괴롭다지나친 음주는 사람을 추하게 만든다는 것을 명심 또 명심!
-
20250327_(7) CollectionStudy/C# 2025. 3. 28. 18:35
C#에서 컬렉션 (Collection) 이란, 동일한 형식의 데이터를 저장, 관리, 탐색, 조작할 수 있는 구조를 말한다. 컬렉션은 다양한 데이터 구조와 자료형을 유연하게 관리할 수 있도록 돕는 강력한 도구이며 목적과 사용방식에 따라 차별된 최적화 방식을 사용하므로, 적절한 상황에 적절한 컬렉션을 선택하는 것이 중요하다. 배열, 리스트, 큐, 스택, 딕셔너리 등이 컬렉션에 해당된다. 컬렉션이 필요한 이유는 다음과 같다.1. 고정 크기 배열의 한계 극복배열은 선언 시 크기가 고정되지만, 컬렉션을 활용하면 배열을 동적으로 메모리 할당을 할 수 있게된다. 2. 유연한 데이터 구조삽입, 삭제, 탐색 등의 기능을 기본적으로 제공한다. 3. 자료구조 추상화리스트, 스택, 큐, 해시테이블 등 다양한 자료구조를 제공..
-
20250327_(6) Boxing / UnboxingStudy/C# 2025. 3. 28. 14:56
박싱과 언박싱을 이해하기 위해선 값타입과 참조타입의 메모리 저장 방식부터 알아봐야한다.C#에서 값타입 (int, float, bool 등)은 스택영역에 데이터가 저장되고, 참조타입(object, string, class 등)은 힙 영역에 실제 데이터가 저장된다. (그리고 스택 영역에 힙영역에 저장되어있는 데이터의 주소를 저장함) 박싱(Boxing)과 언박싱(Unboxing)은 C#에서 값 타입과 참조 타입 간에 데이터를 변환할 때 발생하는 과정이다. 박싱과 언박싱은 겉보기엔 단순한 데이터타입 변환처럼 보이지만, 실제로는 상당한 오버헤드가 발생할 수 있는 구조로 이루어진다. C#의 유연한 타입 시스템의 이면에 숨어있는 성능의 함정으로, 무분별한 박싱과 언박싱은 성능저하와 가비지 컬렉션 오버헤드를 유발할..
-
20250327_(3) The SOLID PrinciplesStudy/C# 2025. 3. 28. 14:23
SOLID 원칙은 2000년대 초, 로버트 C. 마틴(Robert C. Martin, Uncle Bob)이 처음 정립했고, 이후 객체 지향 설계에서 사실상 표준처럼 여겨지고 있다.솔리드원칙이 객체지향에서의 핵심 개념으로 자리잡게된 이유는 코드의 유지보수성, 확장성, 안정성을 높이기 위해 만들어진 설계철학이며, 솔리드 원칙하에 프로그래밍 할 때 복잡한 시스템을 구성하더라도 변경에 강한 유연한 아키텍처를 설계할 수 있기 때문이다.S Single Responsibility Principle (단일 책임 원칙)클래스는 하나의 책임만 가져야 한다.O Open/Closed Principle (개방-폐쇄 원칙)확장에는 열려 있고, 변경에는 닫혀 있어야 한다.L Liskov Substitution Principle ..
-
20250327_(5) Coupling & CohensionStudy/C# 2025. 3. 28. 13:10
좋은 객체지향 설계의 핵심 원칙의 중심에는 객체의 결합도(Coupling)와 응집도(Cohension)라는 개념이 존재한다. 객체지향 설계에서 좋은 구조란, 클래스 간 결합도가 낮고, 각 클래스의 응집도가 높은 구조를 말한다. 즉, 결합도는 낮추고, 응집도는 높이는 방향으로 구조를 개선하면 유지보수, 확장, 테스트, 재사용이 쉬운 소프트웨어 개발이 가능하다. 1. 결합도 (Coupling)결합도는 모듈 (또는 클래스) 간의 상호 의존성 정도를 말한다. 즉, 한 클래스가 다른 클래스에 얼마나 강하게 언결되어 있는가를 나타내는 지표이다.(1) 높은 결합도 (Tight Coupling)- 한 클래스가 다른 클래스 내부 구현에 대해 많이 알고 있음- 하나의 변경이 연쇄적으로 다른 클래스에 영향을 미침- 테스트,..
-
20250327_(4) Dependency Injection, DIStudy/C# 2025. 3. 27. 18:51
의존성 주입(Dependency Injection, DI)은 객체지향 설계의 핵심 원칙으로, 객체가 필요로 하는 다른 객체를 프로그래머가 직접 생성하는 것이 아닌, 외부에서 주입 (injection) 받는 설계기법이다.즉, 객체가 사용하는 의존 객체를 new 키워드로 생성하지 않고, 외부에서 이미 생성된 인스턴스를 전달받음으로써 결합도를 낮추는 방식이다.1. 의존성 주입의 목적결합도 감소: 구체 클래스 대신 인터페이스에 의존유연성 향상: 구현을 바꿔도 클라이언트는 영향 없음테스트 용이: 테스트 시 Mock 객체 주입 가능SOLID 원칙 중 DIP(의존 역전 원칙) 실현2. 의존성 주입의 방식(1) 생성자 주입 (Constructor Injection) - 가장 일반적인 방법public interface ..
-
20250327_(2) EncapsulationStudy/C# 2025. 3. 27. 18:25
캡슐화(Encapsulation)는 객체 지향 프로그래밍(OOP)의 핵심 원칙 중 하나로, 객체의 내부 상태(필드)를 외부로부터 숨기고, 해당 상태에 대한 접근을 메서드를 통해 제한하는 것을 의미한다. C#에서는 일반적으로 private 접근 제어자를 통해 필드를 외부에서 직접 접근하지 못하게 하고, public 메서드 또는 property를 통해 간접적으로 접근할 수 있도록 구현한다. 데이터 보호 + 접근 제어 => 캡슐화 1. 캡슐화를 해야하는 이유캡슐화는 단순히 "데이터를 숨긴다"는 것을 넘어서 소프트웨어의 신뢰성과 유지보수성, 재사용성을 향상시키는 역할을 한다. 그 구체적인 이유는 다음과 같다. (1) 데이터 보호 (Data Hiding)외부에서 객체 내부 데이터를 직접 수정할 수 없도록 차단함으..