RosettaCodeData/Task/Vector/Objeck/vector.objeck

47 lines
976 B
Plaintext

class Test {
function : Main(args : String[]) ~ Nil {
Vec2->New(5, 7)->Add(Vec2->New(2, 3))->ToString()->PrintLine();
Vec2->New(5, 7)->Sub(Vec2->New(2, 3))->ToString()->PrintLine();
Vec2->New(5, 7)->Mult(11)->ToString()->PrintLine();
Vec2->New(5, 7)->Div(2)->ToString()->PrintLine();
}
}
class Vec2 {
@x : Float;
@y : Float;
New(x : Float, y : Float) {
@x := x;
@y := y;
}
method : GetX() ~ Float {
return @x;
}
method : GetY() ~ Float {
return @y;
}
method : public : Add(v : Vec2) ~ Vec2 {
return Vec2->New(@x + v->GetX(), @y + v->GetY());
}
method : public : Sub(v : Vec2) ~ Vec2 {
return Vec2->New(@x - v->GetX(), @y - v->GetY());
}
method : public : Div(val : Float) ~ Vec2 {
return Vec2->New(@x / val, @y / val);
}
method : public : Mult(val : Float) ~ Vec2 {
return Vec2->New(@x * val, @y * val);
}
method : public : ToString() ~ String {
return "[{$@x}, {$@y}]";
}
}