Hallo zusammen,
ich hatte eine Studienaufgabe und wollte gerne mal hören, was ihr zu meinen Lösungen sagt:
Aufgabe:
Zweidimensionale geometrische Figuren können über unterschiedliche Charakterisitka definiert werden. Gemeinsam ist ihnen, dass der Flächeninhalt eine interessante Kenngröße ist.
Diesem Umstand kann Rechnung getragen werden, indem eine Schnittstelle GeometricShape
angeboten wird, die eine Methode area enthält, die den Flächeninhalt als double-Wert
zurückgibt.
a) Geben Sie eine Implementation der Schnittstelle GeometricShape an.
Meine Lösung:
interface GeometricShape {
double area( ) {
}
}
b) Basierend auf einer solchen Schnittstelle könnte nun eine Klasse Circle definiert werden,
die zusätzlich ein double-Attribut radius besitzt. Geben Sie eine Implementation der Klasse Circle an.
Meine Lösung:
public class Circle implements GeometricShape {
private double radius;
public Circle ( double radius) {
this.radius = radius;
}
public double area ( ) {
double ergebnis = 2* this.radius * Maht.PI;
return ergebnis;
}
}
c) Wir nehmen nun weiterhin an, dass eine Klasse Rectangle gegeben sei, die die
privaten Attribute a und b mit Getter und Setter getA, getB, setA, setB besitzt, um die Höhe und die Breite des Rechtecks zu repräsentieren. Ein spezielles Rechteck stellt das Quadrat dar, bei dem Höhe und Breite gleich sind. Geben Sie, basierend auf der Klasse Rectangle,
eine Implementation der Klasse Square an, die der Spezialisierungseigenschaft Rechnung
trägt. Stellen Sie dabei insbesondere sicher, dass ein Quadrat auch wirklich nur mit
gleichen Höhen und Breiten existieren kann.
Meine Lösung:
public class Square extends Rectangle {
public Square (double a, double b) {
if (a != b ) {
throw new IllegalArgumentExcetion();
}
this.a = a;
this.b = b;
}
public double area (double a, double b) {
double ergebnis = a * b;
return ergebnis;
}
}
d) Wir wollen nun die Rectangle-Klasse um eine Methode scale erweitern, die eine
positive double-Zahl factor entgegen nimmt und das Rechteck derart skaliert, dass die Fläche um den Faktor factor skaliert wird. Die Fläche des Rechtecks soll also nach Anwendung der Methode ein factor-faches der ursprünglichen Fläche sein, ohne das Verhältnis der Seitenlängen zu ändern. Falls eine unzulässige (also nicht-positive) Skalierung
angefordert wird, soll eine Ausnahme geworfen werden.
Meine Lösung:
public class Rectangle.....
public double scale ( double zahl) {
double x = this.a * zahl;
double y = this.b * zahl;
double ergebnis = area ( x, y);
return ergebnis;
}
e) Erstellen Sie eine ArrayList mit einem Square-Objekt und einem Circle-Objekt und geben
Sie mit Hilfe einer Schleife deren Flächen aus.
Meine Lösung:
List<ArrayList> liste1 = new ArrayList<GeometricShape>();
liste1.add(new Square(3, 3));
liste1.add(new Circle(5));
for (int i = 0; i <liste1.size(); i++ ) {
System.out.println(liste1.area());
}
Seid bitte nicht zu hart zu mir, ich bin noch Anfänger : ).
Was sagt ihr zu meinem Code und meinen Lösungen? Sind Fehler drin und wenn ja, wo und warum ?
Vielen Dank im Voraus.
ich hatte eine Studienaufgabe und wollte gerne mal hören, was ihr zu meinen Lösungen sagt:
Aufgabe:
Zweidimensionale geometrische Figuren können über unterschiedliche Charakterisitka definiert werden. Gemeinsam ist ihnen, dass der Flächeninhalt eine interessante Kenngröße ist.
Diesem Umstand kann Rechnung getragen werden, indem eine Schnittstelle GeometricShape
angeboten wird, die eine Methode area enthält, die den Flächeninhalt als double-Wert
zurückgibt.
a) Geben Sie eine Implementation der Schnittstelle GeometricShape an.
Meine Lösung:
interface GeometricShape {
double area( ) {
}
}
b) Basierend auf einer solchen Schnittstelle könnte nun eine Klasse Circle definiert werden,
die zusätzlich ein double-Attribut radius besitzt. Geben Sie eine Implementation der Klasse Circle an.
Meine Lösung:
public class Circle implements GeometricShape {
private double radius;
public Circle ( double radius) {
this.radius = radius;
}
public double area ( ) {
double ergebnis = 2* this.radius * Maht.PI;
return ergebnis;
}
}
c) Wir nehmen nun weiterhin an, dass eine Klasse Rectangle gegeben sei, die die
privaten Attribute a und b mit Getter und Setter getA, getB, setA, setB besitzt, um die Höhe und die Breite des Rechtecks zu repräsentieren. Ein spezielles Rechteck stellt das Quadrat dar, bei dem Höhe und Breite gleich sind. Geben Sie, basierend auf der Klasse Rectangle,
eine Implementation der Klasse Square an, die der Spezialisierungseigenschaft Rechnung
trägt. Stellen Sie dabei insbesondere sicher, dass ein Quadrat auch wirklich nur mit
gleichen Höhen und Breiten existieren kann.
Meine Lösung:
public class Square extends Rectangle {
public Square (double a, double b) {
if (a != b ) {
throw new IllegalArgumentExcetion();
}
this.a = a;
this.b = b;
}
public double area (double a, double b) {
double ergebnis = a * b;
return ergebnis;
}
}
d) Wir wollen nun die Rectangle-Klasse um eine Methode scale erweitern, die eine
positive double-Zahl factor entgegen nimmt und das Rechteck derart skaliert, dass die Fläche um den Faktor factor skaliert wird. Die Fläche des Rechtecks soll also nach Anwendung der Methode ein factor-faches der ursprünglichen Fläche sein, ohne das Verhältnis der Seitenlängen zu ändern. Falls eine unzulässige (also nicht-positive) Skalierung
angefordert wird, soll eine Ausnahme geworfen werden.
Meine Lösung:
public class Rectangle.....
public double scale ( double zahl) {
double x = this.a * zahl;
double y = this.b * zahl;
double ergebnis = area ( x, y);
return ergebnis;
}
e) Erstellen Sie eine ArrayList mit einem Square-Objekt und einem Circle-Objekt und geben
Sie mit Hilfe einer Schleife deren Flächen aus.
Meine Lösung:
List<ArrayList> liste1 = new ArrayList<GeometricShape>();
liste1.add(new Square(3, 3));
liste1.add(new Circle(5));
for (int i = 0; i <liste1.size(); i++ ) {
System.out.println(liste1.area());
}
Seid bitte nicht zu hart zu mir, ich bin noch Anfänger : ).
Was sagt ihr zu meinem Code und meinen Lösungen? Sind Fehler drin und wenn ja, wo und warum ?
Vielen Dank im Voraus.