WhileStatement:のようになる.これは,BNF()という形式で書かれている.意味は「:」の左側 の構文要素は右側の構文要素からなるということである.斜体(イタリック)で 書かれたのは非終端記号(Non Terminal Symbol),立体で書かれたのが終端記 号(Terminal Symbol)で,それぞれ変数,文字列定数のようなものだと思って よい.斜体で表された非終端記号は仕様書の別の部分で定義されている.たと えば,Statementは 14.4 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, JDK1.1, JDK1.2と変化するに つれて,標準APIも拡大してきている.
JDK1.1の標準APIは,センターのUnixシステムからは, JDK1.1標準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 をつけるという方針で良い. |
前回までにこの授業のページに現れたサンプルプログラムで,「例外が起き る可能性があるのに例外処理をきちんとやっていなかった」ものを適当に1つ 選び,「適切と思われる例外処理をする」ように書き直し,例外処理をしてい ることがわかるような実行例を書きなさい.