アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

gihyo.jp » 書籍案内 » なぜ,あなたはJavaでオブジェクト指向開発ができないのか

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

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

2004年12月2日発売

小森裕介(エスエムジー株式会社) 著

A5判/296ページ

定価2,289円(本体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 模範解答
  • 終わりに

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

よく読まれている連載

これでできる! クロスブラウザJavaScript入門

JavaScriptはウェブ制作において避けては通れない重要な言語ですが,JavaScriptに苦手意識を持たれている方は少なくないようです。 その最大の原因がクロスブラウザ対応という課題であり,本連載ではクロスブラウザ対応のテクニックを詳細に解説します。

目指せ!iPhoneアプリ開発エキスパート

2008年7月,日本での展開が始まりたくさんのユーザを獲得しているiPhone。その醍醐味の1つは,オリジナルアプリの開発でしょう。本連載では,iPhoneアプリ開発について,基礎から公開の手順まで,じっくり丁寧に解説します。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

C/C++プログラマのためのDTrace入門

よくカーネルのチューニングや解析で活用されるDTraceですが,実はユーザプログラムの開発においても非常に有用です。連載ではC/C++プログラマやテストに関わる方向けにDTraceの使い方を解説します。

Ruby on Railsで作られたプロジェクト管理ツールredMineを使ってみよう!

Ruby on Railsで作られたプロジェクト管理ツールredMineの,環境構築からセッティング,運用方法まで解説します。

先取り! Twitter使いへの道 AtoZ

今,ネットユーザの間で盛り上がりの兆しを見せている「Twitter」。本連載では,どこよりも早く,Twitterの特徴や使い方を紹介します.皆さんも参加して,その魅力を体感してみてください。

インターネット中継するための,配信のキホン

インターネットを介してリアルタイム中継するために必要な,基本的な配信方法を紹介します。

jQueryではじめるAjax

マッシュアップで良く使われる技術にAjaxがありますが,本連載では,jQueryというJavascriptライブラリを使ってAjaxを実装していきます。

OpenCVで学ぶ画像認識

OpenCVという便利なツールを使いながら,プログラミング知識以外の専門知識を必要としない形で,画像認識技術について解説していきます。

小型Linuxサーバの最高峰 OpenBlockS 600活用指南

搭載メモリの増加,CPUクロックの向上など,あらゆる面が強化された期待の新モデルOpenBlockS 600。この記事ではOpenBlockS 600の紹介から,活用するためのさまざまなノウハウを紹介していきます。

連載一覧