Methoden für was eine set zur get - Methode ??

Dopa

Mitglied
Hallo, im Buch: Programmieren lernen mit Java: Aktuell zu Java 7 - Keine Vorkenntnisse erforderlich: Amazon.de: Hans-Peter Habelitz: Bücher hat es eine Aufgabe :

Erstellen sie eine Klasse mit dem Namen Kreis. Die Klasse soll nur eine Datenelement (Attribut) mit dem Namen radius verfügen, indem der Radius als Kommazahl festgehalten wird. Erstellen Sie einen Konstruktor mit leerer Parameterliste, der den Radius mit dem Wert 0 initialisiert, und einen Konstruktor, dem als Parameter eine Kommmazahl zur Initialisierung des Radius übergeben wird. Als Methoden soll die Klasse verfügen über:

Java:
double getRadius();
set Radius(double r);
double getUmfang();
double getFlaeche();

Erstellen Sie dazu ein Testprogramm mit dem Namen Kreistest, das mit einem JOptionPane.showInputDialog den Radius eines Kreises einliêst und anschliessend durch Aufruf der drei Methoden den Radius, den Umfang und die Fläche des Kreises in der Konsole (mit System.out.println) ausgibt.

umfang = 2.0 * 3.1415926 * radius;
flaeche = 3.1415926 * radius * radius;

Die Lösung ist :

Kreis.java:

Java:
package uebung06;

/*
 * Klasse Kreis
 * Hans-Peter Habelitz
 * 2011-12-21
 */

public class Kreis {
    double radius;

    Kreis() {
	radius = 0;
    }

    Kreis(double r) {
	radius = r;
    }

    double getRadius() {
	return radius;
    }

    void setRadius(double r) {
	radius = r;
    }

    double getUmfang() {
	return 2 * Math.PI * radius;
    }

    double getFlaeche() {
	return Math.PI * radius * radius;
    }

    void setUmfang(double u) {
	radius = u / (2 * Math.PI);
    }

    void setFlaeche(double f) {
	radius = Math.sqrt(f / Math.PI);
    }
}

und Kreisberechnung.java:

Java:
package uebung06;

/*
 * Programm Kreis zum Testen der Klasse Kreis
 * Hans-Peter Habelitz
 * 2011-12-21
 */

import javax.swing.JOptionPane;

public class Kreistest {
    public static void main(String[] args) {
	String kreisradius, einheit;
	double r;
	kreisradius = JOptionPane
		.showInputDialog("Geben Sie einen Kreisradius ein:");
	einheit = JOptionPane.showInputDialog("Geben Sie die Maßeinheit ein:");
	r = Double.parseDouble(kreisradius);
	Kreis k = new Kreis(r);
	System.out.println("Kreisradius: " + k.getRadius() + " " + einheit);
	System.out.println("Umfang: " + k.getUmfang() + " " + einheit);
	System.out.println("Fläche: " + k.getFlaeche() + " " + einheit
		+ '\u00b2');
    }

}

1.) Wieso braucht es überhaupt eine set-Methode?

Weil ohne die set funktioniert das Programm genauso..

Dachte zuerst jede get-Methode brauchst eine set-Methode?

2.) Rechnet der Compiler automatisch um? Die Schreibweise ist etwas verwirrend...warum nicht u = ..... ?

Java:
void setUmfang(double u) {
	radius = u / (2 * Math.PI);
 
Dachte zuerst jede get-Methode brauchst eine set-Methode?
Nein.

Viele IDEs bieten an, automatisch getter/setter zu generieren und da werden häufig beide Varianten gewählt, obwohl das nicht immer sinnvoll ist.

Dadurch werden Objekte mutable, also veränderlich. Dies ist in gewissen Situationen aber unpraktisch.

Daher sind beispielsweise die Wrapper-Klassen wie Integer, Double auch immutable (nicht veränderlich) und haben keine setter-Methoden, weil es komisch ist, wenn ein Integer(4) gemacht wird, diese Zahl aber später zu einer Fünf mutiert.
 
aber ganz verstanden hab ichs nicht...(zu objektorientiert) & Wrapper-Klassen kommen erst 40 Seiten später 🙂 werde evtl darauf zurückkommen demnächst
 
Zuletzt bearbeitet:

Neue Themen


Zurück
Oben