using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study06
{
    class App
    {
        public App()
        {
            Carrier carrier = new Carrier();

            Console.WriteLine();

            carrier.Att();

            Console.WriteLine();

            carrier.BuildInterceptor();
            carrier.BuildInterceptor();

            Console.WriteLine();

            carrier.Att();

            Console.WriteLine();

            carrier.BuildInterceptor();
            carrier.BuildInterceptor();
            carrier.BuildInterceptor();

            Console.WriteLine();

            carrier.BuildInterceptor();
            carrier.BuildInterceptor();
            carrier.BuildInterceptor();

            Console.WriteLine();

            carrier.Att();

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study06
{
    class Carrier
    {
        public int countInterceptor;
        public Interceptor interceptor1;
        public Interceptor interceptor2;
        public Interceptor interceptor3;
        public Interceptor interceptor4;
        public Interceptor interceptor5;


        public Carrier()
        {
            Console.WriteLine("캐리어가 생성되었습니다.");            
        }

        public Interceptor BuildInterceptor()
        {
            countInterceptor++;
            Interceptor recentInterceptor;

            if (countInterceptor == 1)
            {
                Interceptor interceptor1 = new Interceptor("인터셉터1", 5);
                recentInterceptor = interceptor1;
                this.interceptor1 = interceptor1;
            }
            else if (countInterceptor == 2)
            {
                Interceptor interceptor2 = new Interceptor("인터셉터2", 5);
                recentInterceptor = interceptor2;
                this.interceptor2 = interceptor2;
            }
            else if (countInterceptor == 3)
            {
                Interceptor interceptor3 = new Interceptor("인터셉터3", 5);
                recentInterceptor = interceptor3;
                this.interceptor3 = interceptor3;
            }
            else if (countInterceptor == 4)
            {
                Interceptor interceptor4 = new Interceptor("인터셉터4", 5);
                recentInterceptor = interceptor4;
                this.interceptor4 = interceptor4;
            }
            else if (countInterceptor == 5)
            {
                Interceptor interceptor5 = new Interceptor("인터셉터5", 5);
                recentInterceptor = interceptor5;
                this.interceptor5 = interceptor5;
            }
            else
            {
                Console.WriteLine("인터셉터를 더이상 생산할 수 없습니다.");
                recentInterceptor = null;
                countInterceptor = 5;
            }

            return recentInterceptor;
        }

        public void Att()
        {
            if (countInterceptor == 0)
            {
                Console.WriteLine("인터셉터가 모자랍니다.");
            }
            else if (countInterceptor == 1)
            {
                this.interceptor1.Att();
            }
            else if (countInterceptor == 2)
            {
                this.interceptor1.Att();
                this.interceptor2.Att();
            }
            else if (countInterceptor == 3)
            {
                this.interceptor1.Att();
                this.interceptor2.Att();
                this.interceptor3.Att();
            }
            else if (countInterceptor == 4)
            {
                this.interceptor1.Att();
                this.interceptor2.Att();
                this.interceptor3.Att();
                this.interceptor4.Att();
            }
            else if (countInterceptor == 5)
            {
                this.interceptor1.Att();
                this.interceptor2.Att();
                this.interceptor3.Att();
                this.interceptor4.Att();
                this.interceptor5.Att();
            }            
        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Study06
{
    class Interceptor
    {
        string name;
        int dmg;

        public Interceptor(string name, int dmg)
        {
            this.name = name;
            this.dmg = dmg;

            Console.WriteLine("{0}가 생산되었습니다.", this.name);
        }

        public void Att()
        {
            Console.WriteLine("{0}이 공격({1})하였습니다.", this.name, this.dmg);
        }
    }

캐리어의 지역변수로 생성된 인터셉터 클래스의 인스턴스를 활용할 수 없었는데(메서드가 종료되었을 때 지역변수가 사라지기 때문에) 전부 인터셉터 타입의 멤버변수에 대입하여 값을 저장하고 그 값을 통해서 원하는 기능을 구현할 수 있었다.(아직 코드가 너무 조잡합)

+ Recent posts