GW企画の2回目は、クラスの作成を通してJavaを学びます。
この企画の受講状況を各自で管理してもらおうと思い、管理表をGW_firstJava.xlsからダウンロードできますので、使ってもらえると各自の進行具合が分かります。学び終えた場所の「日付」に「Ctrl+;」を「時刻」に「Ctrl+:」を押せば終了した日付と時刻を記憶できます。PDF版も用意してありGW_firstJava.pdfからダウンロードできます。なお、ファイルはウィルスバスターでウィルスチェックしています。
2-1.オブジェクト指向って何?
Javaという言語の特徴で忘れてはいけないのが、オブジェクト指向です。オブジェクト指向という言葉が初めて出てきましたが、説明すると「オブジェクト同士のやり取りにメッセージを使い情報を処理する」事を言います。
オブジェクトは、目的、対象、目的語又は物と訳します。
先程の説明を柔らかく表現すると「物(例えば、社員)同士のやり取りにメッセージを使って情報を伝達する」とも言えます。
2-2.クラスを学ぼう
文章だけで理解するのは大変ですね(私の場合はオブジェクト指向の専門本を数冊読みました)。説明するのも大変ですから、具体的な例題を出し実際にオブジェクトを作成してみましょう。
次の文章からクラス(後で説明しますから心配しないで)を作成します。
社員は、氏名、所属名、住所、電話番号、生年月日及び入社日の要素を持ちます。
文章を眺めると「社員」が主語ですよね。「社員」自体はオブジェクトに該当します。
社員と言うオブジェクトが6つの要素から出来ている事が分かりますね。
では、「社員」をJavaのクラスで表すとどのようになるかは次を見てください。
// 社員クラス
class Employee {
String name; // 氏名
String affiliationName; // 所属名
String address; // 住所
String tel; // 電話番号
String birth; // 生年月日
String joinCompanyDay; // 入社日
}
「class」というキーワードが出てきました(1回目にも出てきましたが覚えていますか、忘れていても気にする事はありませんよ)が、オブジェクトは出てきていないじゃないかと思われるかもしれませんね。
でも、オブジェクトとクラスは密接な関係があるのです。
クラスは、オブジェクト(例えば物)を抽象化して定義した事だと思ってください。
例えば、人間の太郎や次郎をオブジェクトと取られると太郎や次郎を抽象化して人間として定義したのがクラスです。太郎や次郎のどっちかがサルなら人間ではなく動物として抽象化できますね(名前がややこしかったですね)。
先程の文章は、社員と言うオブジェクトを定義していたのでクラスの説明をしていたわけです。
社員のクラスには、定義だけされて中身(例えば、氏名で言えばジャバ太郎のように)が記述されていませんでしたね。
それでは、「社員クラス」の説明に入ります。
プログラム上で「class」というキーワードを指定して「Employee」のように、クラス名を指定すると、クラスを定義できます。
要素は「String name;」のように定義します。
「String」は文字列を扱う場合に指定し「name」と要素名を記述すれば「name」に名前を代入する事が出来るのです。
「//」には、日本語が記述されていて分かりやすいなと思われたかと思います。
プログラム上の「//」以降は、コメントとして扱われプログラマ(プログラム作成者)にだけ効果がありプログラムには無関係に扱われます。
ちょっとずつでも、社員クラスを理解できましたか。
ここで、「要素の行にある「//」の前に「;」は何を意味しているか」を考える方がいるかもしれません。
私の感覚では「;」を日常的に使っている為、説明するのを忘れてしまいました。
というのも「;」は、日本語で言うと「。」であり英語で言うと「.」に相当するからです。
プログラムを解釈するのは、コンパイラと言うソフトウェアですが適切な箇所に「;」がないとコンパイルエラーというエラーで教えてくれますのでまずは見様見真似で覚えてください。
社員クラス最後の説明は、「{」、「}」の2つですね。
コンパイラ(プログラムを解釈するソフトウェア)にどこまでがクラスの定義か教えてあげないといけませんから「{」で始まり「}」で終わる事を教えてあげれば素直にそれに従います。
「}」には「;」が対応して終わりが分かるからというように覚えておきましょう。
2-3.クラスをインスタンス化って?
文章だけでは飽きてしまうので、試せるプログラムから勉強しましょう。次のプログラムを入力してみましょう。
| Employee.java |
|---|
// 社員クラス
public class Employee {
String name; // 氏名
String affiliationName; // 所属名
String address; // 住所
String tel; // 電話番号
}
|
| Sample2_1.java |
|---|
// GW企画 2回目 サンプル1
public class Sample2_1 {
// ここからスタート
public static void main(final String[] args) {
Employee employee = new Employee(); // クラスをインスタンス化
employee.name = "ジャバ太郎"; // 氏名を設定
employee.affiliationName = "GW"; // 所属名を設定
employee.address = "sun"; // 住所を設定
employee.tel = "123456789"; // 電話番号を設定
// 出力
System.out.println("社員情報");
System.out.println("氏名:" + employee.name);
System.out.println("所属名:" + employee.affiliationName);
System.out.println("住所:" + employee.address);
System.out.println("電話:" + employee.tel);
}
}
|
入力できたら、「Employee.java」と「Sample2_1.java」を同じフォルダに作成して以下の手順を行ってください(下のコマンド プロンプト実行例も参考にしながら行うと間違いなくできます)。
(1)「スタート」メニューの「すべてのプログラム」から「アクセサリ」の「コマンド プロンプト」をクリックします。
(2)「コマンド プロンプト」をJavaを使っている事が分かるように「tilte Java」とするとタイトルが「Java」に変ります(必須ではありませんが他にもコマンド プロンプトを使っていると最小化しても何に使っているか直ぐに分かりますから便利です)。
(3)2つのファイルを作成した場所に移動するように設定します。
例、現在「C」ドライブで「D:\GW_Java\2」にファイルがある場合です。
(4)移動できたら「javac Sample2_1.java」を入力し「Enter」キーを押すとコンパイラ(プログラムを翻訳するソフトウェア)がコンパイル(翻訳)すると新に2つのファイル「Employee.class」と「Sample2_1.class」が作成されます。
(5)「java Sample2_1」で今回作成されたプログラムが実行されます。
C:\>title Java C:\>D: D:\>cd GW_Java\2 D:\GW_Java\2>javac Sample2_1.java D:\GW_Java\2>java Sample2_1 社員情報 氏名:ジャバ太郎 所属名:GW 住所:sun 電話:123456789 D:\GW_Java\2>
正しく出力されましたか。この手順はJavaを扱う基本操作なので覚えておいて損はありません。
「Sample2_1」クラスの説明をします。
「 // ここからスタート」というコメントの下に、「public static void main(final String[] args)」が記述されていますよね。
ここから見ていくと、注目すべき場所は「main」というメソッドです。
メソッドとは、クラスの手続きを表したものでオブジェクト指向で言う「メッセージ」に当たります。
「Sample2_1」クラスの手続きである「main」からスタートして処理を実行します。
Employee employee = new Employee(); // クラスをインスタンス化 employee.name = "ジャバ太郎"; // 氏名を設定 employee.affiliationName = "GW"; // 所属名を設定 employee.address = "sun"; // 住所を設定 employee.tel = "123456789"; // 電話番号を設定
を見ると「クラスをインスタンス化」と書いてありますが、インスタンスとは「実体」と訳され「クラスを実体化しろ」という処理をしています。
実体とは「オブジェクト」の事です。
オブジェクトに、氏名、所属名、住所及び電話番号を設定するには、「employee.name」のように書き、社員の氏名を指して「=」で右側の「"ジャバ太郎"」が代入されます。
「"ジャバ太郎"」のように文字列を表すには、「""」で囲みます。
設定が済みましたので画面に出力してみましょう。
文字列を出力するには、「System.out.println()」を使います。
これは、「システムを使い出力する内容は()の中身を(1)行で書き出せ」と言う意味です。
「println」は、print lineの略でプリント行と訳し、文字列を出力後には改行せよという処理です。
Javaには、「System.out.print()」も用意されており、lineが無いので行ではなく「()」の中身が表示され改行されない事に注意しましょう。
後は、「"氏名:" + employee.name」のように、「"氏名:"」に「employee.name」の中身が合わさり画面に出力されます。
今回は、どうでしたか?大変でしたか?
プログラミング入門者向けに書いていますが、実を言うと全7回でJavaの全部を説明するのは紙面上の理由からできていません。その為に凄い速さで解説してます。
今回分からない事があっても気にすることなく一通り残り5回を学びましょう。
例えば、「オブジェクト指向」を知っただけでも進歩ではないですか。
この2回だけの説明でも他の知らない人に比べて優位に立っていると自信を持ってください。
それに無料ですしね。
さて、次回は、「ERD」というデータベースに欠かせない手法を説明します。プログラミングと関係が無いと思うかもしれませんが、Javaを扱うにはERDも立派な勉強範囲です。
お楽しみに!!
分からない点がありましたら、コメントを気軽にして下さい。
又、プログラマーの先輩方、ここをこうした方がいいよという事がありましたら、お手数ですがコメントをしていただくとありがたいです。
参考引用したWeb
・KMG プロ3ゼミ Java入門講座 単位6
・KMG プロ3ゼミ Java入門講座 単位7
参考Web
・オブジェクト指向
・クラス (コンピュータ)