なぜ,あなたはJavaでオブジェクト指向開発ができないのか

[表紙]なぜ,あなたはJavaでオブジェクト指向開発ができないのか

A5判/296ページ

定価(本体2,180円+税)

ISBN 4-7741-2222-X

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

Javaプログラミング言語習得において,新人プログラマーの最初の障害は「オブジェクト指向の壁」です。本書は,Javaのソフトウェア開発を中心に事業を発展させてきたSMG社の新人教育セミナーを加筆・書籍化したもので,大卒の新人に対して,ゼロからJava言語を教えてきた実績をフィードバックしています。単にプログラミングを「覚える」のではなく,その「考え方を理解」させ,さらに「手を動かしソースを書く」ことを基本とし,知らず知らずのうちにオブジェクト指向が身につくようになっていきます。

こんな方におすすめ

  • オブジェクト指向開発の進め方がよくわからない方
  • Javaを使えてはいるが、オブジェクト指向での開発に自信がない方

この書籍に関連する記事があります!

オブジェクト指向の壁
オブジェクト指向の本質は,コードの保守性を高めることにあります。

目次

Lesson 1 オブジェクト指向をなぜ難しいと感じるのか

    • 「プログラムを作る」とはどういうことか
    • プログラミングはなぜ難しいか
    • あなたが「プログラミング」できない理由
    • オブジェクト指向が生まれたわけ
    • なぜオブジェクト指向で開発できないのか

Lesson 2 オブジェクト指向は本当に必要なのか

  • 2.1 コンピュータにジャンケンをさせる
    • どんなプログラムを作成するか
    • プログラムの流れを考える
  • 2.2 ジャンケンプログラムを作成する
  • 2.3 ジャンケンプログラムを拡張する
    • プログラムの改良はなぜ難しいか〜非オブジェクト指向の限界〜

Lesson 3 オブジェクト指向でのソフトウェア開発

  • 3.1 現実世界でのジャンケンを分析する
    • オブジェクト指向は難しくない!
    • 非オブジェクト指向からオブジェクト指向へ
    • 現実世界のジャンケンからオブジェクト指向の世界へ
    • クラスとインスタンス
    • クラスに対する「操作」という考え方
    • オブジェクトの状態を管理するための方法(属性とカプセル化)
  • 3.2 オブジェクト指向版ジャンケンプログラムの作成
    • プレイヤークラスを作成する
    • カプセル化の鍵となるアクセス修飾子
    • オブジェクトが生まれたときの処理(コンストラクタ)
    • 審判クラスを作成する
    • オブジェクト指向版ジャンケンプログラムの完成

Lesson 4 オブジェクト指向でプログラムを拡張する

  • 4.1 プレイヤーごとに手の出し方を変更する
    • どうすれば手の出し方を変えられるか
    • クラスの継承による差分プログラミング
    • 村田さんも山田さんも同じプレイヤーとみなす
  • 4.2 プレイヤークラスを継承してプログラムを作成する

Lesson 5 ソフトウェアの振る舞いを変更する

  • 5.1 オブジェクトの振る舞いを規定する(インタフェース)
    • ジャンケンの戦略を変更する
    • オブジェクトの振る舞いを規定する
    • CDプレイヤーに見るインタフェース
  • 5.2 プレイヤーに戦略を授ける
    • 戦略を使ってプレイヤーの振る舞いを変更する
    • インタフェースを使ったJavaプログラミング
    • 戦略の実装クラスを作成する
    • 戦略を生成してプレイヤーへ渡す
  • 5.3 さまざまな戦略を試す
    • 新たな戦略を作成する
    • さまざまな戦略に切り替える

Lesson 6 より複雑なソフトウェアの作成

  • 6.1 オブジェクト指向による分析の手順(モデリング手順)
  • 6.2 「ばば抜き」をモデリングする
    • 仕様を決める
    • クラスを抽出する
    • クラス間の関連を洗い出す
    • メッセージのやりとりを考える
    • 各クラスの操作を洗い出す
    • 各クラスの属性を洗い出す
    • 操作の見落としを探す
  • 6.3 ばば抜きプログラムの流れを考える
    • プログラムの実行イメージを決める
    • プログラムの流れを考える
  • 6.4 ばば抜きプログラムを実装する
    • どのクラスから作るか
    • カードクラスの作成
    • 手札クラスの作成
    • テーブルクラスの作成
    • プレイヤークラスの作成
    • 進行役クラスの作成
    • ばば抜きプログラムの世界を創る

Lesson 7 既存のソフトウェアの再利用

  • 7.1 「七並べ」をモデリングする
    • 「七並べ」プログラムの流れを考える
  • 7.2 「ばば抜き」を拡張して「七並べ」を作成する
    • 継承に潜む落とし穴
    • 正しい継承関係,誤った継承関係
  • 7.3 共通部分を分離する(汎化)
  • 7.4 モデリング自体を共通化する(フレームワーク)

Lesson 8 再利用を考慮したソフトウェアの設計

  • 8.1 トランプゲームに共通する要素を抽出する
    • 問題領域を特定する
    • フレームワークの境界を決める
    • ゲームのルールをクラス化する
    • ジョーカーをどう扱うか
  • 8.2 フレームワークを実装する
    • サブクラス化を強制するための手段(抽象クラス)
    • カード・ジョーカークラスの作成
    • 手札クラスの作成
    • テーブルインタフェースの作成
    • ルールインタフェースの作成
    • プレイヤークラスの作成
    • 進行役クラス

Lesson 9 フレームワークを利用したソフトウェア開発

  • 9.1 必要なクラスを洗い出す
    • 当初のモデリング結果の復習
    • 必要なクラスの洗い出し
  • 9.2 フレームワーク上に七並べを実装する
    • FantanTableの作成
    • FantanRuleの作成
    • FantanMasterの作成
    • FantanPlayerの作成
    • 七並べプログラムの完成
    • フレームワーク利用の効果
    • フレームワーク利用版ばば抜きへの挑戦
    • フレームワークをよりよくするために

Appendix

  • A.1 模範解答
  • 終わりに