• 検索結果がありません。

補足のための演習問題

ドキュメント内 progj-text.dvi (ページ 71-76)

第 5 章 総合演習 47

7.1 補足のための演習問題

71

7 章 演習問題

void drawSeiTakakukei(Graphics g,int n,int cx,int cy,int r) g: 書き込むGraphicsオブジェクト

n: 頂点の数

cx, cy: 外接円の中心座標 r: 外接円の半径

同様に,星型を描くメソッドを設計して実装してみなさい。

正多角形に外接する円 n = 3

(cx,cy) r

7.1:

正多角形描画メソッドの設計のためのヒント

III

Java の文法(要約)

75

8 章 基本文法

8.1 Java プログラムの構造

8.1.1

クラス

クラスは1つのプログラム単位であるが,複数のクラスを用いて一連の計算を行うこと もできる。既存クラスのメソッドや変数を引き継いだ新しいクラスを定義するにはクラス

名の後に

extends

とし,既存クラス名を指定する。既存のクラスをスーパークラス,引

き継いだクラスをサブクラスといい,このような方法を継承(inheritance)という。

8.1.2

インスタンス

他のクラスのメソッドを利用するには,そのクラスのオブジェクトを生成しておく必要 がある。オブジェクト生成方法は,次の2とおりの方法がある。

クラス名 生成するオブジェクト名 = new クラス名(【初期化用の引数】) ; または

クラス名 生成するオブジェクト名 ;

オブジェクト名 = new クラス名(【初期化用の引数】) ;

オブジェクトを生成するためのメソッドは,クラス名と同じ名前を持っており,クラス内 の変数の初期化などに用いることができる。このメソッドはコンストラクタ(constructor) と呼ばれる。上記のように,コンストラクタは

new

とともに用いる。

8.1.3

メソッド

メソッドも1つのプログラム単位である。古典的な言語で,サブルーチン(

Fortran

な ど),プロシジャ(

Pascal, PL/I

など),関数(

C

言語)などと呼ばれるものと同等の単 位と考えてよい。

メソッドの定義は一般に次の形をとる。

【アクセス修飾子】 戻り値の型 メソッド名 (【引数の型 引数名【,…】】) { プログラム本体 ;

return 【値】 ; // 戻り値の型が void の場合は値は不要 }

引数の値がメソッド内の計算処理により変化する場合,この値が元の呼出し側の値に反 映されて影響を及ぼすことはない。例えば,

3

の値が代入されている引数

a

がメソッドに 渡され,メソッド内でこの値が

10

に変わったとしても,呼出し側での

a

の値は

3

のまま である(値参照(reference by value)であるということ)。一方,引数が配列の場合は,

アドレス参照(reference by address)となるので,メソッド内で配列要素の値を変更 すると,呼び出し側での変更と同じ効果となる。

アクセス修飾子は,どのクラスからでもアクセスを許すものは

public

,自己のクラス からのみアクセスできるものは

private

とする。

当該クラスの親に相当するスーパークラスのメソッドを変更する場合は,同じ名前で引 数や型が同じメソッドを定義することができる。これをメソッドのオーバーライトという。

また,メソッド名が同じで引数の数・型の異なる複数のメソッドも定義できる。これをメ ソッドのオーバーロードという。

ドキュメント内 progj-text.dvi (ページ 71-76)