dimanche 24 mai 2015
Kapselung, Verständnisfrage zur Objekterzeugung
Posted on 09:13 by verona
Hallo zusammen,
ich lerne gerade Java und arbeite dabei unter anderem mit der Seite Java Tutorial interaktiv - Programmieren lernen mit Java
Dort habe ich nun folgende Aufgabe:
Zusammengefasst, weil auch nicht meine eigentliche Frage:
- 5 Integer-Werte einlesen und ausrechnen
- am Anfang einmalige Frage ob man jedes mal die Eingabeaufforderung lesen möchte
--> Auswertung der Frage <ja> oder <nein>
- ja oder nein einlesen
Sooo, das Programm an sich läuft, aber nur weil ich, wie ich weiß verbotener Weise einige Variablen auf public gesetzt habe. Hier erstmal der Code
Und die Testklasse mit main methode:
Ich weiß , dass man ein Objekt, was in einer anderen Klasse genutzt wird erst erzeugt und dann mit dem Punkt-Operator aufgerufen wird. Was ich nun von euch möchte :) Warum schaffe ich es nicht die Öffentlichen Instanzvariablen private zu kriegen, zunächste dachte ich bei den String-Variablen(Objekten?) ok, String ist eine Klasse vllt liegt es daran, aber auch die Variable < public int eingabeZahl = 1; > wollte im private modus nicht über den Aufruf eq.eingabeZahl sich kompilieren lassen. Irgendwie habe ich da gerade ein Brett vorm Kopf, vllt sitze ich schon zu lange davor.
Wenn ihr noch Tipps zur Code-Schlankheit bzw. Schönheit höre ich mir das auch gerne an, kommt mir so klobig vor.
Vielen dank und n schönen Sonntag + Feiertag morgen :)
ich lerne gerade Java und arbeite dabei unter anderem mit der Seite Java Tutorial interaktiv - Programmieren lernen mit Java
Dort habe ich nun folgende Aufgabe:
Zusammengefasst, weil auch nicht meine eigentliche Frage:
- 5 Integer-Werte einlesen und ausrechnen
- am Anfang einmalige Frage ob man jedes mal die Eingabeaufforderung lesen möchte
--> Auswertung der Frage <ja> oder <nein>
- ja oder nein einlesen
Sooo, das Programm an sich läuft, aber nur weil ich, wie ich weiß verbotener Weise einige Variablen auf public gesetzt habe. Hier erstmal der Code
Code:
public class Equalis {
private int sum;
private int zahl;
private String eingabeJaNein;
public String antwort = "ja";
public String optimiert;
public int eingabeZahl = 1;
public boolean eingabeaufforderung = true;
Scanner scan = new Scanner(System.in);
// Liest die Eingabeaufforderung ein und setzt dann die boolsche
// Variable eingabeaufforderung auf false.
// Vorher wird noch zur Sicherheit ein Ja, JA, Nein, oder NEIN etc.
// mit toLowerCase() in ja oder nein umgewandelt
public void eingabe() {
System.out.println("Eingabeaufforderung anzeigen: <ja> oder <nein>? ");
eingabeJaNein = scan.nextLine();
optimiert = eingabeJaNein.toLowerCase();
eingabeaufforderung = false;
}
// Fordert eine Zahlenangabe ein, und liest diese dann ein und addiert sie zur Gesammtsumme
public void zahl() {
System.out.println("Geben Sie die "+eingabeZahl+". Zahl ein: ");
zahl = scan.nextInt();
sum += zahl;
}
// Falls der Anwender keine Eingabeaufforderung lesen möchte, wird diese Methode ausgeführt
public void ohne() {
System.out.println("");
zahl = scan.nextInt();
sum += zahl;
}
// Gibt das Ergebnis aus
public void printErgebnis() {
System.out.println("Gesammtsumme: " +sum);
}
} // Ende Klasse
Code:
public class EqualisTest {
public static void main(String[] args) {
// Objekterzeugung
Equalis eq = new Equalis();
// Zählschleife um die Zahl der Eingabeaufforderung zu inkrementieren
for (eq.eingabeZahl = 1; eq.eingabeZahl < 6; eq.eingabeZahl++) {
// Solange eingabeaufforderung true ist, also nur einmal, wird die Eingabe <ja> oder <nein> eingelesen
if (eq.eingabeaufforderung == true) {
eq.eingabe();
}
// Gibt der Anwender "Ja" ein wird zahl() ausgeführt, ansonsten ohne()
if (eq.optimiert.equals(antwort)) {
eq.zahl();
}else{
eq.ohne();
}
}
eq.printErgebnis();
}
}
Wenn ihr noch Tipps zur Code-Schlankheit bzw. Schönheit höre ich mir das auch gerne an, kommt mir so klobig vor.
Vielen dank und n schönen Sonntag + Feiertag morgen :)
Kapselung, Verständnisfrage zur Objekterzeugung
Categories: Kapselung, Verständnisfrage zur Objekterzeugung
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire