Cześć, mam pytanie dotyczące dosyć podstawowej rzeczy w Javie: konstruktorów. Piszę przykładowy program do obsługi punktów w układzie kartezjańskim i mam dwa konstruktory, jeden jako x,y, drugi jako promień i kąt:
public Point(double x, double y) {
this.x = x;
this.y = y;
this.r = Math.sqrt(Math.pow(x,2) + Math.pow(y,2));
this.angle = Math.atan(x/y) * 180 / Math.PI;
}
public Point(double r, double angle, char c) {
if(c == ...)
this.r = r;
this.angle = angle;
this.x = r * Math.cos(angle);
this.y = r * Math.sin(angle);
}
Na razie jest to zrobione dosyć słabo, ale nie wiem czy da się inaczej.
Na początku wymyśliłem opcję taką, że jak ktoś poda dwie liczby to wyoła się ten pierwszy (x,y) jeżeli wpisze dwie liczby i znak to jeżeli znakiem będzie d to wywoła się pierwszy, jeżeli b to drugi a jeżeli coś innego to żaden.
Pojawiły się dwa problemy:
1. w javie nie ma wartości domyślnych więc zrobienie jednego konstruktora z dwoma if'ami odpada
2. jak chcę wywołać inny konstruktor w ciele mojego to musi byś to w pierwszej linijce, czyli odpada coś typu if(c == 'd') this(r,angle);
I moje pytanie brzmi, czy da się to napisać jakoś sprytniej, żeby było krótsze, miało więcej sensu?