posted by 방랑군 2012. 1. 17. 03:50
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using System.Diagnostics;

namespace ConsoleApplication1
{

    public interface IMessengeSeverUI
    {
        void WriteMessage(string message);

        void UpdateClientCount(int count);
    }

    public class MessengServerUI : IMessengeSeverUI
    {

        #region IMessengeSeverUI 멤버

        public void WriteMessage(string message)
        {           
            Debug.Write(message);            
        }

        public void UpdateClientCount(int count)
        {            
            Debug.Write(count);            
        }

        #endregion
    }

    public interface IMessengerServer
    {
        bool Start(IMessengeSeverUI ui);

        bool Stop();
    }

    public class MessengerServer : IMessengerServer
    {
        private string m_ID="황승재";

        public string ID {
            get {
                return m_ID;
            }
        }
        #region IMessengerServer 멤버

        public bool Start(IMessengeSeverUI ui)
        {           
            ui.WriteMessage("IMessengeSeverUI 상속된 자신을 파라미터로 보낸 경우");
            return true;
        }

        public bool Stop()
        {           
            Debug.Write("Stop");
            return true;
        }

        #endregion
    }

    class Program
    {
        static void Main(string[] args)
        {

            // 1
            IMessengeSeverUI m_ui = new MessengServerUI();
            m_ui.WriteMessage("인터페이스가 하위 상속된 클레스 함수 호출.");
           
            // 2
            (new TestClass()).Click();
        }
    }

    class TestClass : IMessengeSeverUI
    {
        private IMessengerServer m_server = null;

        public void Click()
        {
            m_server = new MessengerServer();

            m_server.Start(this);
        }

        #region IMessengeSeverUI 멤버

        public void WriteMessage(string message)
        {
            //throw new NotImplementedException();
            Debug.Write(message);
        }

        public void UpdateClientCount(int count)
        {
            //throw new NotImplementedException();
            Debug.Write(count);
        }

        #endregion
    }
}