250131 TIL

박소희·2025년 1월 31일

Unity_7기

목록 보기
17/94
3주차 강의

캡슐화: 관련된 데이터와 기능을 하나의 단위로 묶는 것 -> 정보 은닉, 외부에서 직접적인 접근 제한

상속: 기존의 클래스를 확장하여 새로운 클래스 만드는 메커니즘. 코드의 구조화와 유지보수 용이

다형성: 하나의 메서드 이름이 다양한 객체에서 다르게 동작할 수 있도록 하는 것

추상화: 복잡한 시스템이나 개념을 단순화하여 기능에 집중

구조체: 값 형식이며, 스택에 할당되고 복사될 때 값이 복사된다.

클래스: 참조 형식이며, 힙에 할당되고 참조로 전달되므로 성능 측면에서 차이가 있다. 더 복잡한 객체를 표현하고 다양한 기능을 제공하기 위해 사용

프로퍼티: 클래스 멤버, 객체의 필드 값을 읽거나 설정하는데 사용되는 접근자 메서드 조합

  • 간접적으로 값을 설정하거나 읽을 수 있도록 한다.
public string Name
{
	get { return name; }
    set {name = value; }
}
  • 자동 프로퍼티
public string Name { get; set; }

C#은 다중상속을 지원하지 않는다.

오버로딩: 동일한 메서드지만 매개변수의 개수, 타입 또는 순서가 다른 여러 개의 메서드를 정의하는 것.

제너릭: 클래스나 메서드를 일반화시켜 다양한 자료형에 대응할 수 있는 기능

  • 자료형은 선언 시점이 아닌 사용 시점에 결정

out: 메서드에서 반환 값을 매개변수로 전달하는 경우에 사용

  • 메서드 내에서 반드시 값을 할당해야 한다.
  • out 매개변수를 전달할 때 해당 변수의 이전 값이 유지되지 않음.

ref: 메서드에서 매개변수를 수정하여 원래 값에 영향을 주는 경우에 사용

과제

Last(): 리스트의 마지막 요소 반환

Console.ReadKey(): 사용자로부터 키보드 입력을 받아온다.

  • ConsoleKeyInfo 객체 반환.
  • Console.ReadKey(true): 사용자의 입력을 처리할 때 키 입력이 표시되는 것 방지

실행하자마자 바로 break

 public Snake(Point point, int length, Direction direction)
 {
     snake = new List<Point>();
     this.direction = direction;
     for(int i = 0; i < length; i++)
     {
         Point p = new Point(point.x-i , point.y, point.sym);
         snake.Add(p);
         point.x++;
     }
 }
  • Snake 생성자에서 몸을 생성하는 부분에서 point.x++를 넣지 않아서 충돌판정으로 바로 종료됨
  • 반복문으로 point.x은 계속 감소하는데 새로운 Point를 계속 생성해서 오류가 났다.
C# 체크리스트 <변수와 자료형>

메모리 저장 원리

  • 메모리는 각 칸마다 고유 주소 존재 -> 특정 주소에 값 저장, 주소에 대응되는 이름 필요(변수)
  • 변수를 만들면 메모리 저장 공간이 생기고, 그 공간에 값을 저장한다.

자료형 값의 범위를 넘어가면 0으로 표시된다.

개인 과제

list.Contains(값): 특정 값이 리스트 안에 있는 지 찾기

이미 인벤토리에 가지고 있는 아이템과 상점에 있는 아이템이 같은 아이템일 때 구별을 못한다.
-> Contains 대신 이름으로 비교하는 식으로 수정했다.

  • bool isOwned = player.inventory.Any(i => i.name == item.name);

0개의 댓글