Teachers open the door but You must enter by yourself.
オブジェクト指向プログラミングというキーワードが流行った時期がありましたが、その本質の1つは、変数のグループ化にあります。
2次元ベクトルの和を求める処理です。
void main(){
double ax = 1.0;
double ay = 0.0;
double bx = 0.0;
double by = 1.0;
double cx;
double cy;
cx = ax + bx;
cy = ay + by;
printf("%f %f\n", cx, cy);
}
2次元ベクトルを構造体で実現してみましょう。
struct Vector2{
double x;
double y;
};
void main(){
struct Vector2 a;
struct Vector2 b;
struct Vector2 c;
a.x = 1.0;
a.y = 0.0;
b.x = 0.0;
b.y = 1.0;
c.x = a.x + b.x;
c.y = a.y + b.y;
printf("%f %f\n", c.x, c.y);
}
2次元ベクトルをクラスで実現してみましょう。
class Vector2{
public:
double x;
double y;
};
void main(){
Vector2 a;
Vector2 b;
Vector2 c;
a.x = 1.0;
a.y = 0.0;
b.x = 0.0;
b.y = 1.0;
c.x = a.x + b.x;
c.y = a.y + b.y;
printf("%f %f\n", c.x, c.y);
}
メンバ関数を利用すれば、
class Vector2{
public:
double x;
double y;
Vector2( double a, double b ){ x = a; y = b; }
Vector2(){ }
void sum( Vector2 a, Vector2 b ){
x = a.x + b.x;
y = a.y + b.y;
}
void print(){
printf("%f %f\n", x, y );
}
};
void main(){
Vector2 a(2.0, 1.0);
Vector2 b(1.0, 2.0);
Vector2 c;
c.sum( a, b );
c.print();
}
ベクトルの色々な変換をメンバ関数で実現してみましょう。