Vererbung

Big_Pat

Mitglied
Hallo liebe User :)

ich habe ein kleines Problem bezüglich der Vererbung. Ich hoffe einer hier könnte mir helfen.
Also ich habe zwei Klassen, eine Superklasse "Face" und eine Unterklasse Dreieck. In der Klasse "Face" habe ich eine Array-Variable von Typ "Edge". "Edge" hier ist ein Objekt bzw. eine Seite, die ich dann brauche für die konstruktion eines Dreiecks. Nun meine Frage: könnte mir bitte jemand sagen, wie ich die länge des Edge-Array in der Subklasse auf 3 festlege, so dass ich dann den Dreieck konstruiren kann?
so sieht der Quellcode aus.

Java:
package model;
public abstract class Face {
  private Edge[] edge;
  private Normal normal; 

  public Face(){}

  public Face( Edge[] edge, Normal normal) {
    this.edge = edge;
    this.normal = normal;
  }

  public abstract float getUmfang();
  public abstract float getFlaeche();
  public Edge[] getEdge() {
    return edge;
  }

  public void setEdge(Edge[] edge) {
    this.edge = edge;
  }

  public Normal getNormal() {
    return normal;
  }
 
  public void setNormal(Normal normal) {
    this.normal = normal;
  }
}


Java:
package model;
public class Dreieck extends Face {

  public Dreieck(Edge[] edge, Normal normal) {
    super(edge, normal);
  }

  public Dreieck() { }

  public float getUmfang() {
    return 0;
  }

  public float getFlaeche() {
    return 0;
  }
}

Ich hoffe Ihr versteht, was ich meine. Danke für eine Rückmeldung.

Viele Grüße
 
Zuletzt bearbeitet von einem Moderator:

Flown

Administrator
Mitarbeiter
Du musst deinem Dreieck so und so ein Array mit Edges mitliefern. Du überprüfst einfacht, ob die Länge des Arrays == 3 ist. Sonst wirfst du eine Exception.
 

Big_Pat

Mitglied
Erst mal Danke für deinen Beitrag :)

Java:
package model;

public class Dreieck extends Face
{
     
    

	
	public Dreieck(Edge[] edge, Normal normal)
	{
		super(edge, normal);
	}
	
	
	

	public float getUmfang()
	{
		for(int i = 0; i < getEdge().length; i++)
		{
			
		}
		return 0;
		
	}
	

	public float getFlaeche() 
	{
		return 0;
	}



}

So ich habe nun die for-Schleife benutzt, um die Länge des Arrays zu ermitteln. Habe dann vor später beim erzeugen neue Instanzen die Anzahl des Edges auf 3 festzulegen. Hast du das so gemeint, Flown??
 

Flown

Administrator
Mitarbeiter
Bitte bei EINEM Problem bei EINEM Thema bleiben.

Nein ich meinte das so:
Java:
package model;
public class Dreieck extends Face {
  public Dreieck(Edge[] edge, Normal normal) {
    if(edge.length != 3) throw new IllegalArgumentException("Triangles only have three edges.");
    super(edge, normal);
  }
  // ...
}
 

Big_Pat

Mitglied
sorry bin noch nicht so routiniert in diesem Forum. Deswegen bin ich durcheinander beim posten gekommen, ich gebe mir aber Mühe, um küftig es besser zu machen. Ah ok!!! jetzt verstehe ich was du meinst. Danke sehr:). Ich arbeite dann noch an das Projetkt und lade meine Arbeit hier hoch.
 

Big_Pat

Mitglied
Guten Abend!
bislang habe ich mit meinem Projetkt nicht weiter kommen können. Dieses mal füge die aufgabe Stellung und die wichtigen klassen ein damit mein problem für euch verständlicher ist. Es geht darum, die wichtigen Klassen einer STL-Datei zu implementireren.
so habe ich mich mit der Aufgabe beschäftigt:

[Java]package model;

public class Vertex
{
private double x;
private double y;
private double z;

public Vertex()
{
x = 0;
y = 0;
z = 0;
}
public Vertex(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}

public double getX()
{
return x;
}
public void setX(double x)
{
this.x = x;
}
public double getY()
{
return y;
}
public void setY(double y)
{
this.y = y;
}
public double getZ()
{
return z;
}
public void setZ(double z)
{
this.z = z;
}

}

package model;

public class Edge
{
private Vertex vertexStart;
private Vertex vertexEnd;

public Edge(Vertex vStart, Vertex vEnd)
{
this.vertexStart = vStart;
this.vertexEnd = vEnd;
}

public double getRichtungsVektor(double x1, double y1, double z1) // Koordinaten Richtungsvektor einer Seite
{
x1 = vertexEnd.getX() - vertexStart.getX();
y1 = vertexEnd.getY() - vertexStart.getY();
z1 = vertexEnd.getZ() - vertexStart.getZ();

return getRichtungsVektor(x1,y1, z1);
}
public double getLaenge()
{
double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
double sum = 0;

sum1 = (double) Math.pow((vertexEnd.getX() - vertexStart.getX()), 2);
sum2 = (double) Math.pow((vertexEnd.getY() - vertexStart.getY()), 2);
sum3 = (double) Math.pow((vertexEnd.getZ() - vertexStart.getZ()), 2);
sum = (double) Math.sqrt(sum1 + sum2 + sum3);
return sum;
}

public Vertex getVertexStart()
{
return vertexStart;
}
public void setVertexStart(Vertex vertexStart)
{
this.vertexStart = vertexStart;
}
public Vertex getVertexEnd()
{
return vertexEnd;
}
public void setVertexEnd(Vertex vEnd)
{
this.vertexEnd = vertexEnd;
}
}

package model;

public abstract class Face
{
private Edge[] edge;
private Normal normal;

public Face()
{
}

public Face( Edge[] edge, Normal normal)
{
this.edge = edge;
this.normal = normal;
}

public double getUmfang()
{
double sum = 0.0;
for(int i = 0; i < edge.length; i++)
sum += edge;
return sum;
}
public abstract double getFlaeche();

public Edge[] getEdge()
{
return edge;
}

public void setEdge(Edge[] edge)
{
this.edge = edge;
}

public Normal getNormal()
{
return normal;
}

public void setNormal(Normal normal)
{
this.normal = normal;
}
}

package model;

public class Dreieck extends Face
{
public Dreieck(Edge edge1 ,Edge edge2, Edge edge3, Normal normal)
{
super(new Edge[] {edge1, edge2, edge3}, normal);
}

public double getUmfang()
{
}

public double getFlaeche()
{
return 0;
}
}

package model;

public class Normal
{
private double n1;
private double n2;
private double n3;

public Normal()
{
}

public Normal(double n1, double n2, double n3)
{
this.n1 = n1;
this.n2 = n2;
this.n3 = n3;
}

public double getN1()
{
return n1;
}
public void setN1(double n1)
{
this.n1 = n1;
}
public double getN2()
{
return n2;
}
public void setN2(double n2)
{
this.n2 = n2;
}
public double getN3()
{
return n3;
}
public void setN3(double n3)
{
this.n3 = n3;
}
}

package model;

import java.util.Vector;

public class Polyeder
{
private String name;
private Vector<Face> dreieck = new Vector< Face>();

public Polyeder()
{
}

public Polyeder(String name, Vector<Face> dreieck)
{
this.name = name;
this.dreieck = dreieck;
}

public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Vector<Face> getDreieck()
{
return dreieck;
}
}
[/Java]

Mein problem ist immer noch die methode "getUmfang()" in der klasse Face. Da habe ich versucht, den Umfang des Dreiecks zu berechnen, indem ich die Summe Array elemente gemacht habe . Aber es wird immer noch ein Fehler angezeigt. Kann einer bitte mir helfen?
 
Zuletzt bearbeitet von einem Moderator:

Big_Pat

Mitglied
Java:
package model;

public class Vertex
{
private double x;
private double y;
private double z;


public Vertex()
{
x = 0;
y = 0;
z = 0;

}
public Vertex(double x, double y, double z)
{
this.x = x;
this.y = y;
this.z = z;
}



public double getX()
{
return x;
}
public void setX(double x)
{
this.x = x;
}
public double getY()
{
return y;
}
public void setY(double y)
{
this.y = y;
}
public double getZ()
{
return z;
}
public void setZ(double z)
{
this.z = z;
}

}


package model;

public class Edge
{
private Vertex vertexStart;
private Vertex vertexEnd;



public Edge(Vertex vStart, Vertex vEnd)
{
this.vertexStart = vStart;
this.vertexEnd = vEnd;
}

public double getRichtungsVektor(double x1, double y1, double z1) // Koordinaten Richtungsvektor einer Seite
{
x1 = vertexEnd.getX() - vertexStart.getX();
y1 = vertexEnd.getY() - vertexStart.getY();
z1 = vertexEnd.getZ() - vertexStart.getZ();

return getRichtungsVektor(x1,y1, z1);

}
public double getLaenge()
{

double sum1 = 0;
double sum2 = 0;
double sum3 = 0;
double sum = 0;

sum1 = (double) Math.pow((vertexEnd.getX() - vertexStart.getX()), 2);
sum2 = (double) Math.pow((vertexEnd.getY() - vertexStart.getY()), 2);
sum3 = (double) Math.pow((vertexEnd.getZ() - vertexStart.getZ()), 2);
sum = (double) Math.sqrt(sum1 + sum2 + sum3);
return sum;
}

public Vertex getVertexStart()
{
return vertexStart;
}
public void setVertexStart(Vertex vertexStart)
{
this.vertexStart = vertexStart;
}
public Vertex getVertexEnd()
{
return vertexEnd;
}
public void setVertexEnd(Vertex vEnd)
{
this.vertexEnd = vertexEnd;
}


}


package model;

public abstract class Face
{

private Edge[] edge;
private Normal normal;

public Face()
{


}

public Face( Edge[] edge, Normal normal)
{
this.edge = edge;
this.normal = normal;
}

public double getUmfang()
{
double sum = 0.0;
for(int i = 0; i < edge.length; i++)
sum += edge[i];
return sum;
}
public abstract double getFlaeche();

public Edge[] getEdge()
{
return edge;
}

public void setEdge(Edge[] edge)
{
this.edge = edge;
}

public Normal getNormal()
{
return normal;
}

public void setNormal(Normal normal)
{
this.normal = normal;
}





}


package model;

public class Dreieck extends Face
{



public Dreieck(Edge edge1 ,Edge edge2, Edge edge3, Normal normal)
{
super(new Edge[] {edge1, edge2, edge3}, normal);


}


public double getUmfang()
{

}

public double getFlaeche()
{
return 0;
}



}


package model;

public class Normal
{
private double n1;
private double n2;
private double n3;


public Normal()
{

}

public Normal(double n1, double n2, double n3)
{
this.n1 = n1;
this.n2 = n2;
this.n3 = n3;
}

public double getN1()
{
return n1;
}
public void setN1(double n1)
{
this.n1 = n1;
}
public double getN2()
{
return n2;
}
public void setN2(double n2)
{
this.n2 = n2;
}
public double getN3()
{
return n3;
}
public void setN3(double n3)
{
this.n3 = n3;
}


}


ackage model;

import java.util.Vector;

public class Polyeder
{
private String name;
private Vector<Face> dreieck = new Vector< Face>();

public Polyeder()
{

}

public Polyeder(String name, Vector<Face> dreieck)
{
this.name = name;
this.dreieck = dreieck;
}


public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Vector<Face> getDreieck()
{
return dreieck;


}

}

hier noch mal der code
 

Joose

Top Contributor
Handelt es sich immer noch um das selbe Problem wie im Anfangspost dieses Threads? Wenn nein dann mache bitte ein neues Thema auf! :)
Achtung: nur weil es im selben Projekt ist kann das Problem trotzdem ein anderes sein ;)

Außerdem ist es hilfreicher die Klassen jeweils seperat in Java-Tags zu posten, das erspart eine Menge herumscrollen.
 

Big_Pat

Mitglied
Hallo,
nun Habe ich eine Lösung für mein problem gefunden und teile die jetzt mit den anderen Usern. Ich habe den Konstruktor "Dreieck()" von der Kalsse Dreieck nun anders formuliert und am Ende habe ich eher ein Gutes ergebnis bekommen.
Also es ging darum, dass ich nicht wusste, ertens, wie ich die Länge des Array "Edge[] edge" von der Superklasse Face, in der Unterklasse Dreieck so spezifiziere, dass ich da nur 3 Elemente(edge1, edge2 und edge3) habe. zweitens war es mir auch unklar, wie ich dann auf die drei Elemente zugreife, um die Methode "getFlaesche()" ausformulieren zu können.
so sah meine Klasse Dreieck aus:
[Java] package model;
public class Dreieck extends Face {

public Dreieck(Edge[] edge, Normal normal) {
super(edge, normal);
}

public Dreieck() { }

public float getUmfang() {
return 0;
}

public float getFlaeche() {
return 0;
}
}[/Java]


und So sieht das ganze jetzt aus:
[Java]package model;

public abstract class Face
{

private Edge[] edge;
private Normal normal;

public Face()
{


}

public Face( Edge[] edge, Normal normal)
{
this.edge = edge;
this.normal = normal;
}

public double getUmfang(double x1, double y1, double z1)
{
double sum = 0.0;
for(int i = 0; i < edge.length; i++)
{
sum += edge.getLaenge();
}
return sum;
}
public abstract double getFlaeche();

public Edge[] getEdge()
{
return edge;
}

public void setEdge(Edge[] edge)
{
this.edge = edge;
}

public Normal getNormal()
{
return normal;
}

public void setNormal(Normal normal)
{
this.normal = normal;
}[/Java]


[Java]package model;

public class Dreieck extends Face
{



public Dreieck(Edge edge1 ,Edge edge2, Edge edge3, Normal normal)
{
super(new Edge[] {edge1, edge2, edge3}, normal);

}

public double getFlaeche()
{

double flaeche = 0;
flaeche = (Math.sqrt(4*Math.pow(getEdge()[0].getLaenge(), 2)*Math.pow(getEdge()[1].getLaenge(), 2)
-( Math.pow((Math.pow(getEdge()[0].getLaenge(), 2) + Math.pow(getEdge()[1].getLaenge(), 2)
- Math.pow(getEdge()[2].getLaenge(), 2) ), 2))))/4; // Satz des Heron
return flaeche;

}


}[/Java]

Gruß
 
Zuletzt bearbeitet:

strußi

Top Contributor
also Arrays kannst du erzeugen, ObjectTyp[] variablenName =new ObjectTyp[ zellenzahl]; oder
ObjectTyp[] variablenName ={ ObjectTyp1, ObjectTyp2, ... ObjectTypN};
du hast jetzt leere schubladen für Objekte vom typ ObjectTyp, ohne inhalt, bzw. bei der zweiten Variante mit inhalt.
bei der Variante 2 befüllst du die schublade über variablenName[ index] =new ObjectTyp(); Arrayindex beginnt mit 0 und geht bis zellenzahl-1;

der zugriff erfolgt auf die gleiche weise: variablenName[ index] (erste schublade = variablenNamen[ 0]).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
M Vererbung - Polymorphie Java Basics - Anfänger-Themen 37
L Java- Vererbung Java Basics - Anfänger-Themen 4
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 12
ineedhelpinjava Vererbung Java Basics - Anfänger-Themen 1
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
M Interface oder Vererbung? Java Basics - Anfänger-Themen 12
M Vererbung Java Basics - Anfänger-Themen 6
M Designentscheidung von Attributen/Methoden im Falle von Vererbung Java Basics - Anfänger-Themen 8
M Generics Vererbung Listen Java Basics - Anfänger-Themen 2
A Methoden Vererbung und Interface Java Basics - Anfänger-Themen 14
D Klassen und Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Java Basics - Anfänger-Themen 7
D Vererbung Java Basics - Anfänger-Themen 3
K Schleife berechnet kein Ergebnis (Vererbung) Java Basics - Anfänger-Themen 6
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
W Zur Vererbung: Wann und wie? Java Basics - Anfänger-Themen 35
H Datenkapselung, Vererbung und UML Java Basics - Anfänger-Themen 16
districon Super-Stichwort/ Vererbung Java Basics - Anfänger-Themen 3
YaU Vererbung erstellt NullPointerException? Java Basics - Anfänger-Themen 4
1 Vererbung Klassenattribute Java Basics - Anfänger-Themen 9
TimoN11 Frage zu Java-Vererbung (Cast) Java Basics - Anfänger-Themen 5
N Thema Vererbung Java Basics - Anfänger-Themen 31
A Vererbung Vererbung Übung Java Basics - Anfänger-Themen 5
B Vererbung - Sichtbarkeitsmodifikation - protected Java Basics - Anfänger-Themen 10
B Best Practice Unschlüssig ob Vererbung oder Interface Java Basics - Anfänger-Themen 2
G Java Vererbung Java Basics - Anfänger-Themen 8
Y Vererbung Konto - Anfangsprobleme Java Basics - Anfänger-Themen 7
A Vererbung Klassen im Bezug auf Auto´s Java Basics - Anfänger-Themen 18
A Klassen Vererbung und zusätzliche Unterklassen Java Basics - Anfänger-Themen 23
M Vererbung mit Enums Java Basics - Anfänger-Themen 8
Kirby.exe Vererbung im Detail erklärt? Java Basics - Anfänger-Themen 9
N Modellierung, vererbung, Java Basics - Anfänger-Themen 163
M Fehlendes Verständnis für dynamische Bindung und Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung im Computerspiel Java Basics - Anfänger-Themen 7
J Probleme mit Vererbung Java Basics - Anfänger-Themen 4
I Vererbung Java Basics - Anfänger-Themen 13
W OOP Vererbung und Problem bei Zählschleife in einer Methode Java Basics - Anfänger-Themen 10
W Methoden Verständnisfrage Vererbung von Methoden Java Basics - Anfänger-Themen 14
V Vererbung Java Basics - Anfänger-Themen 2
J Frage zur Vererbung Java Basics - Anfänger-Themen 1
J Vererbung Java Basics - Anfänger-Themen 3
U Was löst meine NullPointerException aus? (Vererbung) Java Basics - Anfänger-Themen 12
O Vererbung Ueben mit kleiner Datenstruktur von Räumen Java Basics - Anfänger-Themen 10
O Umgang mit Vererbung verstehen Java Basics - Anfänger-Themen 4
A Vererbung/Interfaces/Generics Java Basics - Anfänger-Themen 12
O Vererbung änderung des Konstruktors Java Basics - Anfänger-Themen 8
L Vererbung Java Basics - Anfänger-Themen 5
E HashMap+Vererbung Java Basics - Anfänger-Themen 11
E Vererbung super-Methoden Aufruf Java Basics - Anfänger-Themen 3
B Java Vererbung Fragen (zu Code Beispiel) Java Basics - Anfänger-Themen 3
A Objekterstellung bei der Vererbung Java Basics - Anfänger-Themen 7
P Vererbung Warum funktioniert die Vererbung hier nicht Java Basics - Anfänger-Themen 14
S Vererbung Java mehrfach Java Basics - Anfänger-Themen 10
B Objekte zählen/ Vererbung/ Kopplung/ Interface/ Abstract Class Java Basics - Anfänger-Themen 5
A Klassen Vererbung privater Methoden und Member Java Basics - Anfänger-Themen 12
A Konstruktoren Vererbung Java Basics - Anfänger-Themen 3
ReinerCoder Vererbung von JFrame in einer Klasse entfernen Java Basics - Anfänger-Themen 5
W Vererbung, abstract und Konstruktoren Java Basics - Anfänger-Themen 30
J Vererbung und Methodenaufruf Java Basics - Anfänger-Themen 11
G Polymorphie, Vererbung, statischer Typ, Laufzeittyp Java Basics - Anfänger-Themen 2
H Vererbung mit private instanzvariablen Java Basics - Anfänger-Themen 9
S Vererbung Funktionsweise Code zur Vererbung Java Basics - Anfänger-Themen 1
C Methoden Vererbung private Attribute/public Methoden Java Basics - Anfänger-Themen 4
S Verständnis Vererbung Java Basics - Anfänger-Themen 3
D JavaFX Vererbung Java Basics - Anfänger-Themen 2
U Vererbung Generizität und Vererbung Java Basics - Anfänger-Themen 4
A Vererbung bei Klassen mit Objekt der Klasse im Konstruktor Java Basics - Anfänger-Themen 4
K Vererbung Octagon von Circle Java Basics - Anfänger-Themen 0
B Hilfe bei Vererbung Java Basics - Anfänger-Themen 2
D Vererbung Frage zum Klassenaufbau mit Vererbung Java Basics - Anfänger-Themen 1
T Vererbung und interface. Java Basics - Anfänger-Themen 1
S Gehaltsberechnung (Vererbung, abstrakte Methoden) Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 1
F Vererbung in zwei Richtungen? Java Basics - Anfänger-Themen 14
D Vererbung / Polymorphie Java Basics - Anfänger-Themen 5
O Vererbung Java Basics - Anfänger-Themen 5
MiMa Vererbung Theorie OK, Praxis ?? Java Basics - Anfänger-Themen 4
Arif Vererbung Vererbung Variablen überschreiben Java Basics - Anfänger-Themen 1
C Vererbung - Ausgaben bestimmen Java Basics - Anfänger-Themen 6
S Vererbung Java Basics - Anfänger-Themen 10
L Setter und Getter/Vererbung Java Basics - Anfänger-Themen 6
C Konstruktoren und Vererbung Java Basics - Anfänger-Themen 2
J Kleinere Frage zur Vererbung/Objekterzeugung Java Basics - Anfänger-Themen 2
G Vererbung Java Basics - Anfänger-Themen 12
J Vererbung privater Variablen Java Basics - Anfänger-Themen 7
J Vererbung Vererbung von Methoden Java Basics - Anfänger-Themen 6
K Vererbung (super) Java Basics - Anfänger-Themen 2
A ArrayQueue mit Exceptions und Vererbung Java Basics - Anfänger-Themen 3
J Java: static bei Vererbung Java Basics - Anfänger-Themen 5
C Vererbung Java Basics - Anfänger-Themen 4
L Vererbung Java Basics - Anfänger-Themen 3
J Klassenorganisation | Vererbung Java Basics - Anfänger-Themen 1
B Vererbung Vererbung Java Basics - Anfänger-Themen 2
N Generics Vererbung Wildcard Interface Java Basics - Anfänger-Themen 8
A Benötige Hilfe bei Vererbung Java Basics - Anfänger-Themen 1
M Anfängerprobleme mit Vererbung Java Basics - Anfänger-Themen 27
J Vererbung Java Basics - Anfänger-Themen 9
F Vererbung von Attributen zwischen zwei Klassen Java Basics - Anfänger-Themen 6
J Konstruktor Problem bei Vererbung Java Basics - Anfänger-Themen 1

Ähnliche Java Themen

Neue Themen


Oben