- Gun이라는 클래스와 Projectile이라는 클래스를 만들겠습니다. 그리고 Projectile 클래스를 상속받는 Bullet클래스와 Grenade 클래스를 만듭니다.
- Grenade와 Bullet클래스에는 각각 필드로 int _damage 하나만 담아 둡니다.
- Gun 클래스에서 Bullet들을 담을 수 있는 List, Grenade들을 담을 수 있는 List, 총 두개의 리스트를 필드로 가지게 합니다.
- Gun의 생성자를 만들어서 해당 두 자료구조들을 뉴할당 시켜줍니다.
- Gun의 필드에 자료구조를 하나 더 추가합니다. 방금 만들어진 두 자료구조(Bullet을 담는 리스트, Grenade를 담는 리스트) 를 value값으로 관리할 수 있는 딕셔너리를 만듭니다. 키값으로는 string을 사용합니다. 이를 구현하기 위해 필요한 기존 코드 리팩토링을 진행합니다
- 방금 만들어진 딕셔너리를 Gun의 생성자에서 뉴할당 하고, Bullet을 담은 List와 Grenade를 담은 List 둘을 각각 "Bullet", "Grenade" 이라는 키값으로 저장시켜주시기 바랍니다.
Gun에 메소드를 하나 더 추가하겠습니다. "Bullet" 이라는 인자값을 넘겨주면 총알이 담긴 리스트를 반환 받고, "Grenade"라는 인자값을 넘겨주면 수류탄이 담긴 리스트를 반환 받는 메소드를 작성하여 주세요
using ConsoleApp2;
using System;
using System.Collections.Generic;
using System.Xml.Linq;
namespace ConsoleApp2
{
class Gun
{
public Dictionary<string, List<Projectile>> gunDict;
public List<Projectile> listBullet;
public List<Projectile> listGrenade;
public Gun()
{
gunDict = new Dictionary<string, List<Projectile>>();
listBullet = new List<Projectile>();
listGrenade = new List<Projectile>();
gunDict.Add("총알",listBullet);
gunDict.Add("수류탄", listGrenade);
}
public List<Projectile> A(string stringInput)
{
if (gunDict[stringInput] != null)
{
return gunDict[stringInput];
}
else
{
return null;
}
}
// result
}
//발사체
class Projectile
{
}
class Bullet : Projectile
// 총알
{
public string _name;
public int _damage;
}
// 수류탄
class Grenade : Projectile
{
public string _name;
public int _damage;
}
internal class Program
{
static void Main(string[] args)
{
Gun bulletDic = new Gun();
bulletDic.A("총알");
}
}
}