次へ| もどる| もくじ|

クラス

クラスを飛び越えてGUI

●javaのプログラミングはクラスを作ることです。その詳しい説明をスキップしてGUIの設計にきました。無理といえば無理なのですが、GUIはプログラミングをオブジェクト指向へ向かわせた原因になったものですから、むしろここからはじめた方が具体的にわかりやすいかもしれません。

クラスの一般的な形

●一般的なクラスは次のような形をしています。いままでのプログラムでは、クラスの宣言と main だけがあるものを扱いましたが、そのほかにフィールドとコンストラクタ、メソッドなどがでてきています。

// インポート宣言
import javax.swing.*;

// クラス名
class ClassDemo {
	// フィールド(変数)
	private String name;
	
	// コンストラクタ
	public ClassDemo(String str) {
		name = str;
	}
	
	// メソッド
	public String getName() {
		return name;
	}

	// main
	public static void main(String[] args){
		// オブジェクト dm1 を生成
		ClassDemo dm1 = new ClassDemo("bob");
		System.out.println(dm1.getName());

		// オブジェクト dm2 を生成
		ClassDemo dm2 = new ClassDemo("alice");
		System.out.println(dm2.getName());
	}
}

●プログラムは動きますが、意味はほとんどありません。

解説

インポート宣言 import javax.swing.*;
他(ここに書いた以外)のクラスのフィールドやメソッドを使うのでそこも参照してくれと言う指示です。自分の書いたクラス以外の機能も使えると言うことです。基本的な機能はインポートしなくても使用できる様になっています。この例ではインポートはなくてもいいのですが、例として書きました。
クラス名 class ClassDemo {
クラスに名前を付けます。このように内容がわかりやすいように単語をくっつけた形の名前を付ける習慣です。各単語の第1文字を大文字にすることで単語の区切りをつけています。特にクラス名の第1文字は英字の大文字にします。これはクラス名であることをわかりやすくするためです。ファイル名はクラス名に .java をつけたものにしなければなりません。
フィールド private String name;
private というものが書き加えられていますが、要するに String name; と文字列変数 name を宣言しています。ここに書く変数はこのクラスの中で一貫して使用される重要な変数です。
コンストラクタ public ClassDemo(String str)
クラス(設計図)からオブジェクトを作ります。オブジェクト名はクラス名と同じでなければなりません。
メソッド public String getName() {
getName という名前のメソッドを定義しています。このクラスに与えられた機能です。やはりこのように内容がわかりやすいように単語をくっつけた形の名前を付ける習慣です。各単語の第1文字を大文字にすることで単語の区切りをつけています。しかし、メソッド名の第1文字だけは英字の小文字にします。これはクラス名とメソッド名を区別するためです。
main public static void main(String[] args){
プログラムが実行されると、まず main から始まります。メソッドの一つとも考えることができますが、このクラスの外にあっても問題ありません。
もともとプログラムのメインとなる部分でした。もちろんそのように書くこともできますが、クラス内のメソッドや他のクラスに実際の処理をまかせてスタートの処理しかここに残さない書き方の方がオブジェクト指向らしいアプローチです。

プログラムの動作

●プログラムの動作はmainから始まり、コンストラクタやメソッドが呼び出されて作業が進んでいく。

もくじ

聖愛高等学校
http://www.seiai.ed.jp/
Last Modified