WhileStatement:のようになる.これは,BNF(Backus Naur Form)という形式で書かれている. 意味は「:」の左側の構文要素は右側の構文要素からなるということである. 斜体(イタリック)で書かれたのは非終端記号(Non Terminal Symbol),立体で 書かれたのが終端記号(Terminal Symbol)で,それぞれ変数,文字列定数のよ うなものだと思ってよい.斜体で表された非終端記号は仕様書の別の部分で定 義されている.たとえば,Statementは 14.5 Statementsで,以下のように定義されている.
while (
Expression)
Statement WhileStatementNoShortIf:
while (
Expression)
StatementNoShortIf
Statement:このように,構文要素に非終端記号として名前をつけていって,最終的には終 端記号に至るという形で,言語の文法(syntax)が定義される.言語の意味 (semantics)の定義では,BNFのような標準的な方法はない.操作的意味論,表 示的意味論などいくつかの数学的な定式化があるが,どれも容易ではないので, 論文の中以外ではあまり見掛けることはない.このJavaの言語仕様のように自 然言語(英語,日本語)で表現するのが一般的である.
StatementWithoutTrailingSubstatement
LabeledStatement
IfThenStatement
IfThenElseStatement
WhileStatement
ForStatement
package jp.ac.u_tokyo.ecc.ktanaka;のように定義しておくと,その中で
public class Soko{ }のように定義したクラスの正式名は,jp.ac.u_tokyo.ecc.ktanaka.Soko となる.
package jp.ac.u_tokyo.ecc.tt97170;として定義した Sokoクラス jp.ac.u_tokyo.ecc.tt97170.Soko と区別するこ とができる.Java言語の基本的なライブラリ(標準 API)を除くと,このように クラスの作者のメールアドレスと関連づけたパッケージ名を使うことが推奨さ れている.ただし, このように書くと CLASSPATHで指定したディレクトリから 相対パス で jp/ac/u_tokyo/ecc/tt97170 となるディレクトリに置かれること を意味するので, 小さいプログラムではパッケージなどは作らなくても良い.
Java言語で標準的に使うことのできるクラスは標準API(Application Interface)と呼ばれる.言語の標準が,JDK1.0, 1.1, 1.2, 1.3 と変化するに つれて,標準APIも拡大してきている.
Java SDK 1.4の標準APIは, Java2 Platform, Standard Edition, 1.4.0 API仕様 で 見ることができる.各クラスは,用途に応じて様々なパッケージに入っている. たとえば Stringは java.lang という名前のパッケージ,BufferedReaderは java.ioという名前のパッケージに属している.標準API中のBufferedReader は特になにもしなくても, java.io.BufferedReader という名前で用いることが できるが,ソースファイルの最初に
import java.io.*;のように書いておくことによって,BufferedReaderという短い名前で使うこ とができる.なお,java.langというパッケージについてだけは明示的に
import java.lang.*;としなくても短い名前を使うことができる.
オブジェクト指向の概念として,重要なものとして情報の隠蔽がある.ある
クラスを使う(インスタンスを作る,サブクラスを作る)プログラマ(元のクラ
スを作ったプログラマと別人である可能性が高い)に,想定しない使われ方を
されないように,データフィールドやメソッドの一部をクラス外からは使えな
くするというものである.この制限を外すための宣言が,データフィールドや
メソッドの前につけた public である.
Java言語は教育用言語として開発された Pascalとは違って,大規模なプログ ラムを作るプロ向けに開発された言語なので,このような細かい機能が用意さ れているが,プログラミング入門のレベルでは,すべてのデータフィールドと メソッドに public をつけるという方針でも良い.しかし,プロを目指す人は 必要な所以外では(それを理解するのは大変だが) public はつけないよう,心 掛けたい. |