게임개발 캠프 14일차

IIRU·5일 전

Interface

공통된 기능을 함수로 만들어둔 추상적인 모음.

interface IMoveable
{
	public void Move(); //만들어야하는 함수를 선언  
}
 interface IFlyable
 {
     public void Fly();   //구현해라 라는 의미. 구현하면 안됌. 
 }

클래스에 적용하려면

 class Pigeon : Animal, IFlyable
 {
     public override void Eat() { }
     public void Fly() { }
 }

상속하듯이 적용하면된다.

특이한 점으로는
클래스 상속은 두개이상 상속이 안되지만

 class Pigeon : Animal, IFlyable, IMoveable
 {
     public override void Eat() { }
     public void Move() { }
     public void Fly() { }
 }

두가지 이상도 가능하다.
또한

interface IFlyable : IMoveable
 {
     public void Fly();   //구현해라 라는 의미. 구현하면 안됌. 
 }

인터페이스에도 상속처럼 가능하다.

SOLID원칙

1. 단일 책임 원칙(SRP)

하나의 클래스는 하나의 역할만 해야한다. (이 클래스가 여러가지의 일을 하는가? 를 체크해야한다.)

2. 개방 폐쇄 원칙(OCP)

확장에는 개방 되어있고, 수정에는 닫혀있어야한다.

기능을 추가할 일이 생겼을 경우, 기본 코드는 최대한 수정하지 않아야 한다.

3. 리스코프 치환 원칙(LSP)

부모 타입 자리에 자식 객체를 넣어도 동작해야한다.

( 업캐스팅, 다운캐스팅 )

4. 인터페이스 분리 법칙(ISP)

interface IMonster //이런식으로 크게 만들지마라.
{
     public void Move();
     public void Attack();
}

위 처럼 인터페이스를 한번에 구성하지 말고, 기능별로 따로 정리해서 만들어야한다.

5. 의존 역전 원칙(DIP)

구체적 요소(객체 / 클래스)에 의존하지말고, 추상적인 것에 의존 해야한다.

public Sword sword; // 객체를 나열하는 것이 아니라
IWeapon weapon; // 인터페이스를 활용

abstract나 interface를 잘 활용하여서 추상적으로 만들어놔야 나중에 코드를 관리하기가 좋다.

profile
초보 개발자 블로그입니다!

0개의 댓글