ISBN 9784797397161
新・明解C++で学ぶオブジェクト指向プログラミング
概要
C++でクラス設計から多相性・テンプレートまでをひとつながりに習得する
想定読者
『新・明解C++入門』でC++の基礎を一通り学んだ人、またはC言語経験を持ちオブジェクト指向の核心を体系的に押さえたい学習者
こんな人には向いていない
- C++の文法すら初めてという完全な初学者(本書の姉妹編『新・明解C++入門』が先行する)
- 実務レベルのモダンC++(C++17/20のムーブセマンティクスやコンセプト等)を目的とする人には網羅性が足りない
- STL全体やBoostライブラリの詳細リファレンスを求める人には範囲が絞られている
読了後にできるようになること
- クラスの設計方針——データと手続きをまとめる意味をコード例で理解できる
- 派生・継承の仕組みと多重継承のトレードオフを実装レベルで把握できる
- 仮想関数と動的多相性(ポリモーフィズム)を抽象クラスと組み合わせて設計できる
- RAIIパターンを用いたリソース管理と例外処理の正しい書き方を身につけられる
- クラステンプレートの基礎構文と適切な使いどころを理解できる
- vector・string・ストリームといった標準ライブラリの基本的な使い方を習得できる
本書のキー概念(章解説)
- 第 1 章 クラスの基礎 — 本書全体の出発点。データと手続きをひとつの型にまとめる設計思想を段階的に導入する
- 第 2 章 具象クラスの作成 — 実際に使えるクラスを手を動かして作る章。設計の手順を具体的に追える
- 第 3 章 変換関数と演算子関数 — 型変換と演算子オーバーロードの落とし穴を先に把握しておくと後半の読解が速くなる
- 第 4 章 資源獲得時初期化と例外処理 — RAIIとスコープ管理の章。リソースリークを防ぐ設計パターンの基礎としてとくに重要
- 第 5 章 継承 — is-a関係の設計と基底クラスの責務分離を扱う
- 第 6 章 仮想関数と多相性 — オブジェクト指向の核心。vtableの仕組みを理解するとポリモーフィズムの挙動が腹落ちする
- 第 7 章 抽象クラス — 純粋仮想関数によるインターフェース定義。設計上の契約として読む視点が有効
- 第 8 章 多重継承 — 菱形継承の問題と回避策を扱う。設計上の制約として把握する読み方が実務に近い
- 第 9 章 例外処理 — 4章の続き。スタックアンワインドと例外安全性の考え方を整理する
- 第 10 章 クラステンプレート — 型汎用化の第一歩。STLコンテナの内部イメージが掴めるようになる
- 第 11 章 ベクトルライブラリ — std::vectorの実践的な使い方。10章のテンプレートの応用として読むと理解が深まる
- 第 12 章 文字列ライブラリ — std::stringの操作パターンを体系的にまとめた章
- 第 13 章 ストリームへの入出力 — iostreamの設計と拡張方法を扱う。C言語経験者が混同しやすい部分を丁寧に区別している
ハイライト
- 派生・継承、仮想関数、抽象クラス、例外処理、クラステンプレートを学習し、オブジェクト指向プログラミングの核心へと話が進んでいきます。その過程で、C++という言語の本質と、オブジェクト指向プログラミングに対する理解を深めていきます。(本書がOOPの原理から標準ライブラリまでを一本筋で繋げる構成であることを示す箇所)
- 本書は、『新・明解C++入門』の姉妹編であり、『新・明解C++入門』でC++の基礎を学んだ読者にとって最適なテキストです。(学習ステップの前提が明示されており、読者が自分の位置を判断できる)
外部からの言及
- C++入門書の参考文献リストに収録される傾向があり、柴田望洋シリーズ全体への信頼をもとに推薦される。本書自体の詳細なレビューよりも、シリーズとしてまとめて紹介されるケースが多い(qiita)
編集メモ
Qiita言及1件 / 累計likes約5(参考文献リストへの掲載のみで実質的な評価コメントなし) / Rakutenランキング情報なし。シグナル量が少なく supplementary と判定。ただし柴田望洋シリーズは日本語C++入門書の定番系統であり、入門編との接続を意識した読者には指名買いに近い位置づけ
読む前に押さえておきたいこと
- C++の基本文法(変数・ポインタ・関数・参照)——柴田望洋『新・明解C++入門』か同等の書籍での学習を推奨
- C言語のポインタ操作と構造体の概念(C言語経験者は本書からOOP概念の差分として読める)
学習のコツ
- 第4章(RAII・例外処理)と第6章(仮想関数と多相性)はOOPの設計思想が最も凝縮されているので、通読後にもう一度手を動かして写経すると定着率が上がる
- 第8章(多重継承)は実務での使用頻度が低いため、初読は概要把握にとどめ、他の章を固めてから戻るのが効率的
- 第11〜13章のライブラリ章は前半のクラス設計知識を前提に読む。独立した章として飛ばし読みすると理解が浅くなるので順序を守る
- 姉妹編『新・明解C++入門』でC++の基礎を確認してから本書に入ると、既習事項と新規事項の境界が明確になりスピードが上がる
出版社による内容紹介
C++を用いてオブジェクト指向プログラミングの基礎を学習するための入門書です。 まずは、クラスの基礎から学習を始めます。データと、それを扱う手続きとをまとめることによってクラスを作成します。 それから、派生・継承、仮想関数、抽象クラス、例外処理、クラステンプレートなどを学習し、オブジェクト指向プログ ラミングの核心へと話が進んでいきます。その過程で、C++という言語の本質と、オブジェクト指向プログラミングに 対する理解を深めていきます。 最後の三つの章では、ベクトル、文字列、入出力ストリームといった、重要かつ基本的なライブラリについて学習します。 本書を通して、読者は、C++という言語の本質と、オブジェクト指向プログラミングに対する理解を深めることができるでしょう。 なお、本書は、『新・明解C++入門』(2017年12月刊行)の姉妹編であり、『新・明解C++入門』でC++の基礎を学んだ読者にとって 最適なテキストです。 第1 章 クラスの基礎 第2 章 具象クラスの作成 第3 章 変換関数と演算子関数 第4 章 資源獲得時初期化と例外処理 第5 章 継承 第6 章 仮想関数と多相性 第7 章 抽象クラス 第8 章 多重継承 第9 章 例外処理 第10章 クラステンプレート 第11章 ベクトルライブラリ 第12章 文字列ライブラリ 第13章 ストリームへの入出力
この本がどの学習段階で役立つかは、 関連する ロードマップ から確認できます。