C#/수업과제
03/17 추상클래스, 인터페이스, 속성, 스택, 큐를 사용한 예제
박준희
2021. 3. 18. 01:41
Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Main");
new App();
}
}
}
App.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
public class App
{
public App()
{
Console.WriteLine("App");
Gateway gateway;
gateway= new Gateway();
Unit unit1 = new Unit("질럿1");
Unit unit2 = new Unit("질럿2");
Unit unit3 = new Unit("질럿3");
Unit unit4 = new Unit("드라군1");
Unit unit5 = new Unit("드라군2");
gateway.ProductionStandbyUnit(unit1);
gateway.ProductionStandbyUnit(unit2);
gateway.ProductionStandbyUnit(unit3);
gateway.ProductionStandbyUnit(unit4);
gateway.ProductionStandbyUnit(unit5);
int count = gateway.ProductionStandbyUnitCount();
for (int i = 0; i< count; i++)
{
Console.WriteLine("생산 대기중인 유닛 수 : " + gateway.ProductionStandbyUnitCount());
Console.WriteLine("{0}가 생산되었습니다.", gateway.Produce().Name);
}
Console.WriteLine("생산 대기중인 유닛 수 : " + gateway.ProductionStandbyUnitCount());
}
}
}
Building.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
public abstract class Building
{
public Building()
{
Console.WriteLine("건물이 생성되었습니다.");
}
}
}
Gateway.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
public class Gateway : Building, IProductionPossible
{
Queue<Unit> ProductionStandbyUnits { get; set; }
public Gateway()
{
ProductionStandbyUnits = new Queue<Unit>();
}
public Unit Produce()
{
return ProductionStandbyUnits.Dequeue();
}
public void ProductionStandbyUnit(Unit unit)
{
Console.WriteLine("{0}가 생산 대기중입니다.", unit.Name);
ProductionStandbyUnits.Enqueue(unit);
}
public int ProductionStandbyUnitCount()
{
return ProductionStandbyUnits.Count;
}
}
}
IProductionPossible.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
interface IProductionPossible
{
void ProductionStandbyUnit(Unit unit);
Unit Produce();
}
}
Unit.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Study06
{
public class Unit
{
public string Name { get; private set; }
public Unit(string name)
{
Name = name;
}
}
}