開発環境
- 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)の 第11章(継承とポリモーフィズム)11.9(練習問題)練習11-3.を解いてみる。
その他参考書籍
練習11-3.
コード
using System;
abstract class Telephone
{
protected string phonetype;
public Telephone()
{
this.phonetype = "Telephone";
}
public abstract void Ring();
}
class ElectronicPhone : Telephone
{
public ElectronicPhone()
{
this.phonetype = "Digital";
}
public override void Ring()
{
Console.WriteLine("Ringing the {0}. Pipi, Pipi.", phonetype);
}
}
class TalkingPhone : Telephone
{
public TalkingPhone()
{
this.phonetype = "Talking";
}
public override void Ring()
{
Console.WriteLine("Ringing the {0}. Talking!", phonetype);
}
}
class Tester
{
public void Run()
{
ElectronicPhone ep = new ElectronicPhone();
TalkingPhone tp = new TalkingPhone();
Telephone[] ts = { ep, tp };
foreach (Telephone item in ts)
{
item.Ring();
}
}
static void Main()
{
Tester t = new Tester();
t.Run();
}
}
入出力結果(Console Window)
Ringing the Digital. Pipi, Pipi. Ringing the Talking. Talking! 続行するには何かキーを押してください . . .
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').text('');
var Telephone = function ( ) {
this.phonetype = "Telephone";
},
ElectronicPhone, TalkingPhone, ep, tp, ts, i, max;
Telephone.prototype.ring = function( ) {
throw {
type: "ring",
message: "定義し忘れてる"
};
},
ElectronicPhone = function( ) {
this.phonetype = "Digital",
this.ring = function( ) {
$('#pre0').append("Ringing the " + this.phonetype + ". Pipi, Pipi.\n");
};
},
ElectronicPhone.prototype = new Telephone(),
TalkingPhone = function ( ) {
this.phonetype = "Talking",
this.ring = function () {
$('#pre0').append("Ringing the " + this.phonetype + ". Talking!\n");
};
},
ep = new ElectronicPhone(),
tp = new TalkingPhone(),
ts = [ep, tp];
for (i = 0, max = ts.length; i < max; i += 1) {
ts[i].ring();
}
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
class Telephone:
def __init__(self):
self._phonetype = "Telephone"
def ring(self):
raise Exception("ringを定義し忘れている")
class ElectronicPhone(Telephone):
def __init__(self):
self._phonetype = "Digital"
def ring(self):
print("Ringing the {0}. Pipi, Pipi.".format(self._phonetype))
class TalkingPhone(Telephone):
def __init__(self):
self._phonetype = "Talking"
def ring(self):
print("Ringing the {0}. Talking!".format(self._phonetype))
ep = ElectronicPhone()
tp = TalkingPhone()
for x in [ep, tp]:
x.ring()
入出力結果(Terminal)
$ ./sample.py Ringing the Digital. Pipi, Pipi. Ringing the Talking. Talking! $
0 コメント:
コメントを投稿