-------------------------------------------------------------------------- ■ A ■ -------------------------------------------------------------------------- //前回に行った学生の出席番号と氏名を画面に一覧表示するJavaプログラム@ public class Student1 { public static void main(String[] args){ int no1 = 1; int no2 = 2; int no3 = 3; String name1 = "阿部 健二"; String name2 = "伊藤 幸子"; String name3 = "江田 太郎"; System.out.println(no1 + "\t" + name1); System.out.println(no2 + "\t" + name2); System.out.println(no3 + "\t" + name3); }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- ■ B ■ 同じデータ型(整数グループ、文字列グループなど)でまとめる---配列 -------------------------------------------------------------------------- //配列(同じデータ型をまとめてグループ化した変数)を使うJavaプログラムA public class Student2 { public static void main(String[] args){ int[] no = {1, 2, 3}; String[] name = {"阿部 健二", "伊藤 幸子", "江田 太郎"}; //配列内の先頭番号は0からカウントする System.out.println(no[0] + "\t" + name[0]); System.out.println(no[1] + "\t" + name[1]); System.out.println(no[2] + "\t" + name[2]); }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- ■ C ■ 配列とforの繰り返し文は相性がよく、よく一緒に用いられる -------------------------------------------------------------------------- //さらにfor(繰り返し文)を使うJavaプログラムB public class Student3 { public static void main(String[] args){ int[] no = {1, 2, 3}; String[] name = {"阿部 健二", "伊藤 幸子", "江田 太郎"}; //for文を使うと繰り返し、System.out.println();文を書かなくて済む。 //lengthは配列に用意された特別な変数。配列グループの要素数が自動的に代入される。 for(int i = 0;i < no.length; i++){ System.out.println(no[i] + "\t" + name[i]); } }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- ■ D ■ 複数要素を”ひとかたまり”にした”クラス部品”をつくってみる -------------------------------------------------------------------------- //まとめて扱ったほうがいい要素をひとつのクラスの中に置いて部品化する(mainがないクラスを作る) public class Student { //変数部分 int no; String name; //動作部分 void hyouji(){ System.out.println(no + "\t" + name); } }//classの終わり -------------------------------------------------------------------------- //クラス部品を呼び出して動作するJavaプログラムE public class StudentMain1 { public static void main(String[] args){ Student student1 = new Student(); student1.no = 1; student1.name = "阿部 健二"; student1.hyouji(); Student student2 = new Student(); student2.no = 2; student2.name = "伊藤 幸子"; student2.hyouji(); Student student3 = new Student(); student3.no = 3; student3.name = "江田 太郎"; student3.hyouji(); }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- ■ E ■ -------------------------------------------------------------------------- //DのStudentクラス部品に代入処理を行う特殊な関数を設定し、部品を使う側が楽になるように改良してみる…F public class Student { int no; String name; void hyouji(){ System.out.println(no + "\t" + name); } //クラス部品を呼び出すときに(newされるとき)に最初に動く部分(=コンストラクタ・new生成処理部分) Student(int _no, String _name){ no = _no; name = _name; } }//classの終わり -------------------------------------------------------------------------- //そうするとEのクラス部品を呼び出すMainクラスは以下のように簡単な書き方に変わる…G public class StudentMain2 { public static void main(String[] args){ Student student1 = new Student(1, "阿部 健二"); student1.hyouji(); Student student2 = new Student(2, "伊藤 幸子"); student2.hyouji(); Student student3 = new Student(3, "江田 太郎"); student3.hyouji(); }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- ■ F ■ -------------------------------------------------------------------------- //Mainクラスにクラス部品と配列を使うこともできる public class StudentMain3 { public static void main(String[] args){ //Studentクラス部品を代入できる配列 Student[] student = { new Student(1, "阿部 健二"), new Student(2, "伊藤 幸子"), new Student(3, "江田 太郎") }; for(int i = 0;i < student.length; i++){ student[i].hyouji(); } }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- -------------------------------------------------------------------------- ■ G ■ --> "private"という記号を理解する -------------------------------------------------------------------------- //Gのクラス部品を呼び出すMainクラスであり得ないデータ(マイナスの番号・無文字)を設定してみると、 //データが代入され、おかしな動作結果になってしまう public class StudentMain2 { public static void main(String[] args){ Student student1 = new Student(-1, ""); student1.hyouji(); Student student2 = new Student(-2, "伊藤 幸子"); student2.hyouji(); Student student3 = new Student(-3, ""); student3.hyouji(); }//main()ブロックの終わり }//classの終わり -------------------------------------------------------------------------- //そこで、FのStudentクラスを以下のように変えてみる //変数にprivateを付け、クラス外から直接呼び出せなくし、代入をしているブロック内でデータの検証を行う //Studentクラス部品に代入処理を行う特殊な関数を設定し、部品を使う側が楽になるように改良してみる public class Student { private int no;//privateを付けると、クラス外から直接呼び出せなくなる private String name; void hyouji(){ System.out.println(no + "\t" + name); } Student(int _no, String _name){ if(_no > 0){ no = _no;//ナンバーが正のデータなら代入する }else{ System.out.println("ナンバーに不正なデータが設定されました!再度適切なデータを設定してください."); } if( ! _name.equals("")){//氏名が無文字でないならば代入する name = _name; }else{ System.out.println("氏名に不正なデータが設定されました!再度適切なデータを設定してください."); } } }//classの終わり --------------------------------------------------------------------------