2012年7月28日土曜日

開発環境

『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第13章(インタフェース)13.10(練習問題)、練習13-4を解いてみる。

練習13-4.

コード

using System;

namespace Sample
{
    interface IConvertible
    {
        string ConvertToCSharp(string str);
        string ConvertToVB(string str);
    }
    interface ICodeChecker : IConvertible
    {
        bool CodeCheckSyntax(string str, string lang);
    }
    class ProgramHelper : ProgramConverter, ICodeChecker
    {
        public ProgramHelper()
        {
            Console.WriteLine("Program Helperを作成");
        }
        #region ICodeChecker
        public bool CodeCheckSyntax(string str, string lang)
        {
            if (lang == "C#" || lang == "VB")
            {
                return true;
            }
            return false;
        }
        #endregion
    }
    class ProgramConverter : IConvertible
    {
        public ProgramConverter()
        {
            Console.WriteLine("Program Converterを作成中・・・");
        }
        #region IConvertible
        public string ConvertToCSharp(string str)
        {
            return "C#の文字列に変換中・・・";
        }
        public string ConvertToVB(string str)
        {
            return "VBの文字列に変換中・・・";
        }
        #endregion
    }
    class Tester
    {
        public void Run()
        {
            string str = "文字列";
            string cs = "C#";
            string vb = "VB";
            string js = "JavaScript";
            string[] langs = { cs, vb, js };
            ProgramHelper ph = new ProgramHelper();
            ProgramConverter pc = new ProgramConverter();
            ProgramConverter[] pcs = { ph, pc };
            Console.WriteLine("is演算子を使用");
            foreach (ProgramConverter p in pcs)
            {
                if (p is ICodeChecker)
                {
                    ICodeChecker ic = (ICodeChecker)p;
                    foreach (string lang in langs)
                    {
                        Console.WriteLine(ic.CodeCheckSyntax(str, lang));
                    }
                }
                else
                {
                    Console.WriteLine("インタフェースICodeCheckerを実装していない。");
                }
            }
            Console.WriteLine("as演算子を使用");
            foreach (ProgramConverter item in pcs)
            {
                ICodeChecker ic = item as ICodeChecker;
                if (ic != null)
                {
                    foreach (string lang in langs)
                    {
                        Console.WriteLine(ic.CodeCheckSyntax(str, lang));
                    }
                }
                else
                {
                    Console.WriteLine("インタフェースICodecheckerを実装していない。");
                }
            }
        }
        static void Main()
        {
            Tester t = new Tester();
            t.Run();
        }
    }
}

入出力結果(Console Window)

Program Converterを作成中・・・
Program Helperを作成
Program Converterを作成中・・・
is演算子を使用
True
True
False
インタフェースICodeCheckerを実装していない。
as演算子を使用
True
True
False
インタフェースICodecheckerを実装していない。
続行するには何かキーを押してください . . .

0 コメント:

コメントを投稿