본문 바로가기

카테고리 없음

UNITY 게임개발트랙 - 내일배움캠프 67일차 TIL

내일배움캠프 67일차 TIL

오늘도 오전에 기술면접 예상질문을 풀어보고 팀 프로젝트 개발을 진행했다.

자료구조의 종류

  • 배열, 동적 배열, 리스트, 해시셋, 큐, 스택, 해시테이블, 딕셔너리 등이 있다.
  • 배열 : 순서가 있고 길이가 정해진 데이터의 집합
  • 동적 배열 : 순서가 있고 배열의 크기가 변할 수 있는 데이터의 집합
  • 리스트 : 순서가 있고 삽입 삭제가 가능한 데이터의 집합
  • 해시셋 : 순서가 없고 해시값을 쓰는 고유한 데이터의 집합
  • 큐 : 선입 선출의 데이터의 집합이고 스택은 후입 선출의 데이터의 집합
  • 해시테이블 : 해시 값을 쓰는 키 값과 그에 따른 value 값의 논 제너릭 타입의 집합
  • 딕셔너리 : 해시 값을 쓰는 키 값과 그에 따른 value 값의 제너릭 타입의 집합
  • 각 자료구조는 좋고 나쁘고 보다 차이점에 따라 다른 상황에서 사용 가능하다.

객체지향이란?

  • 프로그램의 가장 작은 단위를 객체로 만들고 객체 간의 상호작용을 통해 로직을 구현하는 방법이다.

1. 객체지향의 특징

  • 추상화 : 객체에서 공통된 속성과 행위를 추출하는 과정
  • 캡슐화 : 관련된 변수와 함수를 묶는 것
  • 상속 : 하위 클래스가 상위 클래스의 속성과 행위를 물려받는 것
  • 다형성 : 오버로딩, 오버라이딩 등을 이용해서 하나의 함수가 다양한 형태를 가질 수 있도록 하는 것

2. OOP(Object-Oriented-Programming)란?

  • 객체 지향 프로그래밍. 객체의 입장에서 프로그래밍 하는 것이다.

3. SOLID 원칙이란?

  • Single Responsibility Principle : 하나의 클래스는 단 하나의 책임만 가진다.
  • Open/Closed Principle : 소프트웨어 요소는 확장에는 열려있고 변경에는 닫혀있어야 한다.
  • Liskov Substitution Principle : 상위 타입의 객체를 하위 타입의 객체로 치환해도 상위 타입을 사용하는 프로그램은 정상적으로 동작해야 한다.
  • Interface Segregation Principle : 인터페이스 단위를 작게 만들어 클라이언트가 사용하지 않는 관련 없는 인터페이스 변경에 영향을 받지 않도록 한다.
  • Dependancy Inversion Principle : 구체화보다 추상화에 의존해야 한다.

상속이란?

  • 상속이란 객체 지향 프로그래밍의 기본적인 특성 중 하나이다. 부모 클래스의 동작을 다시 사용, 확장 또는 수정하는 자식 클래스를 정의할 수 있다. 이때 상속되는 클래스를 기본 클래스, 상속하는 클래스를 파생 클래스라고 한다. C#은 다이아몬드 문제 등 때문에 단일 상속만 지원한다.

  • 인터페이스의 경우 다중 상속이 가능하다. 인터페이스는 추상 메서드만 0개 이상 담고 있는 추상 클래스라고 봐도 무방하다.

  • 프로젝트에서 상속을 통해 전략 패턴을 구현했다. 무기 클래스를 전략 패턴으로 구현했는데, 각 무기마다 다르게 동작해야 할 부분들을 먼저 추출하여 인터페이스를 만들었다. 해당 인터페이스를 최상위 클래스로 둘 추상 클래스가 필드로 가지고 있도록 한다. 그리고 인터페이스를 상속 받아서 각자 필요에 따라 인터페이스의 메서드를 구현한 클래스들을 만들고, 각각의 무기 클래스들은 추상 클래스를 상속받고 추상 클래스의 인터페이스 멤버를 각자 알맞은 동작으로 구현한 클래스로 덮어 씌운다.