Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
kaum ist die Semesterpause um, schon ist das Hirn formatiert. Ich bin am verzweifeln...
ich soll in der Klasse selber einen Radius r mit dem Modifikator private erstellen. Das habe ich gemacht. Danach soll ich mit einem Standardkonstruktor darauf zugreifen. Auch das hat wohl geklappt... zumindestens habe ich unten in der Main-Methode newCircle(2) erstellt und mit println r ausgeben lassen und es wird eine 2 gedruckt. Ich soll aber jetzt mit setValue und getValue den Radiuswert ändern. Außerdem mit show die Werte Radius, Umfang und Fläche zurückgeben... wie übergebe ich denn nun einen Wert z.B. an Area oder Circumference?
Ich verstehe nicht wieso Radius Private sein muss... und warum ich Set und Get und den ganzen Schmarrn brauche... über Scanner könnte man viel schöner den Radius eingeben und ich könnts auf die Konsole ausrechnen lassen... aber das ist leider nicht die Aufgabe...
Ich hoffe ihr könnt mir helfen.
Lieben Gruß
Code:
public class Circle {
private static int r = 0;
public static double pi = 3.14159;
public Circle (int r) {this.r=r;}
public double circumference (double pi, int r) {
double circumference;
circumference = 2 * pi * r;
return circumference;
}
public double area (double pi, int r) {
double area;
area = r * pi * r;
return area;
}
public static void main(String[] args) {
Circle kreis = new Circle(2);
System.out.println(r);
}
}
hier wohl eine Erweiterung zum Üben!! Getter und Setter sind nun mal der übliche 'Mechanismus' um Werte von außen an eine Klasse/ein Objekt zu übergeben rsp. abzufragen!
Nur weil Dein Beispiel sehr einfach ist, muss sowas ja kein Schmarrn sein !!
Weißt du, was 'static' bei einer Variable heißt? Sie existiert nur ein einziges Mal. Was passiert nun, wenn du ein zweiten Kreis mit Radius 3 erstellt? Beide Kreise haben nun den Radius 3. Das ist sicherlich nicht Sinn der Sache. Also: 'static' bei 'r' weg, dann brauchst du 'r' auch nicht als Parameter bei 'circumference' und 'area'.
PS: 'pi' brauchst du auch nicht als Parameter, da du darauf Zugriff hast in den Methoden.
Moin,
der "Schmarrn" nennt sich Encapsulation und ist neben Inheritance, Polymorphism und Abstraction eines der 4 Grundprinzipien von OOP.
Der Grundgedanke dahinter ist Attribute einer Klasse vor anderen Klassen "zu verstecken", sodass sie nur noch über die Methoden (bspw Getter und Setter) angesprochen und verändert werden können.
Das ganze hat den Hintergrund, dass du dadurch Variablen read-only oder write-only machen kannst - mit einem Attribut das "public" ist kannst du das nicht umsetzen.
Desweiteren hat dadurch die Klasse allein die Kontrolle darüber was in ihren Attributen gespeichert wird.
Als kleines Beispiel kann man deinen Radius nehmen, der ja nicht negativ sein sollte.
Über einen Setter kannst du so ganz leicht implementieren, dass wenn der Radius negativ ist bspw. eine Exception geworfen wird.
Ich würde einfach mal in den Raum werfen, dass circumference und area auch Instanzvariablen der Circle-Klasse sein sollten und auch nicht jedes mal neu über eine Methode berechnet werden müssen.. PI ist eine Konstante und der Radius ist auch ein Attribut eines Kreise und muss somit nicht übergeben werden.
So lässt sich dann deine show-Methode einfacher implementieren, da du ja über das Objekt auf die Attribute zugreifen kannst und somit nichts übergeben musst.