TIL11. 4/29 인터페이스, C# 팀프로젝트

김진영·2024년 4월 29일

스파르타코딩

목록 보기
10/39
post-thumbnail
  1. 인터페이스
  2. 팀프로젝트

1) 인터페이스

팀프로젝트의 기능들을 구현하기전에 팀프로젝트 주이자 c#심화 주 이기 때문에 아직 강의를 다 못들은 팀원분들이 있어서 (나포함) 오늘은 우선 심화로 들어가는 인터페이스부터 강의를 들었다.
우선 인터페이스란?

  1. 코드의 재사용성:
    인터페이스를 사용하면 다른 클래스에서 해당 인터페이스를 구현하여 동일한 기능을 공유할 수 있습니다. 인터페이스를 통해 다양한 클래스가 동일한 동작을 수행할 수 있으므로 코드의 재사용성이 향상됩니다.
  2. 다중 상속 제공:
    C#에서는 클래스는 단일 상속만을 지원하지만, 인터페이스는 다중 상속을 지원합니다. 클래스가 여러 인터페이스를 구현함으로써 여러 개의 기능을 조합할 수 있습니다. 다중 상속을 통해 클래스는 더 다양한 동작을 수행할 수 있습니다.
  3. 유연한 설계:
    인터페이스를 사용하면 클래스와 인터페이스 간에 느슨한 결합을 형성할 수 있습니다. 클래스는 인터페이스를 구현하기만 하면 되므로, 클래스의 내부 구현에 대한 변경 없이 인터페이스의 동작을 변경하거나 새로운 인터페이스를 추가할 수 있습니다. 이는 유연하고 확장 가능한 소프트웨어 설계를 가능하게 합니다.

이 처럼 클래스는 다중 상속을 지원하지 않지만 인터페이스는 다중 상속을 제공한다.
특징들로는

  • 인터페이스란 클래스가 구현해야 하는 멤버들을 정의하는 것입니다.
  • 인터페이스는 클래스의 일종이 아니며, 클래스에 대한 제약 조건을 명시하는 것입니다.
  • 클래스가 인터페이스를 구현할 경우, 모든 인터페이스 멤버를 구현해야 합니다.
  • 인터페이스는 다중 상속을 지원합니다.

이런 식으로 되어있다.

interface IMyInterface
{
    void Method1();
    int Method2(string str);
}

인터페이스 및 멤버 정의하기이다. 인터페이스의 특징은 클래스가 인터페이스를 구현할 경우에 인터페이스에 들어있는 메서드를 구현하지 않으면 사용할 수 없다.

public class Player : IMovable
{
    public void Move(int x, int y)
    {
        // 플레이어의 이동 구현
    }
}

public class Enemy : IMovable
{
    public void Move(int x, int y)
    {
        // 적의 이동 구현
    }
}

IMovable movableObject1 = new Player();
IMovable movableObject2 = new Enemy();

movableObject1.Move(5, 0); // 플레이어 이동
movableObject2.Move(1, 9); // 적 이동

이런식으로 같은 메서드를 넣었지만 다른 값을 넣어서 다르게 구현할 수 있다.

이 강의들으면서 생각에 들었던 것이 이번 팀프로젝트가 저번주에 텍스트게임 만든 것을 좀더 보완하여 던전도 만들고 저장도 만들고 이것저것 있는데, 거기에 몬스터라는 인터페이스를 만들면 잘 사용할 수 있겠다고 생각했다. 왜냐하면 몬스터들도 각각 체력, 공격력, 방어력, 레벨들이 다르기 때문에 인터페이스를 사용하여 몬스터들을 정의해주는게 괜찮을 것 같다고 생각이 들었다.

2. 팀프로젝트 시작

이번 주부터 다시 팀프로젝트가 시작되었다. 저번 주에 개인 과제로 했던 텍스트게임에서 조금 더 여러가지 기능을 추가해서 만드는 것이 이번 프로젝트의 과제이다. 주마다 팀원이 바뀐다고 들어서 이번주에 프로젝트시작과 함께 팀이 바뀔줄 알았으나 바뀌지않았다. 구현해야 할 기능들이 좀 많았는데 다음 주 화요일까지 좀 더 열심히 공부를 해야할 것 같다. 아직 부족한 점이 산더미이다.

0개의 댓글