開発環境
- 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 コメント:
コメントを投稿