728x90
반응형

[예제1]

형태

using System.Collections.Generic;
using static System.Console;
namespace ConsoleApp1
{
    interface IBank
    {
        void f1(string s);
    }
    // 상속, 구현 (구현 함수는 반드시 public)
    class KB : IBank
    {
        public void f1(string s)
        {
            WriteLine(1);
        }
    }

    class Monitor
    {
        private IBank ib;
        public Monitor(IBank ib)
        {
            this.ib = ib;
        }
        public void show()
        {
            ib.f1( "Hello World" );
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            KB kb = new KB();
            kb.f1("test");

            // 부 = 자 (upcasting 정도의 모양이다.)
            // IBank ib = new KB();
            Monitor monitor = new Monitor(kb);
            monitor.show();
            
        }
    }
}


[예제2]

using System;
using System.Collections.Generic;
using System.IO;
using static System.Console;
namespace ConsoleApp1
{
    interface ILogger
    {
        void WriteLog(string message);
    }
    class ConsoleLogger : ILogger
    {
        public void WriteLog(string message)
        {
            WriteLine(message);
        }
    }
    class FileLogger : ILogger
    {
        private StreamWriter writer;
        public FileLogger(string path)
        {
            // File *fpt = fopen( "sample.txt", "rb" );
            writer = File.CreateText(path);
            writer.AutoFlush = true;
        }
        public void WriteLog(string message)
        {
            writer.
                WriteLine("{0} {1}", DateTime.Now.ToShortDateString(), message);
        }
    }
    // class PrintLogger : ILogger
    // class MemoryLogger : ILogger
    class ClimateMonitor
    {
        private ILogger logger;
        public ClimateMonitor(ILogger logger)
        {
            this.logger = logger;
        }
        public void start()
        {
            while (true)
            {
                WriteLine("온도를 입력해 주세요.");
                string temperature = ReadLine();
                if (temperature == "")
                    break;
                logger.WriteLog("현재온도 : " + temperature);
            }
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
        	// 폴더 내 txt 저장
            /*ClimateMonitor climateMonitor = new ClimateMonitor(new FileLogger( "test01.txt" ));
            climateMonitor.start();*/
            ClimateMonitor climateMonitor = new ClimateMonitor(new ConsoleLogger());
            climateMonitor.start();
        }
    }
}


 

 

 

 

728x90
반응형

'Education > Edu | .net' 카테고리의 다른 글

# 27) [C#] 문법9 (array)  (0) 2021.02.22
# 26.3) [C#] 문법8 (Property)  (0) 2021.02.19
# 26.1) [C#] 문법6  (0) 2021.02.19
# 25.2) [C#] 문법5 (Class)  (0) 2021.02.18
# 25.1) [C#] 문법4  (0) 2021.02.18

+ Recent posts