OOP Point (int x, int y)

Kel

Aktives Mitglied
Java:
private Point punktA;

public Strecke(Point punktA) {
		this.punktA = punktA;
	}

public static void main (String[] args) {
		Strecke strecke = new Strecke((2, 2));
	}

Ich will im Konstruktor ein Point-Element?Objekt? übergeben, aber ich kriegs einfach nicht hin, dass das klappt.
Code:
Point(2,2)
nimmt er nicht,
Code:
(2,2)
auch nicht, nur mit
Code:
new Point(2,2)
klappts, aber ich will ja kein neues Pointobjekt erzeugen, ich hab ja schon eine Instanzvariable als Point, der müssen ja nur noch Werte gegeben werden.
Wie mach ich das also? :rtfm:

Ich brauch insgesamt 2 Point-Objekte, die im Konstruktor übergeben werden, aber erstmal wär es gut, wenn ich weiss wie ich eins übergebe.
 
ich hab ja schon eine Instanzvariable als Point, der müssen ja nur noch Werte gegeben werden.
Wie mach ich das also? :rtfm:

Ja in dem du eben ein Objekt erstellst :autsch: (wo musst eben du wissen)
du könntest auch schreiben
Java:
	public Strecke(int a, int b) {
		this.punktA = new Point(a, b);
	}

dann würde deine main fast funktionieren

Java:
Strecke strecke = new Strecke(2, 2);
 
Ah, ich bin wieder mit der OOP durcheinandergekommen.
die Instanzvariable ist ja nur eine Objektreferenz und das Objekt muss ich ja erst erzeugen, damit die Referenz darauf verweisen kann.

Was meinst du mit "fast funktionieren"?
Läuft doch mit deinem Code soweit?
 
Was spricht gegen [c]Strecke strecke = new Strecke(new Point(2, 2));[/c]? Deine Instanzvariable [c]pointA[/c] ist nur eine Referenz, die erst einmal leer (also [c]null[/c]) ist. Irgendwo musst du den Punkt auch wirklich erzeugen, entweder "außerhalb" in main, oder im Konstruktor, wie eRaaa gezeigt hat.
 
Dagegen spricht nichts, hatte nur Objektreferenz und Objekt verwechselt. Ich pack das trotzdem lieber in den Konstruktor wie im obigen Codebeispiel, spart Tipparbeit beim erzeugen einer neuen Instanz.
 
Kommt darauf an: Wenn du sowieso im Programm dauernd mit Punkten hantierst, kann meine Variante besser sein. Denn wie schreibst du das, wenn du schon einen Punkt hast? So:

Java:
Point p = holePunktVonSonstwoher();
Strecke strecke = new Strecke(p.x, p.y);

Wenn eine Strecke dann noch zwei Punkte hat (wie sie ja eigentlich haben sollte), wird es langsam unübersichtlich.

Übrigens: Du kannst auch zwei Konstruktoren haben, einen mit ints, einen mit Punkten, dann hast du beim Aufruf die Auswahl.
 
Dann bietet sich

Java:
public class Strecke {
    private Point punktA;
 
    public Strecke(Point punktA) {
        this.punktA = punktA;
    }
 
    public Strecke(int a, int b) {
        this.punktA = new Point(a, b);
    }
    public static void main (String[] args) {
        Strecke strecke1 = new Strecke(2, 2);
        Strecke strecke2 = new Strecke(new Point(3, 4));
    }
}

an. Entweder man übergibt einen fertigen Punkt, oder halt einen x- und einen y-Wert und baut sich daraus einen Punkt.
 

Neue Themen


Zurück
Oben