オブジェクト指向

object ...
・物,物体・目的(のもの);対象・<文法>目的語
objective ...
・客観的な・<文法>目的格の
プログラムにおける Object は 構造化されたデータ + そのデータの処理法を記述

データの構造化

例:名簿データ(C)
typedef struct {
	char *FirstName,
	     *LastName,
	     *PresentAddress;
	int   BirthYear,
	      BirthMonth,
	      BirthDay,
	} Person;	
使い方は、だいたい以下のようになる。
...
Person Tsutomu = {"Tsutomu","Kikuchi","Akebono-cho, Kochi",1981,2,16},
       Mariko = {"Mariko","Kikuchi","Akebono-cho, Kochi",1983,10,28},
       Takashi = {"Takashi","Nakamura","Shobuzawa, Fujisawa",1978,8,18};
...
main()
{
...
       printf("Age of %s is %d\n",Tsutomu.FirstName,AgeOf(&Tsutomu))
...
}
...
int AgeOf(Person *person)
{
...
       age=...- (person->BirthYear)...
}
ここで、名簿のデータから年齢を計算するような手続きはデータに何をどのように 入れるかによって決まってくるものであることに気づくと、Person の定義の 中にその手続きを入れた方がよいことがわかる。さらに、データのセットや 変更にもそれぞれ手続きを使うようにする。データとその操作法を記述した プログラムをひとまとめにしたものを、オブジェクトと呼び、オブジェクトの定義 を Class と呼ぶ。

例:名簿(C++)

class Person {
	char FirstName[20],
	     LastName[20],
	     PresentAddress[40];
	int  BirthYear,
	     BirthMonth,
	     BirthDay;
    public:
	viod setFirstName(char aName[]);
	void setLastName(char aName[]);
	...
	char* getFirstName();
	int  age(void);
};

void Person::setFirstName(char *aName)
{
	strcpy(FirstName,aName);
}
...
char* Person::getFirstName(void)
{
	return ((char*)FirstName);
}
int Person::age(void)
{
	int a;

	a = ... - BirthYear ...;
	return(a);
}

main()
{
	Person Tsutomu,Mariko,Takashi;

	Tsutomu.setFirstName("Tsutomu");
	...
	cout << "Age of " << Tsutomu.getFirstName()
		<< "is" << Tsutomu.age();
}

Java は何がうれしいのか

Javaでのプログラミング

例題1このプログラムのコンパイルと実行。
F:\home\papa\java>javac ex01.java
F:\home\papa\java>java Hello
Hello!
class で指定した名前の .class ファイルができることに注意。

Applet プログラミングの例 (class の名前は .java ファイルの名前にする必要がある...らしい。)コンパイルと実行は、

F:\home\papa\java>javac HelloApplet.java
F:\home\papa\java>appletviewer Hello.html
Netscape でみることもできる。
CLASSPATH=.;g:\java\lib\classes.zip;c:\Program Files\Netscape\Navigator\Program\Java\classes
PATH=G:\NETPBM\BIN;G:\JAVA\BIN;C:\PTEX\BIN;C:\DJGPP\BIN;C:\WINDOWS;C:\WINDOWS\COMMAND;C:\MWW\DLL;C:\MWD\MANAGER;C:\THINKPAD;
のように PATH, CLASSPATH の設定をしておく必要があります。

その他の applet もさがして見よう。 プログラムの理解は必ずしもたやすくは 無いが、どこをどう変えると何が起こるか試してみると、Applet Programming の理解が進むであろう。


おまけ

オブジェクト指向の道筋