| 両方とも前のリビジョン
前のリビジョン
次のリビジョン | 前のリビジョン | 
                        
                | article:poodr [2020/10/09 01:29] kijima [Practical Object-Oriented Design in Ruby]
 | article:poodr [2020/12/30 00:28] (現在) kijima
 | 
        
| {{tag>book 進行中}} | {{tag>book}} | 
| ====== Practical Object-Oriented Design in Ruby ====== | ====== Practical Object-Oriented Design in Ruby ====== | 
|  |  | 
| 5 14 21 24 30 59 65 71 81 88 92 105 110 | 5 14 21 24 30 59 65 71 81 88 92 105 110 125 141 | 
|  |  | 
| オブジェクト指向なデザインの本。要するにRubyでの再利用性、耐変更性を考慮した正しい書き方。 | オブジェクト指向なデザインの本。要するにRubyでの再利用性、耐変更性を考慮した正しい書き方。 | 
| デザインパターンとたぶん同じ意味。CやJavaをテーマにしたデザインパターンの本は数あれど、Rubyを題材にしたデザインの本はそう多くない。 | デザインパターンの本だと思っていたが、違う。 | 
|  |  | 
| ===== 1. Object-Oriented Design ===== | ===== 1. Object-Oriented Design ===== | 
|  |  | 
| * 継承の核となる概念は、自動的なメッセージの移譲である。 | * 継承の核となる概念は、自動的なメッセージの移譲である。 | 
|  | * スーパークラスで定義して子クラスにメッセージを送る。テンプレートメソッドパターン。ただし、これは具体クラスで埋め込むメソッドを用意し損ねる可能性があるので、例外メッセージを入れておくと親切。あとでオーバライドすると、例外が表示されない。 | 
|  | * super()し忘れると間違った挙動をもたらす。よくない。コンストラクタのフックメソッドを作っておく。そうすると、子クラスには特化だけ書かれていることになる。 | 
| ===== 7. Sharing Role Behavior with Modules ===== | ===== 7. Sharing Role Behavior with Modules ===== | 
|  |  | 
|  | * オブジェクトごとに共通の振る舞い、それがロール。 | 
|  | * ミックスインとは、名前をつけてメソッドのグループを定義すること。クラスとは独立し、どんなオブジェクトにも混ぜ入れることができる。 | 
|  | * Rubyでは、混ぜ入れられるものを「モジュール」という。なるほど。''include''するやつ。 | 
| ===== 8. Combining Objects with Composition ===== | ===== 8. Combining Objects with Composition ===== | 
| ===== 9. Designing Cost-Effective Tests ===== | ===== 9. Designing Cost-Effective Tests ===== |