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 |