Implementierung der Klasse Quad

kurwajebana

Grünschnabel
Hallo, kann mir jemand Helfen? Die Klasse Quad repräsentiert Parallelogramme, Rechtecke und Quadrate. Der erste Punkt dieser
Vierecke ist immer der Ursprung mit Koordinaten x= 0, y= 0. Der zweite Punkt liegt immer auf der x-Achse,
d.h. es ist y= 0. Für ein Quadrat muss man nur einen Punkt angeben, für die anderen beiden Vierecke zwei
Punkte. Der zweite Punkt darf nicht auf der x-Achse liegen (sonst gibt es kein Viereck!).

Code:
enum QType {PARA, RECT, SQUARE} // Parallelogramm, Rechteck, Quadrat

public class Quad /* Viereck */ { // nur diese Felder erlaubt!
    
    private QType qType; // der Typ des Vierecks, siehe Ausgabe
    private Point[] v; // die Ecken
// ungültige Punkte oder Koordinaten lösen eine IllegalArgumentException aus!
    public Quad(Point... vertex) { // etwa 10-15 Zeilen, siehe auch Ausgabe!
                
    }
    
    // gibt den Umfang des Vierecks zurück
    public double circumference() { // Nur diese Variable erlaubt
        double c=  // Variable für Umfang
                switch (qType) { // switch mit qType muss verwendet werden

                }
                return c;
    }
    
    public String toString() { // siehe Ausgabe!
// es muss die for-each Schleife verwendet werden!
    }
}

Code:
Quad q= new Quad(new Point(1,0));
System.out.println(q);
System.out.println(q.circumference());
q= new Quad(new Point(1,0),new Point(1,3));
System.out.println(q);
System.out.println(q.circumference());
q= new Quad(new Point(1,0),new Point(2,1));
System.out.println(q);
System.out.println(q.circumference());
q= new Quad(new Point(1,1));
q= new Quad(new Point(1,0),new Point(2,0));
q= new Quad(new Point(1,0),new Point(2,1),
new Point(2,2));

Code:
Ausgabe: 

SQUARE: [1,0]
4.0

RECT: [1,0][1,3]
8.0

PARA: [1,0][2,1]
4.82842712474619

IllegalArgumentException: Koordinaten nicht ok!

IllegalArgumentException: Koordinaten nicht ok!

IllegalArgumentException: Punktangaben nicht ok!
 
Hast du denn schon selber versucht was zu programmieren?

Wo liegt konkret dein Problem?

Das was du hier gepostet hast scheint ja eine Schul- oder Uniaufgabe zu sein und daher solltes du schon selber versuchen diese zu lösen.
 
Hast du denn schon selber versucht was zu programmieren?

Wo liegt konkret dein Problem?

Das was du hier gepostet hast scheint ja eine Schul- oder Uniaufgabe zu sein und daher solltes du schon selber versuchen diese zu lösen.

Wennich nicht weiterkomme kann ich das auch nicht alleine machen. Ich häge schon seit Stundne dran und mir fällt nichts ein, wie ich den Konstrukter implementieren soll, ausser dass ich dort die jeweilige Exception werfen kann, mit thorw new IllegalArgumentException("Koordinaten nicht OK"); und dass ich bei der Methode circumference switch case anwenden kann: case PARA: ...
case RECT:
case SQUARE
 
Java:
import java.awt.Point;

/**
 * @author KoMtuR
 */
enum QType { PARA, RECT, SQUARE };

public class Quad {
    private QType qtype;
    private Point[] v;
    
    public Quad(Point... points) throws IllegalArgumentException {
	if(points[0].y != 0)
	    throw new IllegalArgumentException("1. Punkt befindet sich nicht auf der X-Achse");

	int len = points.length;
	switch(len) {
	    case 1:
		qtype = QType.SQUARE;
		break;
	    case 2:
		if(points[1].y == 0)
		    throw new IllegalArgumentException("2. Punkt darf sich nicht auf der X-Achse befinden");
		if(points[0].x == points[1].x)
		    qtype = QType.RECT;
		else
		    qtype = QType.PARA;
		break;
	    default:
		throw new IllegalArgumentException("zuviele Punkte angegeben");
	}
	v = points;
    }
    public double circumference() { // Nur diese Variable erlaubt
        double c= 0.0;  // Variable für Umfang
	switch (qtype) { // switch mit qType muss verwendet werden
	    case SQUARE:
		//hier Berechnung für den Umfang für SQUARE einfügen
		c = 1.0;
		break;
	    case RECT:
		//hier Berechnung für den Umfang für RECT einfügen
		c = 2.0;
		break;
	    case PARA:
		//hier Berechnung für den Umfang für PARA einfügen
		c = 3.0;
	}
	return c;
    }
    
    @Override
    public String toString() {
	StringBuffer sb = new StringBuffer();
	switch (qtype) { // switch mit qType muss verwendet werden
	    case SQUARE:
		//hier Berechnung für den Umfang für SQUARE einfügen
		sb.append("SQUARE: ");
		break;
	    case RECT:
		//hier Berechnung für den Umfang für RECT einfügen
		sb.append("RECT: ");
		break;
	    case PARA:
		//hier Berechnung für den Umfang für PARA einfügen
		sb.append("PARA: ");
	}
	for(Point p : v) {
	    sb.append("[");
	    sb.append(p.x);
	    sb.append(",");
	    sb.append(p.y);
	    sb.append("]");
	}
	
	return sb.toString();
    }
}

Aber bevor du nun Copy+Paste machst sollteste nochma anschauen, wo du noch was verändern musst :rolleyes:

(PS.: Ist das normal, dass der meine schöne Formatierung immer kaputt macht :eek:)
 
Zurück