2012年12月7日金曜日

開発環境

『初めての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 コメント:

コメントを投稿