report#5
ProgII/e045732
Report#1
Report#2
Report#3
Report#4
Report#5
Report#6
Report#7
Report#8
Belonging-----Information Engineering Section
Student ID---045732K
Name----------Shingo Tamaki
Date------------2005/12/05(MON)
1.課題の紹介
- 講義資料〜オブジェクト指向プログラムJavaI〜のサンプルプログラムについ
て考察せよ。
- 各自オリジナルのサンプルプログラム(すべての講義内容を含んだ、1つの
コード)を作成し考察せよ。
2.ソースプログラム
- Classroom.java
class Test {
String subject; // フィールド 教科名
int point; // フィールド 得点
void setPoint(String s, int p) {
// 得点を設定するメソッド
subject = s;
point = p;
}
String getPoint() { // 1科目の得点を得るメソッド
return subject + ":" + point;
}
}
class Student {
int id; // フィールド 生徒の番号
String name; // フィールド 名前
int subnum; // フィールド 教科名
Test[] test;
Student(int i, String n, int s) {
// コンストラクタ
id = i;
name = n;
subnum = s;
test = new Test[s];
for(int j = 0; j < s; j++)
test[j] = new Test();
}
String getName() { // 名前を得るメソッド
return id + ":" + name;
}
int getGrade() { // 総合点を得るメソッド
int sum = 0;
for(int i = 0; i < subnum; i++)
sum += test[i].point;
return sum;
}
// メソッドのオーバーロード
int getGrade(int a) { // 評価を得るメソッド
int base = 100 * subnum / a;
int rank = getGrade() / base + 1;
return rank;
}
void printScore() { // 成績を表示するメソッド
System.out.println(getName());
for(int i = 0; i < subnum; i++)
System.out.print(test[i].getPoint() +
" ");
System.out.println();
System.out.println("総合点" + getGrade());
int rank = 5;
System.out.println(rank + "段階評価"
+ getGrade(rank));
System.out.println();
}
}
class Classroom {
public static void main(String[] args) {
Student taro = new Student(12, "taro", 3);
taro.test[0].setPoint("国語", 95);
taro.test[1].setPoint("数学", 83);
taro.test[2].setPoint("英語", 76);
taro.printScore();
Student jiro = new Student(7, "jiro", 3);
jiro.test[0].setPoint("国語", 66);
jiro.test[1].setPoint("数学", 97);
jiro.test[2].setPoint("英語", 72);
jiro.printScore();
}
}
3.実行結果
12:taro
国語:95 数学:83 英語:76
総合点254
5段階評価5
7:jiro
国語:66 数学:97 英語:72
総合点235
5段階評価4
4.考察
- クラスについて
- クラスの概念
クラスはデータと処理をひとまとめにしたものです。データのことを
フィールド、処理のことをメソッドといいます。フィール
ドやメソッドのことを、クラスのメンバと言います。上の
Classroom.javaには、
の3つのクラスからなります。クラスを記述することを、「クラスを定義す
る」といいます。
- オブジェクト
クラスは変数に対する型のようなもので、それ自体に値を格納できるわけでは
ありません。そこでクラスをもとに、値を格納できる変数のようなものを作り
ます。これを、オブジェクトといいます。
1つのクラスからはいくつでもオブジェクトを生成できます。クラスからオブジェ
クトを生成することを、インスタンス化といいます。各オブジェクト
には、異なるデータを与えることができます。
- オブジェクトの生成
- オブジェクトの作り方
Bookクラスからbook1という名前のオブジェクトを生成してみます。オブジェク
トの生成にはnew演算子を使います。
Book book1;
book1 = new Book();
次のようにまとめて記述することもできます。
Book book1 = new Book();
- フィールドについて
- フィールドとは?
フィールドとはクラス内の変数です。クラスにフィールドを追加するには、次
のように記述します。これをフィールドの定義といいます。
class X {
int a = 5;
:
:
}
ちなみに、main()メソッド内で定義した変数はフィールドとはいいません。
- フィールドの参照と代入
- 同じオブジェクト内のフィールド
同じオブジェクト内のフィールドを参照したり、代入したりするには、フィー
ルド名をそのまま記述します。
・代入
a = 9;
・参照
b = a + 2;
- 異なるオブジェクトのフィールド
異なるオブジェクトのフィールドを参照したり、代入したりするには、「. (ピ
リオド) 」を使って次のように記述します。
・代入
x. a = 5;
・参照
b = x. a + 2;
- オーバーロードについて
- オーバーロードとは、ひとつのクラス内に引数や型の異なる同じ名前のメ
ソッドを複数記述することです。
class Calc {
int add(int a, int b) {
return a + b;
}
int add(int a) {
return a + 1;
}
double add(double a, double b) {
return a + b;
}
}
- メソッドを呼び出すときに与えた引数により、引数の数と型の対応してい
るメソッドが呼び出されます。
- 同じ名前のメソッドでも、引数の数や型が違います。
5.感想
- 結構しんどくなってきた感があります。勉強しなきゃな〜。
ProgII/e045732
Report#1
Report#2
Report#3
Report#4
Report#5
Report#6
Report#7
Report#8