好評発売中! · 2020-02-27 · oracleとjavaは、oracle corporation...

24
このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Upload: others

Post on 22-May-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

(本体 2,000 円+税)

好評発売中 !

JavaバイブルシリーズJava入門 Java7版

●B5変 371頁●定価(本体2,000円+税)

好評発売中 !

JavaバイブルシリーズWebアプリケーション構築Java7版

●B5変 375頁●定価(本体2,800円+税)

好評発売中 !

HTML演習HTML5対応版

著者:中島省吾●B5変 305頁●定価(本体2,000円+税)

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 2: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

オブジェクト指向プログラミング

Java 7 版

Javaバイブルシリーズ

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 3: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

● OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお

ける登録商標です。

● Windowsは米国Microsoft Corporationの米国およびその他の国における登録商標です。

● その他記載された会社名およびロゴ、製品名などは該当する各社の商標または登録商標です。

● 本書では™および®の記載は省略しました。

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 4: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

はじめに

本書は、近年注目を浴びているオブジェクト指向の概要と、その実現方法のひとつとして普及し始めた

Javaプログラムについてまとめたものです。

オブジェクト指向は名称こそある程度ポピュラーになりましたが、その応用範囲の広さもあり、いまひとつ

捉えどころの無いものになっています。本書では可能な限り平易な表現とサンプルを使用することで、オ

ブジェクト指向のひととおりのトピックを理解してもらうことを目的にしました。本来であれば、本書で取り

上げるいくつかの項目だけで十分一冊の解説書になり得るボリュームです。本書によりオブジェクト指向

の世界に興味を持たれた方は、ぜひ次のステップに進んでください。

本書の各章では以下の項目を学びます。

第1章―学習を始めるにあたって

第2章―オブジェクト指向とは何か

第3章―Javaプログラムの基本

第4章―Javaプログラムの概念

第5章―Javaプログラムの活用

第6章―Javaプログラムの形態

第7章―ステップアップ演習

第8章―Java SE 7の新機能

本書が少しでもみなさんの勉強の手助けになれば幸いです。

iこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 5: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

標準学習時間

サポート情報/解答例/サンプルプログラム

本書に記載された項目に関する最新情報や、確認問題解答例、サンプルプログラムなどを、必要に応じ

て公開しています。

http://www.scc-kk.co.jp/scc-books/support/B-363/support.html

標準学習時間

内容 範囲 学習時間(1時限=90分)

1. 学習を始めるにあたって 1ページ~ 14ページ 2.0時限

2. オブジェクト指向とは何か 15ページ~ 32ページ 3.0時限

3. Javaプログラムの基本 33ページ~ 83ページ 5.0時限

4. Javaプログラムの概念 85ページ~ 187ページ 12.0時限

5. Javaプログラムの活用 189ページ~ 311ページ 12.0時限

6. Javaプログラムの形態 313ページ~ 331ページ 3.0時限

7. ステップアップ演習 333ページ~ 391ページ 8.0時限

8. Java SE 7の新機能 393ページ~ 402ページ 3.0時限

総合演習 403ページ~ 414ページ 15.0時限

合計 65.0 時限 

学習時間はあくまでも目安です。理解度に合わせて、さらに時間をかけて学習しても構いません。逆にこ

の学習時間はプログラミング経験のない読者を想定していますので、他の言語を学習した経験のある人

は、もっと早く学習を進められるはずです。

本書の例題を参考に各自でプログラムを変更し、さまざまなパターンを試してみるとより理解が深まると思

います。

プログラムのソースコード

本書ではソースコードがどこにあるかがひと目でわかるように、ソースコードに背景色を付けています。ま

た、ソースコードで使用する文字で紛らわしいものに関しては以下のように区別しやすい形にしてあります。

表記 意味

1 数字の1(イチ)

l 英小文字のl(エル)

I 英大文字のI(アイ)

0 数字の0(ゼロ)

o 英小文字のo(オー)

O 英大文字のO(オー)

iiこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 6: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

ナビゲーションマップ

ナビゲーションマップ

本書の構成は、各章を順番に学習することでJava言語の文法とオブジェクト指向プログラミングのしく

みが無理なく理解できる流れになっています。また本書の特徴として、順番に進めていけば各学習項目が

ひとつずつ出てくるようになっています(例題の中に学習していない項目が極力入らないようにしてありま

す)。したがって基本的には以下に示す「標準モード」で学習を進めてください。

前提知識―プログラミング経験なし

学習目標―Java言語の基本文法とオブジェクト指向プログラミングのしくみを理解する

第6章

第7章

第8章

アプリケーション以外のJavaプログラムの形態を学習します

ひとつのテーマを通してこれまでの学習項目を復習します

Java SE 7で追加された機能について学習します

総合演習 GUIを含むデータベースアプリケーションを作成します

第1章

第2章

第3章

第4章

第5章

学習の準備とJavaプログラムの動作原理を学習します

オブジェクト指向の特徴を学習します

Java言語の基本文法を学習します

オブジェクト指向としての基本概念を学習します

Javaを活用するための項目を学習します

iiiこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 7: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

目次

目次

第1章 学習を始めるにあたって................................................................................ 1

1.1 Java SDKのインストールと環境設定.......................................................................... 2

1.2 Javaプログラムの作成と実行の方法 ......................................................................... 5

1.3 Javaプログラムの動作原理..................................................................................... 11

第2章 オブジェクト指向とは何か............................................................................ 15

2.1 オブジェクト指向出現の背景 .................................................................................... 16

2.2 オブジェクト指向概要............................................................................................... 18

2.3 オブジェクト指向の特徴とメリット............................................................................... 21

確認問題01.................................................................................................................. 31

第3章 Javaプログラムの基本............................................................................... 33

3.1 基本的なJavaプログラムの構造 .............................................................................. 34

確認問題02.................................................................................................................. 39

3.2 型と定数/変数....................................................................................................... 40

確認問題03.................................................................................................................. 45

3.3 文字と文字列 .......................................................................................................... 47

確認問題04.................................................................................................................. 49

3.4 配列........................................................................................................................ 50

確認問題05.................................................................................................................. 54

3.5 演算子 .................................................................................................................... 55

確認問題06.................................................................................................................. 65

3.6 制御構造................................................................................................................. 67

確認問題07.................................................................................................................. 82

第4章 Javaプログラムの概念............................................................................... 85

4.1 Javaプログラムにおけるクラス................................................................................ 86

4.2 newを使用したインスタンスの生成.......................................................................... 91

確認問題08.................................................................................................................. 93

4.3 複数のクラスを使用する.......................................................................................... 95

確認問題09.................................................................................................................. 97

ivこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 8: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

目次

4.4 引数/戻り値を使用する......................................................................................... 99

確認問題10................................................................................................................ 104

4.5 クラスメソッド........................................................................................................ 106

確認問題11................................................................................................................ 111

4.6 インスタンス変数とクラス変数 ............................................................................... 113

確認問題12................................................................................................................ 116

4.7 オーバーロード...................................................................................................... 118

確認問題13................................................................................................................ 123

4.8 継承..................................................................................................................... 125

確認問題14................................................................................................................ 133

4.9 オーバーライド ...................................................................................................... 137

確認問題15................................................................................................................ 143

4.10 抽象クラス............................................................................................................ 145

確認問題16................................................................................................................ 149

4.11 インタフェース....................................................................................................... 153

確認問題17................................................................................................................ 162

4.12 ポリモルフィズム................................................................................................... 165

確認問題18................................................................................................................ 174

4.13 コンストラクタ....................................................................................................... 178

確認問題19................................................................................................................ 185

第5章 Javaプログラムの活用............................................................................ 189

5.1 パッケージ............................................................................................................ 190

確認問題20................................................................................................................ 195

5.2 インポート............................................................................................................. 198

確認問題21................................................................................................................ 201

5.3 修飾子と可視性.................................................................................................... 202

確認問題22................................................................................................................ 210

5.4 例外処理.............................................................................................................. 213

確認問題23................................................................................................................ 225

5.5 スレッド処理......................................................................................................... 227

確認問題24................................................................................................................ 234

5.6 コレクションクラスとGenerics............................................................................... 239

確認問題25................................................................................................................ 257

vこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 9: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

目次

5.7 キーボード入力とファイルI/O ................................................................................. 261

確認問題26................................................................................................................ 270

5.8 データベースアクセスとJDBC ................................................................................ 272

確認問題27................................................................................................................ 290

5.9 GUIとイベント処理................................................................................................ 294

確認問題28................................................................................................................ 309

第6章 Javaプログラムの形態............................................................................ 313

6.1 アプレット............................................................................................................. 314

確認問題29................................................................................................................ 325

6.2 サーブレット.......................................................................................................... 328

第7章 ステップアップ演習.................................................................................. 333

ステップアップ演習1 クラスの定義.............................................................................. 335

ステップアップ演習2 インスタンスの生成..................................................................... 338

ステップアップ演習3 アクセッサを装備したカプセル化.................................................. 340

ステップアップ演習4 継承による拡張.......................................................................... 352

ステップアップ演習5 インタフェースの追加................................................................... 364

ステップアップ演習6 オーバーロード/オーバーライドの実現 ........................................ 379

第8章 Java SE 7の新機能 ............................................................................... 393

8.1 Java SE 7............................................................................................................ 394

8.2 数値リテラル表現の拡張 .................................................................................... 395

8.3 switch文の文字列判定......................................................................................... 397

8.4 Genericsの省略記法 ........................................................................................... 398

8.5 例外処理の改善................................................................................................... 399

8.6 リソース管理用構文の追加................................................................................. 401

総合演習............................................................................................................... 403

索引 ................................................................................................................ 415

viこのファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 10: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章

学習を始めるにあたって

これからみなさんと一緒にJavaによるプログラミングを学習していきますが、プロ

グラミングの勉強というのは実際に動かしてみないと楽しくありません。そこでまず

最初にこれから本書の中で使用するJavaの開発環境および実行環境について

説明します。

現在、Javaによるプログラム開発にはさまざまなツールが存在します。本書ではこ

の中から比較的手に入りやすく、かつ無償で使用することができるJDKというツー

ルを使用します。Java SDKというのはJavaの開発元であるオラクル社が提供

しているJavaの開発および実行をサポートするプログラム群であり、現在さまざま

なOS用のものが提供されています。また、よりよいものにするため日々バージョン

アップが続けられています。

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 11: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

それでは実際にJavaの環境設定を始めましょう。最新のJava SDKはJava テクノロジーのホームペー

ジ(http://java.com)からダウンロードできます。ここにはMicrosoft Windows(以降Windows)

をはじめとして、さまざまな種類のOS用にJavaの開発環境が用意されており、無償でダウンロード

でき使用することができます。今回使用するWindows用の開発環境をセットにしたファイル名は

jdk-XXXXXX-windows-i586.exe(32bit版)または、jdk-XXXXXX-windows-x64.exe(64bit版)と

いう形式になっており、XXXXXXの部分にはバージョンが入ります。

このファイルをダウンロードしてデスクトップ上に置いてください。次にこのファイルをダブルクリックし実行

します。そうするとインストールプログラムが起動するはずです。インストールにはいくつかのオプションが

選択できますが、ここではすべてデフォルトのまま、『次へ』ボタンで進むことにしましょう。

みなさんはWindows用のプログラムというと、ワードやエクセルのようなものを想像すると思います。とこ

ろがこのJava SDKはWindowsのコマンドプロンプトという機能の中で実行されます。ワードやエクセ

ルと比較すると地味な画面ですが、しばらく我慢してください。

さてこのコマンドプロンプトの画面でプログラムを実行するには、いくつかの環境設定が必要となります。

その中でも最低限行っておかなければいけないのが環境変数の設定です。つまりJava SDKのプログラ

ムの場所をWindowsに教えてあげる必要があります。

Windows-XPの場合はコントロールパネルを開き、システムというアイコンをダブルクリックしてください。

するとシステムのプロパティというウィンドウが開くはずです。

これからみなさんと一緒にJavaによるプログラミングを学習していきます。まずはJavaを使用してプログラムを作成するための環境設定についてお話しします。

第1章 学習を始めるにあたって2

1Java SDKのインストールと環境設定1.1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 12: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

1.1 Java SDKのインストールと環境設定

次に「詳細設定」のタブをクリックし、そのページの[環境変数]をクリックしてください。

「システム環境変数」のリストから「Path」と書かれている行を選択し、[編集]をクリックします。

変数値の行の最後に、あなたのハードディスクにインストールされたJava SDKの場所を追加します。た

とえば今回インストールしたバージョンが「1.7.0_04」であったとすると、追加する文字列は、

C:¥Program Files¥Java¥jdk1.7.0_04¥bin

となります。このとき注意することは、既に入っている文字列を消してしまわないことと、追加する文字列

の前に1文字「;」を入れることです。この「;」は各文字列の区切りを意味します。

3

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 13: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

これでひととおりの設定が完了しました。後はそれぞれのウィンドウを『OK』ボタンで閉じれ

ば終了です。Javaによるプログラム開発ができるようになっているはずです。

設定が正しく行われたことを確認する方法をご紹介しましょう。再起動後、コマンドプロンプトの画面で

javacと入力し、[Enter]キーを押してみてください。

上記の様な説明の画面が出れば成功です。さあプログラムの勉強を始めましょう。

もし以下の様な画面になった場合は、設定がうまくいっていないようです。もう一度確認してみてください。

※ PATHの値が正しく設定されていてもこの状態になる場合は、Java SDKがPATHに設定した

C:¥Program Files¥Java¥jdk1.7.0_04¥bin

以外の場所にインストールされた可能性があります。C:¥Program Filesではなく、C:¥の下にあるかもし

れません。インストールされている場所が確認できたら、その場所をPATHに設定してください。

4

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 14: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

前節で準備した環境を使用して、実際にJavaのプログラミングを行い、実行してみましょう。Javaによ

るプログラムの実行までの流れは以下のとおりであり、特別複雑なものではありません。

それでは実際にやってみましょう。

まず①の「エディタを使用し、ソースプログラムを作成」です。Javaのプログラムだからといってこのエディ

タでないといけないというものは特にありません。みなさんが使い慣れたもので結構ですし、特になければ

Windows標準のメモ帳でも構いません。また現在ではフリーで提供される優れたエディタもたくさんあり

ます。これを機会に新しいエディタに挑戦してみるのもよいでしょう。メモ帳と比べると行番号を表示した

り、キーワードを反転表示するなどの機能が充実しています。

エディタを使用し、 ソースプログラムを作成

コンパイルを行い、 バイトコードを作成

エラーをチェックする

コマンドプロンプトで バイトコードを実行

エラーあり

エラーなし

1

2

3

4

実行環境の設定をプログラムの作成とコンパイルを通して確認していきましょう。また実際にプログラムを実行し、その結果を確認してみましょう。

1.2 Javaプログラムの作成と実行の方法 5

1Javaプログラムの作成と実行の方法1.2

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 15: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

では以下のプログラムを打ち込んでみてください。

◆ソースRensyu101_01

public class Rensyu101_01{

public static void main( String[] args ){

System.out.println( "Javaの世界へようこそ!" );}

}

各行の意味はここでは考えないことにしましょう。気を付けることは2つです。Javaのプログラムでは、大

文字と小文字が区別されますので上記のとおり入力してください。もうひとつは全角と半角(日本語の

ON/OFF)にも気を付けてください。プログラムは原則として半角(日本語はOFF)で入力します。上記の

例では「Javaの世界へようこそ!」だけを全角で入力します。前後にある「"」も半角ですから注意してくだ

さい。

メモ帳を使った方はこんな感じでしょうか。

できあがったらファイルとして保存しましょう。その前にここで保存する場所と名前を説明します。まず、保

存する場所ですが、これからたくさんのプログラムを作っていきますので、学習専用の場所を作りましょう。

場所はディスク中のどこに作っても構わないのですが、その場所へ移動するときに楽なように「C:\java」

にしましょう。

6

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 16: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

1.2 Javaプログラムの作成と実行の方法

「マイコンピュータ」⇒「ローカルディスク(C:)」を開き、右クリックの「新規作成」⇒「フォルダ」で作成しまし

ょう。

またもうひとつの方法として、「スタート」⇒「すべてのプログラム」⇒「アクセサリ」⇒「コマンドプロンプト」で

「md c:\java」とコマンドを打っても同様にできます。

7

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 17: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

次に保存するファイル名ですが、実はJavaプログラムには名前の付け方に決まりがあります。詳細はこ

のあとで解説しますので、今回は「Rensyu101_01.java」としてください。文字はすべて半角で、かつ大

文字小文字の区別もこのとおりにしてください。場所は先ほど作った「C:¥java」にします。メモ帳の場合

はこんな感じでしょうか。

ただしメモ帳の場合は気を付けなければいけないことがひとつだけあります。それはメモ帳というエディタは、

デフォルトの設定のままでファイル名だけを指定すると、ファイル名の最後に自動的に「.TXT」を付けてし

まう場合があることです。これを防ぐためにファイル名を入力したら、「ファイルの種類」を「すべてのファイ

ル」に変更してから保存をしてください。

できあがったらマイコンピュータからたどって[C:\java]フォルダの中身を確認してみましょう。

それからもうひとつ作業があります。今後はこのフォルダの中にファイル名が同じで、拡張子だけが異なる

ファイルがたくさん作成されることになります。もしあなたのパソコンがファイルの拡張子を表示しない設定

になっている場合は、あとで区別がつきにくくなるため、表示を行うように変更しておきましょう。変更する

手順は次のとおりです。

8

1

ここを変更

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 18: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

1.2 Javaプログラムの作成と実行の方法

先ほど作成した「C:\Java」のフォルダを開き「ツール」⇒「フォルダオプション」を選択します。「表示」のタブ

をクリックし、「詳細設定」の中の「登録されている拡張子は表示しない」のチェックをはずし[OK]をクリッ

クします。

これでフォルダの表示が次のようになるはずです。

それではコンパイルに入りましょう。

まず「コマンドプロンプト」を起動し、先ほどプログラムの保存を行った「C:\java」のディレクトリへ移動し

てください。JavaプログラムのコンパイルはJavac.exeというプログラムで行います。「コマンドプロンプト」

で以下の行を入力して[Enter]キーを押します。

javac Rensyu101_01.java

9

1ここをはずす

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 19: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

このようにとても殺風景ですが、何も表示されずにプロンプトが出れば成功です。

いよいよ次は実行します。実行は以下の行のように入力して[Enter]キーを押します(以降、[Enter]キー

を押す操作説明は省略)。

どうでしょうか、「Javaの世界へようこそ!」が表示されましたか? 簡単なプログラムですが、あなたが作っ

た記念すべき最初のJavaプログラムです。

以上で準備は終了です。このあとは今作成したJavaプログラムの動作のしくみを紹介します。

java Rensyu101_01

10

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 20: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

1.3 Javaプログラムの動作原理

Javaのプログラムにはいくつかの種類が存在します。アプリケーション、アプレット、サーブレットなどで

す。これらはそれぞれ用途によって使い分けられます。コンピュータ上で単独のプログラムとして動作する

アプリケーション。各コンピュータ上のブラウザの中で動作するアプレット。さらに別のマシン上で待機し、

要求を受け付け処理を実行し、結果をネットワーク経由で出力するサーブレット。本書ではこの中のアプ

リケーションを中心に解説します。

ところでそもそもなぜJavaはこれほど注目を浴びるようになったのでしょうか。いくつかの理由が考えられま

す。

• オブジェクト指向を無理なく実現できる

• 現在のインターネット社会に適している

• ハードウェアアーキテクチャに依存しない

• コンピュータ以外の家電製品でも動作する など

列挙すればキリがありません。ここではこの中のひとつ、ハードウェアアーキテクチャに依存しないという

ことがらをとおして、Javaプログラムの動作のしくみを勉強しましょう。

コンピュータというものは、機械そのものであるハードウェアと、それを制御するOS(オペレーティングシス

テム)というプログラムの組み合わせで動作しています。現在のOSの代表はWindowsでしょう。ワープ

ロや表計算ソフト、DVDソフトの再生やゲームまで、すべてはOSの制御下で動作しているのです。みな

さんが作ったプログラムも同様にこのOSに制御されて動作します。

11

1Javaによるプログラミングの勉強を始める準備は整いましたか。ではさっそくプログラミングに入りたいところですが、その前にJavaのプログラムについてもう少し勉強しましょう。

Javaプログラムの動作原理1.3

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 21: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

ここに2台のパソコンがあります。この2台はメーカーが異なるので、アーキテクチャ(パソコンの作り方や

動作のしくみ)も異なります。それをこのように表しましょう。

アーキテクチャの違いを図の上部 と で表すことにします。

これら2つのパソコンにも前述のOSが必要です。またOSはそれぞれのパソコンのアーキテクチャに一致

していないとうまく動いてはくれません。

そしてプログラムを動作させます。A社用、B社用それぞれこうなります。

2つのプログラムはどちらも「プログラムX」、同じ機能のプログラムでありながら形が違う(つまり作り直す

必要がある)ことに注目してください。

その後Windowsが登場すると状況が変わります。2つのパソコンのイメージはこうです。

A社のパソコン B社のパソコン

A社用のWindows B社用のWindows

A社のパソコン B社のパソコン

A社のOS B社のOS

プログラムX プログラムX

A社のパソコン B社のパソコン

A社のOS B社のOS

A社のパソコン B社のパソコン

12

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 22: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

1.3 Javaプログラムの動作原理

ここにやはりプログラムを載せてみます。

今回もプログラムYの形に注目してください。2つのパソコンのOSは共通です。ただしOS自体は各社の

パソコンに合わせる必要がありますが、それはプログラマであるみなさんには関係ありません。一度

Windows用にプログラムを書けば、A社、B社どちらのパソコンでも動きます。

しかし世の中で稼動しているOSはWindowsだけではありません。何億円もするようなメインフレームと呼

ばれるスーパーコンピュータでは、UNIXというOSを採用しているものがほとんどです。このUNIXの仲間

はLinuxという名称であなたのパソコンでも動きます。またグラフィックデザインの世界ではアップル社の

MacOSが活躍しています。これらを図で表すと次のようになります。

このように先ほどのプログラムYはC社のパソコンでは動作しません。しかしここに救世主が登場します。

それがJavaなのです。ただしJavaはプログラム言語でありOSではありません。実はJavaというプログ

ラムの実行環境に秘密があるのです。JavaというプログラムはVM(バーチャルマシン)と呼ばれる環境の

上で動作するのです。それではこのバーチャルマシンを説明しましょう。バーチャルマシンとは簡単にいえ

ば、OSとプログラムの間に位置し、各種のOSの差異を吸収するものです。以下の図を見てください。

やはりVM自体は各OSの上で稼動するものですから、面倒ですが各OS用に用意しなければなりません

A社のパソコン B社のパソコン

A社用のWindows B社用のWindows

Windows用のVM Windows用のVM

C社のパソコン

C社用のUNIX

UNIX用のVM

A社のパソコン B社のパソコン

A社用のWindows B社用のWindows

プログラムY プログラムY

C社のパソコン

C社用のLinux

プログラムY

A社のパソコン B社のパソコン

A社用のWindows B社用のWindows

プログラムY プログラムY

13

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 23: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第1章 学習を始めるにあたって

(しかしこれもあなたの作業ではありませんので、気にする必要はないでしょう)。これによってあなたが作

るプログラムは唯一、VMの仕様である に合わせて作ればよいのがわかりますよね。

これによってただひとつのプログラム(プログラムZ)が、次の図のように異なるパソコン、異なるOS上で

動作するということが実現されるのです。

最後にVMの説明をもう少しお話ししておしまいにしましょう。

VMはJavaプログラムの実行環境です。プログラムというものは、人間が作成した時点ではソースプロ

グラムと呼ばれ、人間には理解できるのですがコンピュータには理解できません。したがってこのソースプ

ログラムをコンパイル(翻訳と呼ばれます)という作業を行いコンピュータが理解できる形に変換します。

この変換されたプログラムをオブジェクトプログラムまたはエグゼキュートプログラムと呼びます。Javaのソ

ースプログラムはコンパイルしてもオブジェクトプログラムにはならず、コンピュータが理解できる一歩手前

の形で止められるのです(これをバイトコードと呼びます)。このバイトコードはVMが理解できる形になって

いるため、どのOS用のVMでも共通の形になります。

あとは、VMがこのバイトコードを各コンピュータ、各OSが理解できる形に再変換することでプログラム

が実行されるのです。したがってプログラマはVM用に一度だけJavaのプログラムを作成すれば、ノート

パソコンからスーパーコンピュータまでさらにOSを気にすることなく実行できるのです。この原理をWrite

Once, Run Anywhere(一度書けばどこででも動く)と呼びます。

どうですかJavaの素晴らしさが、わかってもらえたでしょうか? では次にJavaのプログラムを理解する上

で必要不可欠なオブジェクト指向という考え方を勉強しましょう。

A社のパソコン B社のパソコン

A社用のWindows B社用のWindows

Windows用のVM Windows用のVM

C社のパソコン

プログラムZ プログラムZ プログラムZ

C社用のUNIX

UNIX用のVM

14

1

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。

Page 24: 好評発売中! · 2020-02-27 · OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国にお ける登録商標です。 Windowsは米国Microsoft

第2章

オブジェクト指向とは何か

それではオブジェクト指向についての学習を開始しましょう。オブジェクト指向はコ

ンピュータ関連の項目としては比較的新しいものといえるでしょう。

しかしその進歩と発展には目を見張るものがあります。現在のコンピュータ界には

オブジェクト指向の基礎技術、応用技術などがあふれています。その中にはインタ

ーネットや携帯電話など、みなさんが無意識のまま既に利用しているものも数多く

存在しています。

オブジェクト指向を使用したプログラミングのスタイルは、従来のプログラムにはな

い特徴があります。本章ではその具体的な特徴を学習する前に、オブジェクト指

向というアプローチ(考え方)の全体像をお話ししたいと思います。まずは軽い気

持ちでスタートしてください。

このファイルは「○○○○○学校」の「[email protected]」にライセンスされています。