C#/수업내용

2020.04.13. 수업내용 - SiegeTank 클래스(enum), Factory 클래스

dev_sr 2020. 4. 13. 21:28

 

1. App class

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_008
{
    class App
    {
        public App()
        {
            Factory factory = new Factory();
 
            SiegeTank tank = factory.CreateTank();
 
            tank.Move();
 
            tank.ChangeMode();
 
            tank.Move();
        }
    }
}
 
 

 

 

2. Factory class

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_008
{
    class Factory
    {
        public Factory()
        {
            Console.WriteLine("팩토리가 생성되었습니다.");
        }
 
        //시즈탱크 생성
        public SiegeTank CreateTank()
        {
            return new SiegeTank();
        }
    }
}
 
 

 

 

3. SiegeTank class

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_008
{
    class SiegeTank
    {
        public enum eTankMode
        {
            TankMode,
            SiegeMode
        }
 
        public eTankMode tankMode;
 
        public SiegeTank()
        {
            Console.WriteLine("시즈탱크가 생성되었습니다.");
            this.tankMode = eTankMode.TankMode;
        }
 
        //이동
        public void Move()
        {
            if(this.tankMode==eTankMode.TankMode)
            {
                Console.WriteLine("시즈탱크가 이동합니다.");
            }
            else if(this.tankMode==eTankMode.SiegeMode)
            {
                Console.WriteLine("시즈모드에서는 이동할 수 없습니다.");
            }
        }
 
        //변형
        public eTankMode ChangeMode()
        {
           eTankMode lastMode = this.tankMode;
 
            if(this.tankMode==eTankMode.TankMode)
            {
                this.tankMode = eTankMode.SiegeMode;
            }
            else if(this.tankMode == eTankMode.SiegeMode)
            {
                this.tankMode = eTankMode.TankMode;
            }
 
            Console.WriteLine("{0}에서 {1}로 변형합니다.", lastMode, this.tankMode);
 
        
        }
    }
}