728x90

전체 글 158

[C#] 생성자, 파괴자

생성자, 파괴자클래스의 이름과 같은 함수를 만든다면, 생성자가 된다생성자는 객체가 생성될 때 호출되며 매개변수 즉 parameter가 있는 생성자도 만들 수 있다~클래스의 이름 함수는 파괴자이며, 객체가 파괴될 때 호출된다객체를 사용하는 곳이 없으면 가비지 컬렉터에 의해 자동으로 호출된다*프로그래머가 메모리를 정리하기엔 복잡하기에 가비지 컬렉터가 안쓰는 메모리를 자동으로 정리해줌 using System.Collections;using System.Collections.Generic;using UnityEngine;public class Practice4 : MonoBehaviour{ class 동물 { int 나이; public 동물() { ..

공부/Unity 2025.05.22

[C#] 객체 지향 추상화, 상속성, 다형성

이전 내용:https://dani2344.tistory.com/142 [C#] OOP 객체 지향, 4대 특징 중 캡슐화와 프로퍼티객체 지향 프로그래밍 OOP객체: 속성과 동작객체 지향 프로그래밍(Object-Oriented Programming): 객체 위주로 프로그래밍 하는 것 절차적 프로그래밍: 기능 구현에 초점, 함수를 역할별로 나누어 개발데dani2344.tistory.com*키워드*캡슐화: class은닉화: 접근 지정자 (private)상속: 콜론(:), extends다형성: override추상화: abstract, interface 객체 지향의 4대 특징캡슐화 (Encapsulation) 추상화 (Abstraction)객체간의 공통점을 뽑아 추상화 객체로 만듦추상화가 잘 될 수록 공통점이 모여..

공부/C# 2025.05.22

[C#] OOP 객체 지향, 4대 특징 중 캡슐화와 프로퍼티

객체 지향 프로그래밍 OOP객체: 속성과 동작객체 지향 프로그래밍(Object-Oriented Programming): 객체 위주로 프로그래밍 하는 것 절차적 프로그래밍: 기능 구현에 초점, 함수를 역할별로 나누어 개발데이터 접근이 쉬움문제점) 이곳 저곳에서 데이터에 접근해 유지보수가 어려움문제점) 스케일이 커지며 관리가 어려워짐 객체 지향 프로그래밍: 객체를 역할별로 나누어 개발클래스가 데이터를 보호해 데이터 접근이 어려움스케일이 커져도 관리가 쉬움문제점) 제한적으로 데이터에 접근시키려 객체화로 설계하는 부분이 비교적 어려움 객체화: 속성과 동작을 정의클래스: 객체화 시킨 개념을 프로그래밍하기 위한 정의서, 각 칼럼에 적당한 데이터 타입과 제한 접근을 지정인스턴스: 생성된 객체객체 지향의 4대 특징 ..

공부/C# 2025.05.22

[Unity] 명명규칙 (파스칼 케이스 / 카멜 케이스), print vs Debug.Log

파스칼 케이스 (Pascal Case)스크립트, 클래스, 파일 등의 이름에는 파스칼 케이스를 사용 파스칼 케이스: 단어를 연결하는 방식으로 이름을 짓고, 새로운 단어의 첫 글자는 대문자로 쓰는 명명 규칙ex) CalculateCurrentHealth 카멜 케이스 (Camel Case)변수, 함수 등의 이름에는 카멜 케이스를 사용 카멜 케이스: 파스칼 케이스와 비슷하지만 첫 글자는 소문자로 작성하는 명명 규칙ex) isPlayerDieprint vs Debug.Log 둘 다 Unity 에디터의 Console 창에 출력print에서 내부적으로 Debug.Log를 호출한다고 한다 하지만 print는 class가 Monobehaviour이라는 class를 상속받을때만 사용이 가능하지만, Debug.Log는 상속..

공부/Unity 2025.05.22

[C#] 합이 n이 되는 순열 구하기 (백트래킹 DFS)

*개선할 점귀찮아서 list.Contains 썼지만 그러면 매번 내장함수로 O(n) 탐색이 일어나 bool[] visited를 따로 만들어서 확인해도 됨코드에서는 1~4까지 조건에 맞춰 상수를 넣었지만, 필요시 4에 해당되는 부분을 변수로 빼기using System;using System.Collections.Generic;public class Program{ static int count = 0, n = 4; public static void Main(){ List patterns = new List(); Find(patterns, 0); } static void Find(List patterns, int sum){ if(sum >= n) { if (sum == n){ Console...

공부/C# 2025.05.21

파동 함수 붕괴 알고리즘 (Wave Function Collapse)

스도쿠의 풀이 방법과 비슷하게 생각소규모 맵을 기반으로 대규모 맵을 생성 / 특수 조건이 있는 타일로 맵을 생성할 때 주로 사용 https://bolddunkley.itch.io/wfc-mixed Wave Function Collapse - Mixed Initiative Demo by Martin DonaldDemo of a mixed initiative WFC implementation.bolddunkley.itch.io위에 링크를 들어가보고 해보면 감이온다 들어가면 나오는 화면인데, 노란 네모가 한 구역이다.저 안에서 16가지 경우중 하나를 선택하면 그 구역때문에 주변에 올 수 없는 경우의 수가 없어진다기둥 머리 부분을 고르니, 그 아래있는 구역은 기둥을 잇기 위해 기둥만 선택이 가능하고 주위에도 불..

공부 2025.05.21

[C#] 함수, 클래스 (+소수 둘째자리까지 출력)

StackOverFlow (스택 오버플로우)?메모리는 크게 힙 / 스택으로 구성함수 호출은 스택 영역을 사용함수 호출시 스택 메모리에 쌓이고, 함수 종료시 스택 메모리에서 빠진다하지만 재귀호출이 계속 반복되면 스택 메모리에 계속 쌓이고,사용 가능한 스택 범위를 넘어서면 스택 오버플로우가 발생한다.따라서 꼭 종료 조건을 추가할 것클래스복합 데이터: 여러 데이터를 하나로 묶어둔 것 (class, struct, record 등 가능)멤버 변수: 클래스에 포함된 변수접근 제한 수준 지정 가능- public: 누구나 접근 가능- protected: 파생클래스까지 접근 가능- private: 소유자만 접근 가능 프로필을 저장하기 위해 무조건 new로 신규 프로필 생성각 멤버변수에 접근하려면 . 점을 찍어 접근 생..

공부/C# 2025.05.21

[C#] 배열

배열배열.Length로 길이 접근 가능 int[] a = new int[5];-> 배열 길이만큼 메모리에 연속되게 공간을 만듦d={60, 70, 80, 90, 100}; -> 컴파일 오류데이터 목록은 배열 선언시에만 가능new를 같이 사용시 배열을 생성한 뒤 다시 할당이 가능 type[] 으로 선언할 때의 초기값int[] -> 0double[] -> 0bool[] -> falsechar[] -> '/0' 다차원 배열[,] : 고정 길이 배열[][]: 가변 길이 배열왼쪽의 고정 길이 배열의 경우array.GetLength(0): 4array.GetLength(1): 3* array.Length -> 12 (전체 개수가 나온다) 오른쪽의 가변 길이 배열의 경우array.GetLength(0): 4array...

공부/C# 2025.05.20
728x90
반응형