開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487312-194-7)の 第13章(インタフェース)13.10(練習問題)練習13-3.を解いてみる。
その他参考書籍
練習13-3.
コード
using System; interface IConvertible { string ConvertToCSharp(string str); string ConvertToJavaScript(string str); } interface ICodeChecker : IConvertible { bool CodeCheckSyntax(string s, string lang); } class ProgramHelper : ICodeChecker { public ProgramHelper() { Console.WriteLine("ProgramHelperを作成"); } #region ICodeChecker #region IConvertible public string ConvertToCSharp(string str) { return "C#の文字列に変換中…"; } public string ConvertToJavaScript(string str) { return "JavaScriptの文字列に変換中…"; } #endregion public bool CodeCheckSyntax(string s, string lang) { switch (lang) { case "C#": case "JavaScript": return true; default: return false; } } #endregion } class Tester { public void Run() { ProgramHelper ph = new ProgramHelper(); string s = "文字列"; string cs = "C#"; string js = "JavaScript"; string py = "Python"; string[] langs = { cs, js, py }; foreach (string lang in langs) { Console.WriteLine("{0}: {1}", lang, ph.CodeCheckSyntax(s, lang)); } } static void Main() { Tester t = new Tester(); t.Run(); } }
入出力結果(Console Window)
ProgramHelperを作成 C#: True JavaScript: True Python: False 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').text(''); var result = "", IConvertible = function( ) { }, ICodeChecker = function () { IConvertible.apply(this, arguments); }, ProgramHelper = function( ) { result += "ProgramHelperを作成\n"; ICodeChecker.apply(this, arguments); }, s = "文字列", js = "JavaScript", cs = "C#", py = "Python", langs = [js, cs, py], ph, i, max; IConvertible.prototype.convertToCSharp = function ( ) { throw "convertToCSharpを実装していない"; }, IConvertible.prototype.convertToJavaScript = function ( ) { throw "convertToJavaScriptを実装していない"; }, ICodeChecker.prototype = new IConvertible(), ICodeChecker.prototype.codeCheckSyntax = function (s, lang){ throw "CodeCheckSyntaxを実装していない"; }, ProgramHelper.prototype = new ICodeChecker(), ProgramHelper.prototype.convertToCSharp = function( s ) { return "C#の文字列に変換中…"; }, ProgramHelper.prototype.convertToJavaScript = function ( s ) { return "JavaScriptの文字列に変換中…"; }, ProgramHelper.prototype.codeCheckSyntax = function ( s, lang ) { switch ( lang ) { case "C#": return true; case "JavaScript": return true; default: return false; } }, ph = new ProgramHelper(); for (i = 0, max = langs.length; i < max; i += 1) { result += langs[i] + ": " + ph.codeCheckSyntax(s, langs[i]) + "\n"; } $('#pre0').text(result);
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- class IConvertible: def convertToJavaScriprt(self, s): raise Exception("convertToJavaScriprtが定義されていない") def convertToPython(self, s): raise Exception("convertToPythonが定義されていない") class ICodeChecker(IConvertible): def codeCheckSyntax(self, s, lang): raise Exception("codeCheckSyntax") class ProgramHelper(IConvertible): def __init__(self): print("ProgramHelperを作成") def convertToJavaScriprt(self, s): return "JavaScriptの文字列に変換中…" def convertToPython(self, s): return "Pythonの文字列に変換中…" def codeCheckSyntax(self, s, lang): if lang == "Python" or lang == "JavaScript": return True return False ph = ProgramHelper() s = "文字列" for x in ["JavaScript", "Python", "C#"]: print("{0}: {1}".format(x, ph.codeCheckSyntax(s, x)))
入出力結果(Terminal)
$ ./sample.py ProgramHelperを作成 JavaScript: True Python: True C#: False $
0 コメント:
コメントを投稿