티스토리 뷰
오늘은 아래의 내용들과 여러 클래스를 활용해 TextRPG 구현을 했다
과제는 수업시간에 구현한 TextRPG를 상속을 이용해 코드를 리팩토링 하는 거였는데 생각보다 시간이 걸렸다
💻 C#
Namespace
using MyNamespace;
namespace MyNamespace
{
class MyClass
{
public void SayHello()
{
Console.WriteLine("Hello from MyNamespace!");
}
}
}
namespace study32
{
class Program
{
static void Main(string[] args)
{
var obj = new MyClass();
obj.SayHello();
}
}
}
추상 클래스 Abstract Class
abstract class Animal
{
public abstract void MakeSound(); // 추상 메서드 (강제 구현)
public void Sleep() // 일반 메서드
{
Console.WriteLine("동물이 잠을 잡니다.");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("멍멍!");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("야옹!");
}
}
var dog = new Dog();
dog.MakeSound();
dog.Sleep();
var cat = new Cat();
cat.MakeSound();
cat.Sleep();
- 공통된 기본 동작을 제공하고, 특정 기능은 하위 클래스에서 구현하도록 강제하고 싶을 때
- 일반적인 속성(필드)과 메서드를 가지면서도, 일부 메서드는 반드시 구현되도록 강제하고 싶을 때
- 인터페이스보다 더 강한 관계를 표현하고 싶을 때 (추상 클래스는 상속 관계, 인터페이스는 구현 관계)
Interface 인터페이스
interface IAnimal
{
void MakeSound();
}
class Dog : IAnimal
{
public void MakeSound()
{
Console.WriteLine("멍멍!");
}
}
public class Cat : IAnimal
{
public void MakeSound()
{
Console.WriteLine("야옹!");
}
}
var dog = new Dog();
var cat = new Cat();
dog.MakeSound(); // 멍멍!
cat.MakeSound(); // 야옹!
- 클래스나 구조체가 구현해야하는 메서드, 속성을 정의하는 추상적인 형식
- 구현이 없는 추상 메서드들의 집합으로 클래스나 구조체에서 구현해야 한다
- 다중 상속처럼 다중 구현이 가능하
추상 클래스 v 인터페이스
사용 경우 | 추상 클래스 (abstract class) | 인터페이스 (interface) |
"is-a" 관계 (상속) | ✅ 적합 (예: Dog is an Animal) | ❌ 부적합 |
"can-do" 관계 (행동) | ❌ 부적합 | ✅ 적합 (예: Bird can Fly) |
기본 구현 제공 필요 | ✅ 일반 메서드 포함 가능 | ❌ (C# 8.0 이상에서 default 메서드 지원) |
필드(변수) 포함 필요 | ✅ 가능 (protected, private 필드 가능) | ❌ 불가능 |
다중 상속 필요 | ❌ 불가능 | ✅ 다중 인터페이스 구현 가능 |
📝 과제
TextRPG 리팩토링
https://github.com/yh97yhyh/likelion-csharp-study/tree/main/TextRPGRefact
'Unity > 멋쟁이사자처럼' 카테고리의 다른 글
멋쟁이 사자처럼 부트캠프 유니티 게임 개발 4기 12일차 회고 (0) | 2025.03.11 |
---|---|
멋쟁이 사자처럼 부트캠프 유니티 게임 개발 4기 11일차 회고 (0) | 2025.03.07 |
멋쟁이 사자처럼 부트캠프 유니티 게임 개발 4기 9일차 회고 (0) | 2025.03.07 |
멋쟁이 사자처럼 부트캠프 유니티 게임 개발 4기 8일차 회고 (0) | 2025.03.07 |
멋쟁이 사자처럼 부트캠프 유니티 게임 개발 4기 7일차 회고 (0) | 2025.03.07 |