Instanzvariablen vom Typ einer Klasse definieren

Sagan

Mitglied
Guten Tag,
ich habe mich extra für diese Frage hier angemeldet, da ich momentan einfach nicht mehr weiter weiß.
Ich habe folgende Aufgabenstellung:
Erstellen Sie die Klasse Strecke, die zwei Instanzvariablen p und q vom Typ der Klasse Point (siehe unten) definiert.
Im Konstruktor der Klasse Strecke werden Referenzen auf Objekte der Klasse Point übergeben. Definieren Sie die Zugriffsmethoden setP(...), setQ(...), getP() und getQ() für die Instanzvariablen der Klasse.
Definieren Sie zur Berechnung der Distanz zwischen den beiden Punkten p und q die Methode distanz().
Beachten Sie: Der Abstand zwischen den Koordinaten (x1,y1) und (x2,y2) ergibt sich mittels der Formel:
Quadratwurzel aus (x1-x2)2 + (y1-y2)2

Benutzen Sie die Methodenaufrufe Math.sqrt(x) und Math.pow(x,2) zur Berechnung der Quadratwurzel und zur Quadrierung.
Die Klasse Point ist wie folgt in Point.java zu codieren:
public class Point {
public double x;
public double y;
}
Definieren Sie zum Testen der Klasse Strecke eine weitere Klasse StreckeTest, die in ihrer main-Methode eine Instanz der Klasse Strecke erzeugt und für diese Instanz die Methode distanz der Klasse aufruft sowie das Ergebnis ausgibt.

Alles soweit verständlich, bis auf den Anfang.
Wie soll ich aus der Klasse Point Instanzvariablen für die Klasse Strecke erstellen, wenn in der Klasse Point gar kein Konstruktor definiert ist.
Hätte ich bspw. in der Klasse Point
Java:
public Point (double x, double y) {
    this.x = x;
    this.y = y;
}
stehen, könnte ich der Variable p und q, diese Punkte zuordnen. Aber das ist ja leider nicht der Fall.

Bisher sieht es bei mir folgendermaßen aus.

Java:
public class Strecke {
    Point p = Point.x;
    Point q = Point.y;
   

    public Strecke(double x1, double x2, double y1, double y2) {
        Point.x = x1;
        Point.x = x2;
        Point.y = y1;
        Point.y = y2;
    }

    public void setP(Point p) {
        this.p = p;
    }

    public void setQ(Point q) {
        this.q = q;
    }

    public Point getP() {
        return p;
    }

    public Point getQ() {
        return q;
    }

    public double distanz() {
        double distanz = Math.sqrt(Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2));
        return distanz;
    }
}

Ich weiß aber nicht wie ich nun mit dem Punkt p oder q "arbeiten" kann. Ich muss p ja eigentlich x und y zuweisen können und nicht nur x.
Das ist unsere erste Aufgabe im Bereich OOP.
Hatte vorher schon ein wenig Erfahrung in dem Bereich gesammelt, aber mehr auch nicht.
Hoffe jemand hat einen Ratschlag.
 

httpdigest

Top Contributor
Lese dir bitte nochmal ganz genau die Aufgabenstellung durch. Da steht zum Beispiel dieser sehr wichtige Satz:
Im Konstruktor der Klasse Strecke werden Referenzen auf Objekte der Klasse Point übergeben.
Du bekommst also nicht die individuellen double-Koordinaten, und musst dann auch nicht im Konstruktur von Strecke Point-Objekte erzeugen, sondern du bekommst schon zwei Point-Objekte, die du einfach nur noch an die Instanzfelder setzen musst.
Und das hier ist Quatsch:
Java:
    Point p = Point.x;
    Point q = Point.y;
 

Sagan

Mitglied
Danke für die sehr schnelle Antwort.
Leider versteh ich diesen Satz auch nach mehrmaligem googeln nicht. Soweit ich das richtig verstanden habe, verweisen die Referenzen also nur auf etwas und speichern dies nicht ab.
Ist das denn schon mal richtig um die Instanzvariablen zu definieren?
Java:
    Point p;
    Point q;
Tut mir Leid, wenn ich gerade selbst keinen Lösungsvorschlag habe. Ich schein die Aufgabe nicht richtig zu verstehen.
 

httpdigest

Top Contributor
Der Punkt ist, dass du im Konstruktor nicht vier double-Parameter bekommst, sondern zwei Point-Parameter.
Und ja, die Instanzvariablendefinition ist so korrekt.
 

Sagan

Mitglied
Ok, also müsste das so korrekt sein
Java:
public Strecke(Point p, Point q) {
        this.p = p;
        this.q = q;
    }
Wie soll ich diesem Punkt p und q aber nun jeweils ein x und ein y Wert zuordnen?
Wenn ich in der Klasse StreckeTest eine Instanz der Klasse Strecke erzeuge, muss ich ja Point p und q angeben, aber wie? Ein Punkt besteht ja aus x und y.
 

httpdigest

Top Contributor
Du erstellst die zwei Point Instanzen genauso wie du jede andere Instanz einer Klasse erzeugst: Mit dem `new` Schlüsselwort und Konstruktorargumenten:
Java:
Point p = new Point(1.0, 2.0); // <- Konstruktoraufruf mit zwei double Argumenten
Point q = new Point(3.0, 4.0); // <- Konstruktoraufruf mit zwei double Argumenten
Strecke s = new Strecke(p, q); // <- Konstruktoraufruf mit zwei Point Argumenten
 

Sagan

Mitglied
Ich komm mir gerade echt blöd vor. Genau das habe ich vorher ja schon probiert.
Und Eclipse gibt mir dabei die Fehlermeldung aus, dass kein Konstruktor Point(double, double) existiert. Ich soll diesen erstellen. Doch das soll laut Aufgabenstellung ja nicht sein.
Genau das ist ja mein Problem, was ich nicht zu lösen bekomme. Wie soll ich die Variablen der Klasse Point bekommen ohne Konstruktor.

edit: @mihe7 genau das. Ich weiß nicht wie ich das anders lösen könnte.
 

mihe7

Top Contributor
Java:
Point p = new Point();
p.x = 4;
p.y = 5;
Das funktioniert, weil die Instanzvariablen in Point public sind.
 

Sagan

Mitglied
Danke für eure Hilfe. Ich wusste nicht, dass dies möglich ist. Also gibt es quasi immer einen leeren Standardkonstruktor?
Ich habe dabei nun aber weiterhin folgendes Problem.
Bei der Variablen Deklaration und Initialisierung von p.x usw., gibt er mir einen Fehler aus.

Java:
public class Strecke {
    Point p = new Point();
    p.x = 1.5;
    p.y = 3.5;
    Point q = new Point();
    q.x = 2.0;
    q.y = 5.0;

Jetzt habe ich herausgefunden, dass das ganze in einer Methode stehen muss, deswegen auch der Fehler.

Der Code sieht nun folgendermaßen aus
Java:
public class Strecke {
    public Point p = new Point();
    public Point q = new Point();

    public Strecke(Point p, Point q) {
        this.p = p;
        this.q = q;
        this.p.x = 3.0;
        this.p.y = 1.5;
        this.q.x = 2.5;
        this.q.y = 5.0;
    }

    public void setP(Point p) {
        this.p = p;
    }

    public void setQ(Point q) {
        this.q = q;
    }

    public Point getP() {
        return p;
    }

    public Point getQ() {
        return q;
    }

    public double distanz() {
        double distanz = Math.sqrt(Math.pow(p.x - q.x, 2) + Math.pow(p.y - q.y, 2));
        return distanz;
    }
}
Das Problem ist nun, wenn ich in der Klasse StreckeTest ein neues Objekt von Strecke erzeugen möchte, gibt er aus: p cannot be resolved to a variable
Java:
public class StreckeTest {
    public static void main(String[] args) {

        Strecke s1 = new Strecke(p, q);
        double ergebnisDistanz = s1.distanz();
        System.out.println(ergebnisDistanz);
    }
}
Hab es auch schon mit Strecke.p und Strecke.q probiert, dann erkennt er das Objekt, sagt allerdings, dass dieses statisch sein muss.
 

mihe7

Top Contributor
Also gibt es quasi immer einen leeren Standardkonstruktor?
Nein. Es muss immer einen Konstruktor geben. Nur wenn Du in der Klasse keinen Konstruktor angegeben hast, wird der Standardkonstruktor (=ohne Parameter) angenommen.

Java:
class A {
    A(int a) { ... }
}
hat keinen Standardkonstruktor, Du kannst also nicht einfach new A() schreiben, sondern musst in dem Fall einen int-Wert angeben.

Jetzt habe ich herausgefunden, dass das ganze in einer Methode stehen muss
Das war als Code-Schnipsel gedacht, wie man allgemein ein solches Point-Objekt erzeugt und Werte für x und y setzen kann.

Der Code sieht nun folgendermaßen aus
Die Zuweisungen an p.x und p.y (analog für q) im Konstruktor müssen raus. Du bekommst ja de Punkte als Parameter übergeben - und die stellen ja bereits die x- und y-Koordinaten dar.

Das Problem ist nun, wenn ich in der Klasse StreckeTest ein neues Objekt von Strecke erzeugen möchte, gibt er aus: p cannot be resolved to a variable
Richtig, denn dort musst Du die Punkte p und q erzeugen (Du kannst hier den Variablen natürlich auch ganz andere Namen geben) und die Koordinaten entsprechend setzen.
 

Sagan

Mitglied
Danke, ich habe es jetzt hinbekommen. Ich bin die ganze Zeit davon ausgegangen ich muss die Punkte nur in Strecke erzeugen.
Vielen Dank an alle Beteiligten!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
KogoroMori21 Objektvariablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 1
L Instanzvariablen, Veerbung, Konstruktor Java Basics - Anfänger-Themen 32
D Setter/Getter für Instanzvariablen praktisch? Java Basics - Anfänger-Themen 19
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
B Methoden Nutzen der Instanzvariablen in Klassenmethoden Java Basics - Anfänger-Themen 1
G Klassenvariablen & Instanzvariablen Java Basics - Anfänger-Themen 4
N Instanzvariablen als private... Java Basics - Anfänger-Themen 2
H Klassen Konstruktor Parameter als Instanzvariablen zwischen speichern... Java Basics - Anfänger-Themen 11
H Klassen Von Instanzvariablen auf Instanz schließen Java Basics - Anfänger-Themen 21
J Klassen Ein Problem mit den Instanzvariablen Java Basics - Anfänger-Themen 13
S Instanzvariablen Java Basics - Anfänger-Themen 3
F wie oft werden Instanzvariablen genutzt Java Basics - Anfänger-Themen 14
J Variablen Aktualisieren von Instanzvariablen Java Basics - Anfänger-Themen 14
C Variablen Wann werden Instanzvariablen initalisiert? Java Basics - Anfänger-Themen 10
P Instanzvariablen mögliche Werte zuweisen Java Basics - Anfänger-Themen 6
S Variablen viele Instanzvariablen vermeiden Java Basics - Anfänger-Themen 14
R Vererbung Bitte um Erklärung - Instanzvariablen Java Basics - Anfänger-Themen 8
Luk10 Ändern von Instanzvariablen Java Basics - Anfänger-Themen 2
M fehler bei instanzvariablen deklaration?? Java Basics - Anfänger-Themen 6
J Instanzvariablen - Lokale Variablen - warum der Unterschied? Java Basics - Anfänger-Themen 5
Luk10 Vererben von private instanzvariablen Java Basics - Anfänger-Themen 20
Q Instanzvariablen implementieren - grundlegende Probleme Java Basics - Anfänger-Themen 3
S Zugriffe über Private Instanzvariablen Java Basics - Anfänger-Themen 3
F Zugriff auf Instanzvariablen, Frage zum guten Stil Java Basics - Anfänger-Themen 2
B Instanzvariablen private? Java Basics - Anfänger-Themen 5
D Fehler beim Aufrufen von Instanzvariablen Java Basics - Anfänger-Themen 5
7 Lokale Variablen, Klassenvariablen, Instanzvariablen Java Basics - Anfänger-Themen 15
G Klassen- und Instanzvariablen / Klassen- und Instanzmethode Java Basics - Anfänger-Themen 8
P Was sind Instanzvariablen? Java Basics - Anfänger-Themen 5
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
D 2 ArrayListen gleich sortieren bzw. eine Liste anhand einer anderen Sortieren Java Basics - Anfänger-Themen 6
ixChronos Letzten 4 Ziffern einer großen Zahl ausgeben Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
L Variablenwerte aus einer Methode übergeben Java Basics - Anfänger-Themen 2
E Arrays in einer ArrayList miteinander vergleichen Java Basics - Anfänger-Themen 12
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Shadowrunner Variablen Gibt es eine Möglichkeit die Ziffern/Stellen einer Zahl fest zu legen? Java Basics - Anfänger-Themen 3
D remove Object von einer Liste von Obejcts Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
T Aufruf der Methode einer Oberklasse, wenn sie in der Unterklasse überschrieben ist. Polymorphie. Java Basics - Anfänger-Themen 2
B Kommunikation mit Seriellen Schnittstellen + Integration einer lib Java Basics - Anfänger-Themen 1
A Daten aus einer HashMap aus einer DB speichern und mit neuen Werten vergleichen Java Basics - Anfänger-Themen 8
P Welches SDK für das erstellen einer ausführbaren Datei? Java Basics - Anfänger-Themen 4
D Länge einer Liste aufrufen. Java Basics - Anfänger-Themen 19
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
B Alle Strings bis zu einer Maimallänge aufzählen, die Bedingung erfüllen Java Basics - Anfänger-Themen 13
marcelnedza Finde meinen Fehler in einer Methode nicht, Java Karol Java Basics - Anfänger-Themen 15
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
T Fibonacci mit einer Hilfsmethode berechnen Java Basics - Anfänger-Themen 10
S Hilfe zu einer Aufgabe Java Basics - Anfänger-Themen 5
M Radius von einer ellipse bestimmen Java Basics - Anfänger-Themen 7
Say Fehlenden Code finden in einer while-Schleife? Java Basics - Anfänger-Themen 11
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
N Was Passiert mit dem Namen einer Variable, wenn man diese einer Liste Hinzufügt Java Basics - Anfänger-Themen 16
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
W Objekte einer ArrayList in txt-datei schreiben mit Paths? Java Basics - Anfänger-Themen 2
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
S Textausgabe in einer For-Schleife Java Basics - Anfänger-Themen 12
M Spezifischen Wert einer Zeile aus .txt Datei entnehmen Java Basics - Anfänger-Themen 15
B Popups mit Klicksabfangen zumAusfüllen einer .ods Datei Java Basics - Anfänger-Themen 0
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
E Suchfunktion in einer Liste Java Basics - Anfänger-Themen 39
T ungeordnete Werte-Paare in einer Liste Java Basics - Anfänger-Themen 7
FireHorses Einen Command erst nach einer Chateingabe aktivieren Java Basics - Anfänger-Themen 1
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
F wie kann ich die Position des letzten Vokals innerhalb einer Zeichenkette ermitteln? Java Basics - Anfänger-Themen 5
H Kapselung protected aber in einer Kindklasse nicht zugänglich Java Basics - Anfänger-Themen 5
R Methoden Werte einer ArrayList als Parameter übergeben. Java Basics - Anfänger-Themen 4
B Den Dateipfad einer Java Datei durch Code in Selbiger finden? Java Basics - Anfänger-Themen 10
LilliCherry Array in einer Zeile ausgeben Java Basics - Anfänger-Themen 6
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
V Hilfe bei Implementierung einer boolean Methode Java Basics - Anfänger-Themen 6
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
stormyark Fehler beim überschreiben einer Variable Java Basics - Anfänger-Themen 1
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
Saiko Zeilen einer Datei einlesen Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29
sserio Prüfziffer einer ISBN Nummer herrausfinden. Java Basics - Anfänger-Themen 14
J Benennung einer mir unbekannten Java - Ausdrucksweise Java Basics - Anfänger-Themen 5
LFB In einer For-Schleife alles in einer Zeile ausgeben Java Basics - Anfänger-Themen 14
sserio Wie kann man nach einer Klasse fragen? Java Basics - Anfänger-Themen 12
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Variable in einer Schleife initialisieren Java Basics - Anfänger-Themen 46
D EinMalEins mithilfe einer for-Schleife und Array Java Basics - Anfänger-Themen 1
J int innerhalb einer Datei ändern Java Basics - Anfänger-Themen 1
D Hilfe bei einer Aufgabe mit for-Schleife Java Basics - Anfänger-Themen 6
Neuling47 Ich zerbreche mit den kopf an einer Aufgabe Java Basics - Anfänger-Themen 61
H Mit setter-Methode JLabel in einer andern Klasse ändern. Java Basics - Anfänger-Themen 40
J Zelleninhalt einer Jtable löschen Java Basics - Anfänger-Themen 2
Robert_Klaus Hamster java Simulation Hilfe bei einer Aufgabe Java Basics - Anfänger-Themen 5
stormyark 4 Bit in einer for-schleife funktioniert nicht Java Basics - Anfänger-Themen 3
F Werte in einer Arraylist Zählen Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben