開発環境
- Microsoft Windows 8 Pro 64bit 日本語 (OS)
- Microsoft Visual Studio Express 2012 for Windows Desktop (IDE)
- プログラミング言語: C#
『初めてのC# 第2版』(Jesse Liberty+Brian MacDonald著、日向俊二訳、オライリー・ジャパン、2006年、ISBN978-487311-294-7)の 第13章(インタフェース)13.10(練習問題)練習13-2を解いてみる。
その他参考書籍
練習13-2.
コード
using System; interface IConvertible { string ConvertToCSharp(string str); string ConvertToVB(string str); } class ProgramHelper : IConvertible { public ProgramHelper() { Console.WriteLine("ProgramHelperを作成"); } #region IConvertible public string ConvertToCSharp(string str) { return "文字列をC#の文字列に変換中・・・"; } public string ConvertToVB(string str) { return "文字列をVisual Basicの文字列に変換中・・・"; } #endregion } class Tester { public void Run() { ProgramHelper ph = new ProgramHelper(); string str = "文字列"; Console.WriteLine(ph.ConvertToCSharp(str)); Console.WriteLine(ph.ConvertToVB(str)); } static void Main() { Tester t = new Tester(); t.Run(); } }
入出力結果(Console Window)
ProgramHelperを作成 文字列をC#の文字列に変換中・・・ 文字列をVisual Basicの文字列に変換中・・・ 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(TextWrangler)
// JavaScriptではインタフェースはない(?)のでとりあえず抽象クラスを定義してみることに // 実装し忘れた場合は例外を投げる var result = ""; var IConvertible = function(){}; IConvertible.prototype.convert_to_javascript = function(str){ throw "convert_to_javascriptが実装されていません。"; }; IConvertible.prototype.convert_to_python = function(str){ throw "convert_to_pythonが実装されていません。"; }; var ProgramHelper = function(){ $('#pre0').append('ProgramHelperを作成\n'); }; ProgramHelper.prototype = new IConvertible(); ProgramHelper.constructor = ProgramHelper; ProgramHelper.prototype.convert_to_javascript = function(str){ return "文字列をJavaScriptの文字列に変換中・・・"; }; ProgramHelper.prototype.convert_to_python = function(str){ return "文字列をPythonの文字列に変換中・・・"; }; var ph = new ProgramHelper(); var str = "文字列"; result += ph.convert_to_javascript(str) + "\n"; result += ph.convert_to_python(str) + "\n"; $('#pre0').append(result);
pythonの場合。
sample.py
コード(TextWrangler)
#!/usr/bin/env python3.3 # -*- coding: utf-8 -*- # pythonではインタフェースはない(?)のでクラスを定義 # C#では多重継承できないけど、pythonでは多重継承ができる # 定義し忘れた場合に例外を投げるようにする class IConvertible: def convert_to_python(s): raise Exception("convert_to_pythonが実装されていません。") def convert_to_javascript(s): raise Exception("convert_to_javascriptが実装されていません。") class ProgramHelper(IConvertible): def __init__(self): print("ProgramHelperを作成") def convert_to_python(self, s): print("文字列をPythonの文字列に変換中・・・") def convert_to_javascript(self, s): print("文字列をJavaScriptの文字列に変換中・・・") ph = ProgramHelper() s = "文字列" ph.convert_to_python(s) ph.convert_to_javascript(s)
入出力結果(Terminal)
$ ./sample.py ProgramHelperを作成 文字列をPythonの文字列に変換中・・・ 文字列をJavaScriptの文字列に変換中・・・ $
0 コメント:
コメントを投稿