第26講 クラスの学習その1☆☆
第7話 メソッド解説その2
struct K{
//フィールド
char a[3][40];
char as[3][40];
char kok[40],sya[40],suu[40],rik[40],eig[40];
int d[3][5];
//メソッド
void f1(char* na,char* nb,char* nc); //名前の取得
void f2(char* sa,char* sb,char* sc); //性別の取得
void f3(int nm,int d1,int d2,int d3,int d4,int d5); //得点の取得
};
void K::f1(char* na,char* nb,char* nc ){
strcpy(a[0],na); //出席番号0の名前取得
strcpy(a[1],nb); //出席番号1の名前取得
strcpy(a[2],nc); //出席番号2の名前取得
}
void K::f2(char* sa,char* sb,char* sc ){
strcpy(as[0],sa); //出席番号0の性別取得
strcpy(as[1],sb); //出席番号1の性別取得
strcpy(as[2],sc); //出席番号2の性別取得
}
void K::f3(int nm,int d1,int d2,int d3,int d4,int d5){
d[nm][0]=d1; //出席番号nmの国語点数取得
d[nm][1]=d2; //出席番号nmの社会点数取得
d[nm][2]=d3; //出席番号nmの数学点数取得
d[nm][3]=d4; //出席番号nmの理科点数取得
d[nm][4]=d5; //出席番号nmの英語点数取得
}
void main(){
int i,j;
K A;
A.f1("太郎","次郎","花子");
A.f2("男","男","女");
・
・
A.f3(0,85,65,78,59,82);
A.f3(1,27,52,28,45,60);
A.f3(2,95,97,88,99,93);
cout<<"クラスA:" <<endl;
cout<<"名前"<<" "<<"性"<<"
"<<A.kok<<" "<<A.sya<<" "<<A.suu<<"
"<<A.rik<<" "<<A.eig<<" "<<endl;
for(i=0;i<3;i++){
cout<<A.a[i]<<" "<<A.as[i];
for(j=0;j<5;j++)if(A.d[i][j]<10)cout<<" "<<A.d[i][j]<<"
";else cout<<" "<<A.d[i][j]<<" ";
cout<<endl;
}
・
・
・
}
f1は何をする関数でしょうか。
名前を入力する関数です。
花子は、図の矢印にしたがって、最後はa[2]にコピーされます。
太郎と次郎も同じです。
f1がわかればf2の理解は容易です。
女がas[2]にコピーされます。
f3はより複雑ですが、
図の矢印を見れば、お分かりになるかと思います。
出席番号0はオレンジの矢印にしたがって、nmに入ります。
そして85(国語の点数)は、緑の矢印にしたがって、d[0][0]に入ります。
結局、f1,f2,f3はそれぞれ名前、性別、得点の入力関数であることがわかります。
入力は、あくまでインスタンスAの世界での出来事です。
決して、抽象的なKの世界での入力でないことに注意して下さい。
あくまで具体的な世界Aでの代入です。
抽象『猫』から発生したインスタンス『ミケ』に、3色の色・体重・身長・性格などが代入されるのであって、
抽象『猫』に代入されるわけではないのと同じです。
5キロという体重は『ミケ』の体重であって、猫一般には具体的な体重はありません。
『人なつこい』『甘えん坊』などの性格も、個体『ミケ』の特徴であって、猫一般の性質ではありません。
関数を使うときA.f1となっていることから、インスタンスAでの入力=代入であることがわかります。
したがって、A.f1("太郎","次郎","花子");はf1("太郎","次郎","花子");とするとエラーします。
第6話へ 第8話へ
VC++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual
Basic入門基礎講座