第3講:もっともシンプルな「時間割表示システム」をつくる(2) |
その3 Javaの用語・概念を理解する |
ここまではプログラミング自体に慣れることを優先してきたため、Javaプログラミングに関するいくつかの大切な用語・概念の説明を省いてきました。ここでは必要と思われる範囲に限定して、それらの用語・概念を整理します。 |
(1)「クラス」と「インスタンス」 もっともシンプルな「時間割表示システム」を作成する段階で、プログラムの中で登場する定型化が可能な情報やそれに対する操作は、まとめて「ひな形」として登録しておくと便利であるということを学びました。Javaプログラミングの世界では、この「ひな形」のことを特に「クラス」と呼びます。 「クラス」は必ず名前すなわち「クラス名」を持ち、基本的にはそのクラスを成り立たせる情報の項目「属性」と、属性やそのほかの情報に対する何らかの操作を記した「メソッド」から成り立っています。例えば「授業表」すなわち「ClassTable.java」なら、ファイル名の「.java」より前の部分「ClassTable」がクラス名で、「int no」「String subject」「String room」の三つが「属性」で、「showData()」が「メソッド」に当たります。 「ClassTable.java」を定義した経過ですでに学んだことだとは思いますが、Javaプログラミングにおいては例えば「授業表」のように、プログラム上で扱う処理の対象を、処理がしやすい形式で「クラス」として定義してゆきます。一度「クラス」として定義してしまえば、あとは「ClassTable.java」がそうであったように、いつでもプログラムの中で再利用が可能になります。 ところで一度定義したクラスの属性やメソッドをプログラムの中で呼び出して利用するためには、クラスというひな形から「実体」を作成する、という手続きを踏みました。このクラスから生み出される「実体」のことを「インスタンス」と呼び、またクラスからインスタンスを作成することを「クラスをインスタンス化する」といいます。「ClassTableクラス」に対しては「個々の具体的な「授業の情報」」と呼んだ「info1」「info2」がそれにあたります。この「インスタンス」にはそれを生み出す元となった「クラス」に記述される「属性」と「メソッド」が備わっており、多くの場合プログラムの中の直接的な命令の対象となります。 |
(2)「メイン・メソッド」 「ClassTable.java」がいわゆる「ひな形=クラス」であるということは理解できたと思われますが、それでは「ClassInfo.java」はどうなるのでしょうか。実はこれもクラスの一つなのです。 先ほどクラスとは基本的に「属性」と「メソッド」から成り立つといいましたが、必ず両方なければいけないかといえば、そうではないのです。「ClassInfo.java」には属性はありませんがメソッドはちゃんとあります。「public static void main(String arg[])」で始まる{}の部分がそれに当たるのです。このメソッドのことを特別に「メイン・メソッド」と呼び、他のメソッドからは区別します。 なぜこの「メイン・メソッド」が特別なのかといえば、それは人間(ユーザー)が直接呼び出す唯一のメソッドだからです。つまりJavaで書かれたプログラムが実行される場合、何をおいてもまず最初にこの「メイン・メソッド」が探されて、その中に書かれた命令だけが実行される、という決まりがあるのです。そのほかのメソッドに書かれている命令は、この「メイン・メソッド」から呼び出されたときに初めて実行されるものなのです。 また、なぜメイン・メソッドはそのクラスのインスタンスを作る前に実行できるのか、という疑問を持った人もいるかもしれません。その答えはメソッド名を登録する記述の部分にあります。「public static void main」ですがその中の「static」がミソです。これはJavaの規則なのですが、名前の前に「static」と書かれて登録されたメソッドは、そのメソッドが属するクラスのインスタンスを作ることなしに利用することが可能なのです。だからメイン・メソッド以外に何の属性もメソッドも持たない「ClassInfoクラス」は、インスタンス化されることがなかったのです。 従ってJavaでプログラムを書くということはすなわち「クラス」を作成することだ、といえますし、また、ユーザーが直接起動するプログラムには必ず「メイン・メソッド」が書かれてなければならないわけです。 |
(3)「クラスライブラリ」 Javaでプログラムを作成する際には、自分で定義して作成したクラス以外に、あらかじめ「クラスライブラリ」に登録されているクラスを利用することができます。 「クラスライブラリ」には便利なメソッドを持ったいろいろなクラスがあらかじめ用意されています。いままで作成したプログラムの中でそれを利用した例を挙げるとすれば、「System.out.print()」がそれにあたります。この命令の意味を簡単にいうと「Systemクラス」に定義されている「printメソッド」を利用するということです(「out」の意味を知るにはさらにいろいろな説明が必要なので省略します)。ただしこの「printメソッド」は、先ほどメイン・メソッドの説明中に登場した「static」と書かれて登録されているメソッドなので、「Systemクラス」のインスタンスを作ることなしに直接利用することができるのです。 |
リンク: <全体のトップページ> | <第3講のトップページ> |-------------------------|-------------------------| <第3講・その1> <第3講・その2> <第3講・その3>