【2020年】オブジェクト指向プログラミング本「最新・人気のおすすめの10冊」

現代のプログラミングでは欠かせない「オブジェクト指向プログラミング」。

「オブジェクト指向」という概念はなんとなくはわかるものの、どういった粒度でクラス化するか、継承や委譲によるクラス設計をどうすべきか、クラス間関連を疎に保つには・・など、具体的な技術・考え方は学ばないとわからないもの。

こちらでは、オブジェクト指向プログラミングに関する人気の書籍を紹介していきます。

 
Kindle Paperwhite
発売日 2018/11/07
通常 13,980円
現在 13,980円

 

Contents

 

Kindle Unlimited 1ヶ月無料

kindle_unlimited_sale
 
  • 1ヶ月無料で読み放題
  • 1ヶ月以内でも解約可能
  • 解約後も1ヶ月まで利用可


    

オブジェクト指向プログラミングの参考書「人気ランキング 20冊」

オブジェクト指向プログラミングの今売れ筋本を人気ランキングで一覧したのが以下。

ランキングは日々更新されていますので、最新の人気が反映されています。

 

(2020/12/01 更新)
売筋
Rank
製品評価
1
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常    2,640円
単行本   2,640円 (+26pt)
Kindle   2,376円 (+24pt)
Kindle Unlimited(読み放題)
(4.4)
総評価数 99件
2
(4.5)
総評価数 56件
3
(4.3)
総評価数 33件
4
(4.5)
総評価数 9件
5
(3.7)
総評価数 4件
6
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2014/03/11
通常    4,180円
単行本   4,180円 (+42pt)
(4.2)
総評価数 29件
7
(5)
総評価数 4件
8
オブジェクト指向の考え方 5th Edition impress top gearシリーズ
発売日 2020/10/23
通常    3,740円
単行本   3,740円 (+37pt)
Kindle   3,553円 (+65pt)
(2)
総評価数 1件
9
(4.1)
総評価数 31件
10
PHP本格入門[上] ~プログラミングとオブジェクト指向の基礎からデータベース連携まで...
発売日 2020/08/03
通常    3,938円
単行本   3,938円 (+39pt)
Kindle   3,741円 (+66pt)
(4.1)
総評価数 9件
11
(3.7)
総評価数 14件
12
(3.8)
総評価数 6件
13
Java言語プログラミングレッスン 第3版(下) オブジェクト指向を始めよう...
発売日 2014/03/12
通常    2,640円
単行本   2,640円 (+26pt)
Kindle   2,508円 (+46pt)
(4.2)
総評価数 13件
14
新わかりやすいJava オブジェクト指向徹底解説
発売日 2018/11/08
通常    3,278円
単行本   3,278円 (+150pt)
Kindle   2,950円 (+30pt)
(4.2)
総評価数 15件
15
(3.3)
総評価数 31件
16
Javaのオブジェクト指向がゼッタイにわかる本
発売日 2006/04/28
通常    2,277円
単行本   295円
Kindle   2,277円 (+23pt)
(4)
総評価数 24件
17
(3.8)
総評価数 12件
18
Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで...
発売日 2017/04/18
通常    3,278円
単行本   3,278円 (+66pt)
Kindle   3,278円 (+33pt)
(4)
総評価数 17件
19
新・明解C++で学ぶオブジェクト指向プログラミング
発売日 2018/09/15
通常    3,300円
単行本   3,300円 (+110pt)
Kindle   3,135円 (+64pt)
(3.6)
総評価数 7件
20
(3.6)
総評価数 43件

 

以降でおすすめ・注目の本をピックアップしていきまっす。

ちなみに、Kindle版のある本ならサンプル送信で試し読み可能。大概目次まで見れるので、内容の概要もつかめるので、サンプル試読おすすめです。

 

オブジェクト指向プログラミングの本 人気の参考書 5冊

以下が今人気(売れ筋)のオブジェクト指向プログラミング関連の本の5冊の詳細です。

(2020/12/01 更新)
売筋
Rank
製品評価
1
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常    2,640円
単行本   2,640円 (+26pt)
Kindle   2,376円 (+24pt)
Kindle Unlimited(読み放題)
(4.4)
総評価数 99件
2
(4.5)
総評価数 56件
3
(4.3)
総評価数 33件
4
(4.5)
総評価数 9件
5
(3.7)
総評価数 4件

 

「オブジェクト指向でなぜつくるのか 第2版」

●『オブジェクト指向でなぜつくるのか』7年ぶり、待望の改訂第2版!

現在のソフトウエア開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を
平易な文章で核心をズバリと解説します。

改訂第2版では、すべての文章を細かく見直して修正して、追加のトピックを記述したことに加えて、
多くの技術者の注目を集めている関数型言語の基本的な仕組みと思想を解説する
「第13章 関数型言語でなぜつくるのか」を新たに書き下ろしています。

◆オブジェクト指向の全体像を整理して解説
オブジェクト指向は、プログラミングをはじめ、フレームワーク、デザインパターン、UML、モデリング、
設計、アジャイル開発手法と、ソフトウエア開発全体を支える総合技術となっています。
本書では、オブジェクト指向の全体像とそこに含まれる各技術が何を目的として何を実現するのかを解説します。
併せて、混乱を避けるために全体を「プログラミング技術」と「汎用の整理術」の2つに分けて説明します。

◆OOPのプログラムが動く仕組みがわかる
OOPで書いたプログラムは、特有のメモリの使い方をします。
本書では静的領域、ヒープ領域、スタック領域に対して、クラスやインスタンスや変数がどのように配置され管理されて
いるのかを多数の図を使って説明します。これらを理解することで、自分の書いたプログラムがどのように
動いているのがイメージできるようになります。

◆関数型言語の本質がわかる
オブジェクト指向の「次」の技術として注目される関数型言語は、従来のプログラミング言語とは基本的な
仕組みや考え方が大きく異なっています。本書では関数型言語の仕組みを7つの特徴に分けて説明するとともに、
オブジェクト指向との関係についても述べます。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
グローバル変数の多用は予期せぬ変更で不具合を生む可能性が高い。
従来のプログラミングでは、グローバル変数が至るところから参照・変更されていた。
オブジェクト指向では、独立性の高い部品単位でプログラムを切り出しているのが特徴。
外部から参照・変更されないようにPrivateで隠したり、機能を共通化する継承や、外部からの利用され方を統一するポリモーフィズムという方法を採用し、影響範囲を限定・効率的な利用を促すことで、従来の課題に対する解決策としている。
また、オブジェクト指向を理解する上で必須のメモリ領域の仕組みやプログラムがどのようにして動作しているかの基本は非常に重要で、体系的に学べる良書であると感じた。

【中間コード】
異なるマシンでも同じプログラムを実行できるようにするための仕組み。
LinuxやWindowsでも同じJavaアプリケーションが動くのは、JavaVMが中間コードを解釈しているから。
.NETの場合はCLR。

【3種類のメモリ領域】
ヒープ領域は静的領域、スタック領域と密接に連携しながらアプリケーションを動かしている。

・静的領域
グローバル変数や実行コードを格納する領域。
アプリケーションでまとめて1つ確保している。
ヒープ領域で作成されたインスタンスがメソッドを呼び出すと、静的領域に保存してある実行コード内のメソッドを参照する仕組み。

・ヒープ領域
アプリケーションでまとめて1つ確保している。
プログラム開始時に確保されるメモリ領域で、アプリケーションの必要に応じてメモリの割当て・開放を行う。
インスタンス変数はここに格納され、複数のスレッドから共用される。
オブジェクト指向プログラミングはこのヒープ領域を大量に使って動くため、メモリの管理であるGCが大事。
ガーベッジコレクション(GC)はヒープ領域内にある確保されたメモリをチェックし、不要と判断したら開放していく。
不要と判断する基準としては静的領域やスタック領域から参照されているかどうかを見ている。(ヒープ領域内で完全に独立 or 循環参照している)

・スタック領域
インスタンスがメソッドを実行する単位(スレッド単位)毎に確保される。
サブルーチン動作に必要なメモリである、ローカル変数、引数、戻り値を確保している。
メモリへの格納単位はサブルーチン毎になるが数が多い。そこで、後入れ先出し方式を採用して効率化を図っている。(スタック領域と呼ばれる由来) (参考:Amazon)

↓全て表示 ↑少なく表示
Cを勉強している身ですが、いつかjavaでもやろうと思って「オブジェクト指向」がどのようなものか知ってみることにし、この本を見つけました。読んでみてわかったことは「オブジェクト指向」というのは名前に過ぎないということです。なんか難しく聞こえるただの名前です。中身を1つひとつ読んでいけば構造がわかっていきました。
とりあえず、すぐにでもjavaを始めようと思います。
「オブジェクト指向」の言語や手法を知るには素晴らしい本です。初心者の目線で説明してくれて、専門用語や仕組みもしっかり記載してあります。引用文献までしっかりと記載してあって、かなり時間をかけて本を作ったのだということが分かりました。☆5でフィニッシュです。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常 2,640円
現在 2,376円
264円(10%)OFF!!

  

「オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)」

銀の弾丸、OOUI。操作性と開発効率の劇的な向上

オブジェクト指向ユーザーインターフェース(OOUI)とは、オブジェクト(もの、名詞)を起点としてUIを設計すること。タスク(やること、動詞)を起点としたUIに比べて、画面数が減って作業効率が高まり、また開発効率や拡張性も向上する、いわば「銀の弾丸」的な効果を持つ。ブログや雑誌記事などで大きな反響を得たこの設計手法について、前半部では理論やプロセスを詳説。そして後半部の「ワークアウト(実践演習)」では18の課題に読者がチャレンジ。実際に考え、手を動かし、試行錯誤をすることにより、OOUIの設計手法を体得できる。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
内容サンプル

(引用元Amazon)

 
  

「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 大型本」

オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby"、待望の翻訳版! 使いこなせるようになるととても便利なオブジェクト指向ですが、「なんとなく」の理解で使っていると、大きな罠にかかってしまいます。本書は、保守性を上げて運用コストを下げるアプリケーションをつくるために、クラス設計から基本概念、継承のテクニック、ダックタイプ、そしてテスト設計まで、幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。

↓全て表示↑少なく表示
 
Users Voice
・クラスの単一責任化(クラス間が疎結合なコードを書く)
- クラスにメソッドを追加する時にそのクラスが知るべき情報なのかを自問自答する。
- 疎結合にしておかないと、1つの修正が他のクラスへの影響し、ひいてはサービスの品質へと繋がる。
- 単一責任化することで、疎結合同士のクラスとなる。この情報はどのクラスに聞けばわかるか(クラス間の依存関係)容易になり、変更が容易なアプリケーションの土台へと繋がる。
・単一責任の考慮不足の場合に起こり得るアンチパターンとして、本当は他のクラスから聞き出せばいいのに、自身のクラス内に取り込んでしまう場合。その場合、メソッドの引数に知りたい情報を持っているオブジェクトを注入し、クラスが必要以上の情報を持たないよう疎結合な設計にする。

・修正が発生した際にコストを掛けずに改修したい
- 依存性の高い設計にしないこと。よくあるアンチパターンとして、is_a?、kind_of?、responds_to?、case文でオブジェクトの種類毎にロジックを分岐させている場合要注意
- 依存性を減らした設計ができないか(ダックタイピング)を検討し、各クラスに同じメソッドを実装、別クラスへの切り出し、ポリモーフィックの利用を考えてみる。

・継承先で継承元と疎結合になるよう適宜フックメッセージを使う
どんなプログラマーでもsuperの送り忘れはあり得る。superの利用忘れは継承元への依存が高いことを意味する。
そこで、継承元にフックメソッドを用意し、結合度を低減させ変更に強くする

・メソッド探査パスへの理解
extendしたメソッドとincludeしたモジュール群に定義されたメソッドの場合、extendした方が先に探査される。
また、includeされたモジュールが複数あった場合のメッソドの探査は最後にインクルードされたモジュールから探査される。

・継承とコンポジションの利用の判断
継承はメッセージの委譲コストが楽になるが、オブジェクト間の階層構造により依存関係を強く持つことになる。
コンポジションは小さなオブジェクト単位を作るため、責任範囲が明快。階層構造から独立しているので見通しが良くなる。 (参考:Amazon)

↓全て表示 ↑少なく表示
rubyはオブジェクト指向言語で、さらにrubyならではのオブジェクト指向的なプログラムの書き方、クラスオブジェクトの設計の仕方というがあります。

この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。

筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。

それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。

これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。

ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
  

「オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピュー...」

 
内容サンプル

(引用元Amazon)

 
  

「PHP本格入門[下] ~オブジェクト指向設計、セキュリティ、現場で使える実践ノウハウまで」

即戦力の知識を上下巻1000ページ超のボリュームで集大成!

Webアプリケーションの定番言語であるPHPの基礎から実践までを、上下巻のフルボリュームで集大成。

「この目的を実現するためには、どの文法テクニックが適合しやすいだろう」?
「このプログラムをより読みやすくするために、どんなアプローチができるだろう」?

といったことを思考しつつ、「とりあえずは動く」だけで終わらない、現場に求められる品質を形にするための知識とテクニックを解説します。

↓全て表示↑少なく表示
 
Users Voice
ものすごいボリュームに気圧されますが、そのぶん最初に全体像を把握するにはうってつけ。ここからさらに深く、広く知識を得ていくのがおすすめです。 (参考:Amazon)

↓全て表示 ↑少なく表示
上巻は程度の低いサンプル、中途半端な解説といった印象でしたが、下巻は更に酷いと感じました。
この書籍で、いくら学んでも実務レベルにはなれません。

これからPHPを学ばれる方は、ほかの学習ソースを探しましょう。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
  

 

   

オブジェクト指向プログラミングの本 高評価のおすすめの5冊

以下が高評価のおすすめのオブジェクト指向プログラミング関連の本の5冊の詳細です。

(2020/12/01 更新)
売筋
Rank
製品評価
1
(4.5)
総評価数 56件
2
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常    2,640円
単行本   2,640円 (+26pt)
Kindle   2,376円 (+24pt)
Kindle Unlimited(読み放題)
(4.4)
総評価数 99件
3
(4.3)
総評価数 33件
4
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2014/03/11
通常    4,180円
単行本   4,180円 (+42pt)
(4.2)
総評価数 29件
5
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2005/09/16
通常    2,314円
単行本   2,138円
(4.2)
総評価数 29件

 

「オブジェクト指向UIデザイン──使いやすいソフトウェアの原理 (WEB+DB PRESS plusシリーズ)」

銀の弾丸、OOUI。操作性と開発効率の劇的な向上

オブジェクト指向ユーザーインターフェース(OOUI)とは、オブジェクト(もの、名詞)を起点としてUIを設計すること。タスク(やること、動詞)を起点としたUIに比べて、画面数が減って作業効率が高まり、また開発効率や拡張性も向上する、いわば「銀の弾丸」的な効果を持つ。ブログや雑誌記事などで大きな反響を得たこの設計手法について、前半部では理論やプロセスを詳説。そして後半部の「ワークアウト(実践演習)」では18の課題に読者がチャレンジ。実際に考え、手を動かし、試行錯誤をすることにより、OOUIの設計手法を体得できる。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
内容サンプル

(引用元Amazon)

 
  

「オブジェクト指向でなぜつくるのか 第2版」

●『オブジェクト指向でなぜつくるのか』7年ぶり、待望の改訂第2版!

現在のソフトウエア開発技術の主役である、オブジェクト指向の全体像とそこに含まれる各技術を
平易な文章で核心をズバリと解説します。

改訂第2版では、すべての文章を細かく見直して修正して、追加のトピックを記述したことに加えて、
多くの技術者の注目を集めている関数型言語の基本的な仕組みと思想を解説する
「第13章 関数型言語でなぜつくるのか」を新たに書き下ろしています。

◆オブジェクト指向の全体像を整理して解説
オブジェクト指向は、プログラミングをはじめ、フレームワーク、デザインパターン、UML、モデリング、
設計、アジャイル開発手法と、ソフトウエア開発全体を支える総合技術となっています。
本書では、オブジェクト指向の全体像とそこに含まれる各技術が何を目的として何を実現するのかを解説します。
併せて、混乱を避けるために全体を「プログラミング技術」と「汎用の整理術」の2つに分けて説明します。

◆OOPのプログラムが動く仕組みがわかる
OOPで書いたプログラムは、特有のメモリの使い方をします。
本書では静的領域、ヒープ領域、スタック領域に対して、クラスやインスタンスや変数がどのように配置され管理されて
いるのかを多数の図を使って説明します。これらを理解することで、自分の書いたプログラムがどのように
動いているのがイメージできるようになります。

◆関数型言語の本質がわかる
オブジェクト指向の「次」の技術として注目される関数型言語は、従来のプログラミング言語とは基本的な
仕組みや考え方が大きく異なっています。本書では関数型言語の仕組みを7つの特徴に分けて説明するとともに、
オブジェクト指向との関係についても述べます。

↓全て表示↑少なく表示
 
内容サンプル

(引用元Amazon)

 
Users Voice
グローバル変数の多用は予期せぬ変更で不具合を生む可能性が高い。
従来のプログラミングでは、グローバル変数が至るところから参照・変更されていた。
オブジェクト指向では、独立性の高い部品単位でプログラムを切り出しているのが特徴。
外部から参照・変更されないようにPrivateで隠したり、機能を共通化する継承や、外部からの利用され方を統一するポリモーフィズムという方法を採用し、影響範囲を限定・効率的な利用を促すことで、従来の課題に対する解決策としている。
また、オブジェクト指向を理解する上で必須のメモリ領域の仕組みやプログラムがどのようにして動作しているかの基本は非常に重要で、体系的に学べる良書であると感じた。

【中間コード】
異なるマシンでも同じプログラムを実行できるようにするための仕組み。
LinuxやWindowsでも同じJavaアプリケーションが動くのは、JavaVMが中間コードを解釈しているから。
.NETの場合はCLR。

【3種類のメモリ領域】
ヒープ領域は静的領域、スタック領域と密接に連携しながらアプリケーションを動かしている。

・静的領域
グローバル変数や実行コードを格納する領域。
アプリケーションでまとめて1つ確保している。
ヒープ領域で作成されたインスタンスがメソッドを呼び出すと、静的領域に保存してある実行コード内のメソッドを参照する仕組み。

・ヒープ領域
アプリケーションでまとめて1つ確保している。
プログラム開始時に確保されるメモリ領域で、アプリケーションの必要に応じてメモリの割当て・開放を行う。
インスタンス変数はここに格納され、複数のスレッドから共用される。
オブジェクト指向プログラミングはこのヒープ領域を大量に使って動くため、メモリの管理であるGCが大事。
ガーベッジコレクション(GC)はヒープ領域内にある確保されたメモリをチェックし、不要と判断したら開放していく。
不要と判断する基準としては静的領域やスタック領域から参照されているかどうかを見ている。(ヒープ領域内で完全に独立 or 循環参照している)

・スタック領域
インスタンスがメソッドを実行する単位(スレッド単位)毎に確保される。
サブルーチン動作に必要なメモリである、ローカル変数、引数、戻り値を確保している。
メモリへの格納単位はサブルーチン毎になるが数が多い。そこで、後入れ先出し方式を採用して効率化を図っている。(スタック領域と呼ばれる由来) (参考:Amazon)

↓全て表示 ↑少なく表示
Cを勉強している身ですが、いつかjavaでもやろうと思って「オブジェクト指向」がどのようなものか知ってみることにし、この本を見つけました。読んでみてわかったことは「オブジェクト指向」というのは名前に過ぎないということです。なんか難しく聞こえるただの名前です。中身を1つひとつ読んでいけば構造がわかっていきました。
とりあえず、すぐにでもjavaを始めようと思います。
「オブジェクト指向」の言語や手法を知るには素晴らしい本です。初心者の目線で説明してくれて、専門用語や仕組みもしっかり記載してあります。引用文献までしっかりと記載してあって、かなり時間をかけて本を作ったのだということが分かりました。☆5でフィニッシュです。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
内容サンプル

(引用元Amazon)

 
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常 2,640円
現在 2,376円
264円(10%)OFF!!

  

「オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方 大型本」

オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby"、待望の翻訳版! 使いこなせるようになるととても便利なオブジェクト指向ですが、「なんとなく」の理解で使っていると、大きな罠にかかってしまいます。本書は、保守性を上げて運用コストを下げるアプリケーションをつくるために、クラス設計から基本概念、継承のテクニック、ダックタイプ、そしてテスト設計まで、幅広くカバーしています。オブジェクト指向言語を使用するすべての人におすすめの1冊です。

↓全て表示↑少なく表示
 
Users Voice
・クラスの単一責任化(クラス間が疎結合なコードを書く)
- クラスにメソッドを追加する時にそのクラスが知るべき情報なのかを自問自答する。
- 疎結合にしておかないと、1つの修正が他のクラスへの影響し、ひいてはサービスの品質へと繋がる。
- 単一責任化することで、疎結合同士のクラスとなる。この情報はどのクラスに聞けばわかるか(クラス間の依存関係)容易になり、変更が容易なアプリケーションの土台へと繋がる。
・単一責任の考慮不足の場合に起こり得るアンチパターンとして、本当は他のクラスから聞き出せばいいのに、自身のクラス内に取り込んでしまう場合。その場合、メソッドの引数に知りたい情報を持っているオブジェクトを注入し、クラスが必要以上の情報を持たないよう疎結合な設計にする。

・修正が発生した際にコストを掛けずに改修したい
- 依存性の高い設計にしないこと。よくあるアンチパターンとして、is_a?、kind_of?、responds_to?、case文でオブジェクトの種類毎にロジックを分岐させている場合要注意
- 依存性を減らした設計ができないか(ダックタイピング)を検討し、各クラスに同じメソッドを実装、別クラスへの切り出し、ポリモーフィックの利用を考えてみる。

・継承先で継承元と疎結合になるよう適宜フックメッセージを使う
どんなプログラマーでもsuperの送り忘れはあり得る。superの利用忘れは継承元への依存が高いことを意味する。
そこで、継承元にフックメソッドを用意し、結合度を低減させ変更に強くする

・メソッド探査パスへの理解
extendしたメソッドとincludeしたモジュール群に定義されたメソッドの場合、extendした方が先に探査される。
また、includeされたモジュールが複数あった場合のメッソドの探査は最後にインクルードされたモジュールから探査される。

・継承とコンポジションの利用の判断
継承はメッセージの委譲コストが楽になるが、オブジェクト間の階層構造により依存関係を強く持つことになる。
コンポジションは小さなオブジェクト単位を作るため、責任範囲が明快。階層構造から独立しているので見通しが良くなる。 (参考:Amazon)

↓全て表示 ↑少なく表示
rubyはオブジェクト指向言語で、さらにrubyならではのオブジェクト指向的なプログラムの書き方、クラスオブジェクトの設計の仕方というがあります。

この本は「rubyでオブジェクト指向プログラミングをするならせめてこういう設計でやれ」という手法について教えてくれてます。

筆者は教えるのがとてもうまいです。自分を完璧の権化のように見せることなく、ごく平凡な発想で作ったクラスの例を出してから話を始めます。そしてそのように最初に設計してしまうのも、別に間違いではないと言うのです。必要な要素をすべて見越すことなどできないと言い切ります。

それからそうした設計の欠点がどういうふうに現れ出し、その結果どういう設計が求められ、それをrubyでやるならどうするか、という手順を踏んでプログラムの進化する様を見せてくれます。なので、とても腑に落ちて理解できました。

これを読まなくてもrubyのプログラムは、はっきり言って、できると思います。
でもこれを読んだ後なら「なぜそのようにクラスを書くのか」ということに対してベストプラクティスを基にした一定の根拠を持てるようになるでしょう。

ゆえにrubyを使ってプログラムを書くなら必読級の著作と思います。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
  

「オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)」

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
(著)アラン・シャロウェイ, ジェームズ・R・トロット
発売日 2014/03/11
(4.2)

本書は、オブジェクト指向パラダイムを有効にするためのデザイ
ンパターンの中から、重要度の高いものを厳選し、解説しています。その際、要
求における流動的要素や、要求の変化という観点から、さまざまな事例につい
て丁寧な考察を行うことによって、デザインパターンそのものを導き出すという
ユニークなアプローチを採っています。
オブジェクト指向パラダイムのメリットを120% 引き出したいと考えている方
に、まず本書をお薦めすることができます。デザインパターンを考察することで
こそ、「オブジェクト指向の本当の姿」=「オブジェクト指向のこころ」
が理解できるようになるわけです。また、デザインパターンを勉強したことがな
い方、勉強はしたが日々の仕事に活用できないと悩んでおられる方にもお薦めで
す。本書で解説されている観点に立つことで、「時間軸を見渡した設計」とも言
える考え方を身につけることができ、設計・開発するシステムはひと味もふた
味も違ったものとなることでしょう。

↓全て表示↑少なく表示
 
Users Voice
あなたは以下のような謳い文句をどこかで聞いたことがありますか?

・オブジェクトとはデータと振る舞いを持った「もの」である

・カプセル化とはデータを隠蔽することである

・オブジェクト指向言語では継承を使用することによって再利用が促進される(差分プログラミング)

・オブジェクトとは現実世界における実体であるため、名詞と動詞を抽出することで適切なクラス設計を行うことができる

この本は本来あるべきオブジェクト指向設計においてはこれらが適切ではないということをデザインパターンを使って解説しています。

この本を以下の方に薦めます。

・デザインパターン本(GoF本を含む)を読んだがいまいち理解できなかった方(オブジェクト指向初級者)

この本はデザインパターンの解説だけではなく、その元となっているオブジェクト指向原則についても説明しています。そのため他のデザインパターン本よりも有益でありかつ理解しやすいものとなっています。

・オブジェクト指向はある程度理解していると考えている方(オブジェクト指向中級者)

オブジェクト指向原則やデザインパターンに対する知識の整理が可能となります。「それについては知っていた」という箇所が出てきた場合には自分を褒めましょう。(この逆は、「もしかしたら自分はオブジェクト指向初級者だったのかもしれない。」です。)

また、この本が他のデザインパターン本よりも理解しやすいのは以下の理由もあると思います。

・著者がデザインパターン講義を行っている講師である

理解するのが困難な箇所について何度も解説を行った経験があり、そのためその解説が洗練されている。

・翻訳がすばらしい

村上雅章さんの翻訳は本当にすばらしいです。

オブジェクト指向及びデザインパターンについて書かれた本を今までに多く読んできましたが、この本が一番分かりやすく有益であると思いました。 (参考:Amazon)

↓全て表示 ↑少なく表示
題名は少し原作と変わったが、デザインパターンについての解説書。

著者が過去に携わった業務における、著者の誤った設計を示し、
デザインパターンについて説明しながら、それを用いて
現在最善と思われる解決策を深い考察とともに説明している。
それでいて、理解しやすくオブジェクト指向の原則を説明しながら
しっかり各パターンについて説明している。

これは、よくある『わかりやすい、、、』『はじめての、、、』
のような誰でも書けそうな上から目線の書籍とは全く違う。
一流の設計者が自分の経験を基に最善の設計についての追求を
続けた過程が述べられており、より技術者好みの深い考察が多い。
(必然的に、リファレンスとしての用途では使えない。)

著者はおそらく、自分の過去の仕事に対する検討や反省を続けていた
のだろうという印象を受けた。このような書籍を多く読むことで、
設計に対する自分なりの哲学を身に着けることができるだろう。

特に秀逸だと思ったのは、Bridgeパターンの説明である。
今までピンとくる解説がなく曖昧に覚えていたものが、すっきりと
理解できた。他の方に説明するときは、この本の例を使うことにしている。
プロとして設計に携わっているならば必読だと思う。 (参考:Amazon)

↓全て表示 ↑少なく表示
 
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2014/03/11
通常 4,180円
現在 4,180円

  

「オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)」

オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
(著)アラン・シャロウェイ, ジェームズ・R・トロット
発売日 2005/09/16
(4.2)

 
オブジェクト指向のこころ (SOFTWARE PATTERNS SERIES)
発売日 2005/09/16
通常 2,314円
現在 2,138円
176円(8%)OFF!!

  

 

オブジェクト指向プログラミング本「Kindle Unlmited 読み放題 人気ランキング」

「Kindle Unlimited」は、Amazonの定額本読み放題サービス。

実はそこにオブジェクト指向プログラミングの本もそこそこあるんです。すなわち、定額で何冊も学習することも可能

Kindle Unlimitedの主な特徴としては、おおよそ以下の通り。

  • 雑誌がかなり充実
  • 豊富なKindle個人出版本がほとんど読み放題
  • 最近は出版社単行本も対応増加

個人的には雑誌が、IT系(CG WORLD等)、ガジェット系(Get Navi等)、ゲーム(ファミ通等)、など見たい雑誌が幅広く読めるのが大きな魅力。2冊以上読みたいものがあるだけで確実にお得です。

また、30日無料体験も可能なので、体験期間を利用して無料で学習してみるのもお得な学習法です。

以下がKindle Unlimited対応のオブジェクト指向プログラミング関係の本人気ランキングです。

(2020/12/01 更新)
売筋
Rank
製品評価
1
オブジェクト指向でなぜつくるのか 第2版
発売日 2014/03/05
通常    2,640円
単行本   2,640円 (+26pt)
Kindle   2,376円 (+24pt)
Kindle Unlimited(読み放題)
(4.4)
総評価数 99件
2
速習 Python 3 中: オブジェクト指向編
発売日 2016/11/06
通常    800円
Kindle   800円 (+8pt)
Kindle Unlimited(読み放題)
(3.9)
総評価数 17件
3
(5)
総評価数 1件
4
(4.2)
総評価数 4件
5
(0)
総評価数 0件
6
(0)
総評価数 0件
7
(5)
総評価数 1件
8
(0)
総評価数 0件
9
(0)
総評価数 0件
10
(2)
総評価数 1件

 

   

関連:リファクタリング・コーディング技術を学びさらにコードの質を上げる

オブジェクト指向プログラミングを学ぶことで、適切なクラス設計に基づくコーディング基礎知識が得られます。

ただ、コードにはそういった設計とはまた別に、守るべき原則や、アンチパターンなどが存在します。

それらの知識を学ぶことでさらに良質で保守性の高いコーディングが可能になります。

以下でそういった知識が得られる「リファクタリング」「コーディング技術」に関する書籍を紹介していきます、合わせてのぞいて見てください。

 

関連:最新おすすめのKindle端末

以下では最新のKindle端末について比較、おすすめ紹介しています、合わせてのぞいて見てください。

いじょうでっす。

コメント

タイトルとURLをコピーしました