C#/C#언어

0317 _ abstract 연습 예제

minquu 2021. 3. 17. 15:18
반응형

저글링, 럴커

 

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

namespace study07
{
    public class App
    {
        public App() {
            Console.WriteLine("App 생성자");
            Zergling zergling = new Zergling();
            zergling.Burrow();
            zergling.Attack();

            Lurker lurker = new Lurker();
            lurker.Attack();
            lurker.Burrow();
            lurker.Attack();

        }
    }
}

 

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

namespace study07
{
    public abstract class ZergUnit : IBurrow
    {
        public abstract void Attack();
        public abstract void Burrow();
        public abstract void UnBurrow();
    }
}

 

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

namespace study07
{
    interface IBurrow
    {
        void Burrow();
        void UnBurrow();
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace study07
{
    public class Zergling : ZergUnit
    {
        private bool isBurrow;

        public override void Attack()
        {
            if (isBurrow)
            {
                Console.WriteLine("버러우 상태에서는 공격을 할 수 없습니다.");
            }
            else {
                Console.WriteLine("저글링이 발톱으로 공격을 합니다.");
            }
        }

        public override void Burrow()
        {
            this.isBurrow = true;
            Console.WriteLine("버로우 합니다.");
        }

        public override void UnBurrow()
        {
            this.isBurrow = false;
            Console.WriteLine("다시 나옵니다.");
        }
    }
}

 

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

namespace study07
{
    public class Lurker : ZergUnit
    {
        private bool isBurrow;
        public override void Attack()
        {
            if (isBurrow)
            {
                Console.WriteLine("럴커가 가시 공격을 합니다.");
            }
            else {
                Console.WriteLine("럴커가 버러우 상태가 아니기 때문에 공격할 수 없습니다.");
            }
        }

        public override void Burrow()
        {
            this.isBurrow = true;
            Console.WriteLine("럴커가 버러우를 합니다.");
        }

        public override void UnBurrow()
        {
            this.isBurrow = false;
            Console.WriteLine("럴커가 밖으로 나옵니다.");
        }
    }
}
반응형