オブジェクトの存在意義は責任の有無?
ネタ元: オブジェクト指向の骨頂は実世界のモデリングという原則
の元ネタ: オブジェクト指向的HelloWorld
のさらに元ネタ: RE:いろんな言語でオブジェクト指向的Hello World…んでは、awk でチャレンジってことで。でも時間がねい。
のさらにさらに元ネタ: RE:いろんな言語でオブジェクト指向的Hello World
のさらにさらにさらに元ネタ: いろんな言語でオブジェクト指向的Hello World
デザインとかモデリングとか、私はよく分かっていないのだけど便乗(^ ^;;
以前「デザインパターンとともに学ぶオブジェクト指向のこころ」を読んで、何をオブジェクトにしたら良いか分からなければ、その責任に着目して設計すると良いとありました。YAPC::Asia 2008 に行った際 Dan Kogai さんも以下のように表現されていた記憶があります。
オブジェクトとは、自分で何ができるかを知っているデータ
私のイメージするオブジェクト指向な HelloWorld は、あえてそのオブジェクトに存在意義を持たせるならば、1つの解として、世界中のどこで挨拶しても正しい挨拶をする事です。
#!/bin/env python """ Objective HelloWorld """ from datetime import datetime from tzinfoexamples import Pacific class Person: def __init__(self, name, target, tz=None): self.name = name self.target = target self.tz = tz def greeting(self): time = datetime.now(self.tz) if 5 <= time.hour < 10: greet = "Morning" elif 10 <= time.hour < 17: greet = "Hello" else: greet = "Evening" print "%s say at %s:%s %s: %s %s!" %( self.name, time.hour, time.minute, self.tz, greet, self.target,) if __name__ == '__main__': t2y = Person("t2y", "keith") t2y.greeting() keith = Person("keith", "t2y", Pacific) keith.greeting()
実行結果。
t2y say at 4:17 None: Evening keith! keith say at 12:17 Pacific: Hello t2y!
timezone の定義については nori さんの世界時計の方法を使用しました。自分で定義しようと思ったら意外と難しかった(- -#
おそらくは、本来の意図した HelloWorld でも何でもないんですけど、カオスという言葉に惹かれて自分流に解釈してみました(^ ^;;
もう、カオスでよくわかんねー。
オブジェクト指向の骨頂は実世界のモデリングという原則
デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)
- 作者: アラン・シャロウェイ,ジェームズ・R・トロット,村上雅章
- 出版社/メーカー: ピアソン・エデュケーション
- 発売日: 2005/09/16
- メディア: 大型本
- 購入: 51人 クリック: 615回
- この商品を含むブログ (122件) を見る