Java Verständnis Problem Methoden etc.

s87

Mitglied
Hi Leute,

wir Ihr seht bin ich immernoch am Ball und versuche mich bzgl. Java zu verbessern. Der nächste Schulblock steht bevor (lerne Fachinformatiker für Systemintegration) steht bevor und ich wollte die Java Aufgabe aus dem letzten Block schon mal machen weil ich es einfach nicht verstanden habe... Jetzt sitz ich davor und kann mir das schon wieder einfach nicht erklären...

Die Aufgabe lautet wie folgt: (sorry für den Roman jetzt... 🙂)

Aufgabe Konto.java - KontoTest.java

In einer Bank werden die Konten der Kunden mit Hilfe eines objektorientierten Computerprogramms verwaltet. Vereinfacht dargestellt besitzt jeder Kunde ein Konto. Daher muss von jedem Kunden der Name und der anfängliche Kontostand bekannt sein.
Methode buchen()
Über die Methode buchen() kann der Kunde Ein- bzw. Auszahlungen vornehmen (Auszahlungen werden durch ein vorangestelltes "-" dargestellt). Die Bank zahlt jedoch nur den gewünschten Betrag vom Konto aus, wenn dieser auch in voller Höhe gedeckt ist (Kontostand >= Auszahlungsbetrag). Eine Ausgabe soll den jeweiligen Vorgang dokumentieren (erfolgreich? ja/nein).
Methode zinsenberechnen()
Das Konto wird mit einem Zinssatz von 1.25% verzinst. Durch Ausführen der Methode zinsenberechnen() werden die Zinsen für den akt. Kontostand ermittelt und an die aufrufende Stelle zurück gegeben.

  • Erstellen Sie eine "Bauplanklasse" (Konto.java), die die beschriebenen Funktionalitäten besitzt. Berücksichtigen sie auch das angegeben Klassendiagramm.
===============
Konto
===============
kontostand: double
kundenname: string
zinssatz: double
-------------------
buchen(betrag: double): void*
zinsenBerechnen(): double

  • Erstellen Sie ein ausführbare Klasse (KontoTest.java), in der ein Kundenobjekt erzeugt wird. Weisen Sie den Attributen kundenname und kontostand einen Wert zu und rufen Sie die Methoden auf. Der Kundenname, der Kontostand sowie der Buchungsbetrag sollen über die Aufrufparameter eingelsen werden. In der Klasse KontoTest sollen folgende Ausgaben stattfinden: ......................

Mein Problem ist schlicht weg das ich es einfach nicht verstehe, mir wäre sehr geholfen wenn ihr mir jetzt nicht wieder mit dem "Java ist eine Insel" Buch kommt, kann mit selbstformuliertem meist mehr anfangen...

Soweit bin ich gekommen ^^

Java:
//===Bauplan Klasse Konto
class Konto
{
double zinssatz, kontostand;			
String Kundenname;

//Methoden
	void buchenbetrag(betrag)
	{
	//TO DO 
	
	}
	
	double zinsberechnung()
	{
	//TODO
	}

}
  
  
class KontoTest
{
  public static void main(String[] args)
	{
	//TO DO
	int kontostand,betrag;
	String kundenname;
	
	kundenname = args[0];
	kontostand = Integer.parseInt(args[1]);
	betrag = 	Integer.parseInt(args[2]);
	
	konto kunde = new konto(); //Konto erstellen
	
	buchenbetrag(betrag);
	}
}

z.B Wenn die Methode buchen() nur einen Wert bekommt, wie in dem Fall jetzt wie viel abgehoben bzw. eingezahlt werden soll, woher will die Methode wissen mit was sie das überprüfen soll wenn ich den Kontostand gar nicht mehr in die Methode gebe????

Und wie soll in der zinsenBerechnen() was passiereb wenn die gar nichts bekommt??? Ich versteh es echt überhaupt nicht! 🙁
Danke schon mal 🙂

Grüße
 
Zuletzt bearbeitet:
woher will die Methode wissen mit was sie das überprüfen soll wenn ich den Kontostand gar nicht mehr in die Methode gebe????

Und wie soll in der zinsenBerechnen() was passiereb wenn die gar nichts bekommt?
Die Methoden können ja auf die Instanzvariablen zugreifen. Eventuell mal ein paar Kapitel zurück springen Globale vs. lokale Variablen

Benutzt Du eine Entwicklungsumgebung? Die würde Dir die Fehler im Code gleich highlighten - würde das coden ein bisschen erleichtern.

Ansonsten als Starthilfe
Java:
	class Konto {
		private String name;
		private double kontostand, zinssatz= 0.0125;
		
		public Konto(String name, double startBetrag) {
			this.name = name;
			this.kontostand = startBetrag;
		}
		
		public void buchen(double betrag) {
			//To do
		}
		
		public double zinsBerechnen() {
			//To do
			return 0.0;
		}
	}
 
hi danke für die schnelle Antwort, und nein benutze ich nicht (Notepad++) wie in der Schule und in der Abschlussprüfung auch! 🙂

naja so wirklich wird mir nicht klar was du mir damit sagen willst aber ich versuch mal was draus zu machen...

btw. dieses "this." haben wir noch nie benutzt... ^^

cheers
 
Zuletzt bearbeitet:
Du hat doch in der Klasse konto eine Variable kontostand, mit der kann buchebetrag(double) natürlich arbeiten.

Allerdings wird in Deiner Klasse der Variable nirgends ein Wert zugewiesen. Den kannst Du beispielsweise über den Konstruktor zuweisen, dann kann er nur einmal beim Erzeugen des Objektes angegeben werden; oder Du kannst einen Setter setzeKontostand(double stand) dafür schreiben, dann kann er jederzeit über diese Methode geändert werden.

Java:
public class Konto {
    private String besitzer
    private double kontostand;
    private double zinssatz = 0.0125d;

    public Konto(String besitzer, double kontostand) {
        this.besitzer = besitzer;
        this.kontostand = kontostand;
    }

    public void buchen(double betrag) {
        if (betrag < 0 && kontostand + betrag < 0) {
            System.out.println("Zu wenig Geld auf dem Konto.");
        } else {
            kontostand += betrag;
            System.out.println("Es wurden " + betrag + " Taler verbucht.");
        }
    }

    public double gibKontostand() {
        return kontostand;
    }
}
Nun muß beim Erzeugen eines Kontoobjektes ein String (zum Beispiel der Kundenname) und der Kontostand angegeben werden. Die Daten sind gekapselt, wie es sich gehört, das heißt: die Variable kontostand ist privat, die sieht niemand von außerhalb und kann sie auch nicht ändern; den Kontostand kann man sich aber jederzeit mit gibKontostand() zurückgeben lassen.
 
Zuletzt bearbeitet:
Danke Wortraum, ich seh schon wir werden noch Freunde xD

Kann ich das so machen btgl. der Variablen?

Java:
//===Bauplan Klasse Konto
class Konto
{
private double	zinssatz=1.25,
						kontostand;
			
private String		Kundenname;

//Methoden
	void buchenbetrag(betrag)
	{
	//TO DO 
	}
	
	double zinsberechnung()
	{
	//TODO
	return 0.0;
	
	}

}
  
  
class KontoTest
{
  public static void main(String[] args)
	{
	//TO DO
	int 		kontostand,
				betrag;
	String 	kundenname;
	
	kundenname = 	args[0];
	kontostand = 	Integer.parseInt(args[1]);
	betrag = 			Integer.parseInt(args[2]);
	
	konto kunde = new konto(); //Konto erstellen
	kunde.kundenname = kundenname;
	kunde.kontostand = kontostand;
	kunde.betrag = betrag;
	
	buchenbetrag(betrag);
	}
}
 
btw. dieses "this." haben wir noch nie benutzt... ^^
Das sagt nur, daß die Klassenvariable verwendet werden soll, wenn es noch eine zweite mit gleichem Namen gibt.

Java:
public class EineKlasse {
    private String eineVariable;
    private String nochEine;

    public void einBeispiel(String eineVariable, String name) {
        /* eineVariable von der vorherigen Zeile überdeckt eineVariable aus Zeile 2 */
        /* Klassenvariablen (Zeile 2 und 3) kann man immer mit this.Variable ansprechen. */
        /* Wir wollen nun der Variable aus Zeile 2 den Wert des übergebenen Parameters zuweisen. */
        this.eineVariable = eineVariable;
        nochEine = name;
        /* Bei nochEine war das this nicht notwendig, da es nur eine Variable nochEine gibt, nämlich */
        /* die aus Zeile drei. */
    }
}
 
Bzgl Zeile 39 bis 41:
Kundenname in Klasse Konto <> kundenname in Klasse Kontotest
Abgesehen davon sind Kundenname und kontostand private --> sie können nicht von "aussen" modifiziert werden. Macht man üblicher Weise auch nicht sondern benutzt get und set Methoden bzw. übergibt (wie in meiner Bsp. Klasse) Variablen per Konstruktor
Die Variable betrag existiert in der Klasse Konto gar nicht.

Zeile 10: void buchenbetrag(betrag)
ist nicht komplierbar die Angabe des Variablen Typs fehlt
--> void buchenbetrag(double betrag)
oder schöner public void buchenbetrag(double betrag)
 
EDIT: Michael hat Dir noch die anderen Fehler erklärt und sich das ganze im Detail angeschaut. Ich habe es Dir eher allgemein beschrieben.

Kann ich das so machen btgl. der Variablen?
Jain und nein.

Zum Jain:
Zeile 39 und 40 sind allgemein möglich, aber so sollte man es niemals machen! Wie ein Objekt intern aussieht, wo, wie und was es intern speichert, sollte man von außen (hier in main) nicht sehen können. Außerdem hat jedes Objekt einen Zustand, also bestimmte Belegungen der Variablen, und den sollte man von außen nicht beliebig ändern können, indem man irgendwelche Variablen manipuliert. Ein Objekt sollte in sich immer gekapselt sein und nur zulassen, was es selbst will, indem es die entsprechenden Schnittstellen (Methoden) anbietet.

Zum Nein:
In Deinem Fall hast Du sogar schon verhindert, daß das geht, nämlich indem Du die Variablen in den Zeilen 4 und 7 private gesetzt hast. Sie sind daher nur innerhalb Konto bekannt, nicht aber in KontoTest; wären sie auf public gesetzt – und das wäre ganz schlecht! –, dann könntest Du die Zuweisung konto.kontostand = 100 ausführen.

In meinem Quelltext kann man den Kontostand nur beim Anlegen übergeben und dann nicht mehr ändern. So ist es auch bei einem normalen Konto. Der Konstruktor könnte auch noch prüfen, ob der Anfangskontostand positiv ist und andernfalls eine Fehlermeldung ausgeben, das Objekt kann also Werte akzeptieren oder abweisen.

Da man von außen nicht mehr auf Kontostand zugreifen kann, braucht man noch eine Methode der Art gibKontostand(), die den Kontostand zurückliefert. So eine Methode kann ganz einfach aufgebaut sein, aber auch kompliziert, indem sie erst noch etwas berechnet, prüft oder Daten konvertiert. Solche Methoden nennt man Getter.

Eine Entwicklungsumgebung wie Eclipse oder Netbeans hat für so etwas sogar extra Tastenkürzel oder Kontextmenüs, die für eine Variable automatisch Getter und Setter erzeugen. Setter ist einfach der Gegenpart zum Getter: das eine dient zum Setzen, das andere zum Zurückgeben.

Es ist eigentlich wie im richtigen Leben: An der Kasse im Supermarkt sind der Käufer und die Kassierin auch getrennt. Sie berechnet den zu zahlenden Betrag, und den zahlt man nicht, indem man ihr einfach das Geld in ihre Kasse stopft (also einfach eine Variable zuweist), sondern indem man es ihr ordentlich in die Hand gibt. Sie prüft, ob der Betrag stimmt, prüft vielleicht die Geldscheine auf Echtheit, sortiert das Geld dann nach ihrem System in die Fächer der Kasse und gibt das Wechselgeld zurück. Das eine „Objekt“ greift dem anderen niemals einfach in die Kasse oder die Geldbörse und stiftet Unordnung und Chaos, sondern alles läuft immer schön und geordnet über die Schnittstelle Hand ab.
 
Zuletzt bearbeitet:
hmm,...ich bin euch ja echt sehr dankbar aber wie zum Teufel kann ich das dann machen? Ich habe wirklich absolut keine Ahnung wie ich dann die Sachen dort übergeben soll...

200 Puls hab,........bald! -.-'
 
Zwischenstand:

Java:
//BAUPLANKLASSE KONTO
class konto
{
//VARs
private double zinssatz=1.25, kontostand;
private String	Kundenname;

//METHODEN
	public void buchenbetrag(double betrag)
	{
	System.out.println("bal!");
	}
	
	public double zinsberechnung()
	{
	return 0.0; 
	}

}
//KLASSE KONTOTEST
class KontoTest
{
  public static void main(String[] args)
	{
	//VARs
	int kontostand;
	String kundenname;
	double test, betrag;
	
	//LESE PARAMETER 
	kundenname = args[0];
	kontostand = Integer.parseInt(args[1]);
	betrag = Integer.parseInt(args[2]);
	
	//ERZEUGE 
	konto kunde;
	kunde = new konto();

	
	//RUFE AUF...
	konto.buchenbetrag(betrag);
	//zinsberechnung();
	}
}

in Z43 ist ein Fehler aber egal was ich ändere bringt er mir einen Fehler so wie es jetzt dort steht kommt der Fehler "non Static method buchenbetrag(double) cannot be referenced from a static context...

oooooooooooh man wie mich sowas aggresiv macht, wegen so ner f@#k aufgabe nicht weiter zu kommen.............................. so schwer kanns ja nich sein oder? -.-
 
Schönen guten Morgen,

wenn ich das richtig sehe, ....

Java:
    //ERZEUGE 
    konto kunde;
    kunde = new konto();
 
    
    //RUFE AUF...
    konto.buchenbetrag(betrag);

versuchst Du die statische Methode buchenbetrag(...) aus der Klasse konto aufzurufen.
In Deiner klasse konto ist diese Methode aber nicht als statisch gekennzeichnet.

Java:
 public void buchenbetrag(double betrag)
    {
    System.out.println("bal!");
    }

Probiers mal mit

Java:
 public static void buchenbetrag(double betrag)
    {
    System.out.println("bal!");
    }

... oder ruf die Methode nicht über den Klassennamen sondern über das angelegte Objekt auf.

Schau raus, die Sonne scheint ....

Gruß,
myjday
 
oooooooooooh man wie mich sowas aggresiv macht, wegen so ner f@#k aufgabe nicht weiter zu kommen
Hui..bleib ruhig, wird schon
so schwer kanns ja nich sein oder? -.-

Richtig ! =)

Zu deinem Fehler, solltest du dir mal folgendes durchlesen:
http://www.java-forum.org/stichwort...ic-method-cant-referenced-static-context.html

Du erstellst ja zuvor sogar ein Objekt, wieso rufst du dann die Methode nicht einfach auch auf dem Objekt auf?
[c]kunde.buchenbetrag(betrag);[/c]

p.s.: Wieso hast du jetzt den Anfangsbuchstaben des Klassennames kleingeschrieben? Vorher mit Großbuchstaben war das schon ganz richtig (Wortraum hat dir doch auch schon eine Grundlage/bzw fast alles ausprogrammiert 😀 )
 
haha das mit der Groß/Klein Schreibung war n Test... Wollte es eig. wieder groß schreiben bevor ich es hier poste ^^

das heisst wenn ich es über Kunde aufrufe, kann ich mir diesen pupblic static void klimbim sparen?!

wenn ich es über kunde aufrufe reicht void buchenbetrag(double betrag) odeR?

Sehr gut hatte das nicht verstanden warum das so nicht geht... na gut ich hoff ich bin ez mal n stück weiter und schau mal wie weit ich jetzt komme...!!!

vielen dank ich profis 😀

edit:

hehe ich dachte das wär des rätsels lösung aber da war ja noch mein problem von vorher, der methode buchenbetrag(betrag) wird wie man ja sieht nur der betrag übergeben, aber NICHT der kontostand,.. wie kann ich jetzt in der klasse mit dem kontostand arbeiten wenn der nicht übergeben wird, ist dass das mit dem THIS.? ^^
 
Zuletzt bearbeitet:
zum Klimbim:

Jedes Objekt besitzt eigene Eigenschaften (Variablen) in die es seine eigenen Werte abspeichern kann.
Gibt es zwanzig Objekte, so besitzt jedes Objekt für seine eigenen Werte eigenen Speicher.

Gibst Du jetzt einer Eigenschaft den Zusatz static, so steht dieser Speicher allen Objekten gemeinsam nur einmal zur Verfügung.

Bei Methoden bringt static den Vorteil, dass Sie nicht an ein bestimmtes Objekt gebunden sind. Das bedeutet, sie sind aufrufbar bevor überhaupt ein Objekt der zugehörigen Klasse existiert.

Daher auch die Möglichkeit statische Methoden über den Klassenname aufzurufen.

siehe public static void main(...)

Wann Du Klimbim machst hängt immer davon ab was Du vorhast ....

Gruß,
myjday
 
edit:

hehe ich dachte das wär des rätsels lösung aber da war ja noch mein problem von vorher, der methode buchenbetrag(betrag) wird wie man ja sieht nur der betrag übergeben, aber NICHT der kontostand,.. wie kann ich jetzt in der klasse mit dem kontostand arbeiten wenn der nicht übergeben wird, ist dass das mit dem THIS.? ^^

Schau dir doch das Beispiel von Wortraum an
Java:
    public void buchen(double betrag) {
        if (betrag < 0 && kontostand + betrag < 0) {
            System.out.println("Zu wenig Geld auf dem Konto.");
        } else {
            kontostand += betrag;
            System.out.println("Es wurden " + betrag + " Taler verbucht.");
        }
    }

Ja, man könnte
Code:
this.kontostand
anstelle von
Code:
kontostand
benutzen, um darauf hinzuweisen, dass es sich um eine Objektvariable handelt, aber unbedingt notwendig ist es an dieser Stelle nicht!
 
Um deinem "kunden" einen Kontostand zu geben müsstest du evtl noch einen Konstruktor einbauen:

Java:
class Konto
{
    double zinssatz, kontostand;            
    String Kundenname;
    
    public Konto(double kontostand){
        this.kontostand = kontostand;
    }

//....

Wenn du dann aufrufst
Code:
Konto kunde = new Konto(0);
hast du einen kunden mit dem Kontostand "0" erschaffen. Nun machst du
Code:
 kunde.buchenbetrag(betrag);
und das wird zu den "0" dazuaddiert und so dann auch im "kunden" gespeichert. Hoffe das war n bisschen verständlich so?! 😀

Edit: natürlich könnte man den Konstruktor noch eweitern, dass man sofort Name & Kontostand übergeben kann.

Bsp:
Java:
public Konto(String kundenname, double kontostand){
    this.kundenname = kundenname;
    this.kontostand = kontostand;
}
dann kannst du sogar gleich nach deinem parsen aufrufen:
Java:
Konto kunde = new Konto(kundenname, kontostand);
kunde.buchenbetrag(betrag);


Edit 2: Ach, ich würde noch aufpassen: In der Klasse Konto benutzt du
Code:
double
s aber du parst die benutzereingabe nur zu
Code:
 int
s ..
Sollte man so abändern:
Java:
   kontostand = Double.parseDouble(args[1]);
    betrag = Double.parseDouble(args[2]);


Achtung! Aller Code ohne Gewähr auf richtige Schreibweise!
 
Zuletzt bearbeitet:
ihr haltet mich sicher für dumm,... aber so ganz klar ist mir das noch nicht alles ich hoffe das klärt sihc im nächsten schulblock!

wenn ich das jetzt so mache, wie ihr meintet:

Java:
//_BAUPLANKLASSE KONTO
class Konto
{

//_VARs
private double zinssatz=1.25, kontostand;
private String	Kundenname;

//_
public Konto(double kontostand)
{
this.kontostand = kontostand;
}

//_METHODEN
	public void buchen(double betrag)
	{
	System.out.println(kontostand);
	System.out.println(betrag);
	}
	
	public double zinsberechnung()
	{
	return 0.0; 
	}

}
//_KLASSE KONTOTEST
class KontoTest
{
  public static void main(String[] args)
	{
	
	//_VARs
	double kontostand; 
	double betrag;
	String kundenname;
	
	//_LESE PARAMETER 
	kundenname = args[0];
	kontostand = Double.parseDouble(args[1]);
	betrag = Double.parseDouble(args[2]);
	
	//_ERZEUGE 
	Konto kunde;
	kunde = new Konto();
	
	//_RUFE AUF...
	kunde.buchen(betrag);
	//zinsberechnung();
	}
}

kommt folgender fehler:

KontoTest.java:47: connot find symbol
symbol: constructor Konto()
location class Konto
kunde = new Konto();

woah, ich muss dazu sagen ich war schon immer schlecht im Programmieren weil ich mir es einfach NIE erklären kann... zwar kann ich das theoretische aber sobalds praktisch wird schaltet mein gehirn ab!
 
Du hast doch jetzt einen Konstruktor eingefügt, der einen Parameter erwartet
Code:
public Konto(double kontostand)
, dann kannst du natürlich nicht mehr sagen: new Konto(); <-- weil du da eben keinen Parameter übergibst ! Also gebe dem Konstruktor einfach den Kontostand mit..
Code:
kunde = new Konto(kontostand);
...
 
sodala, VIELEN DANK AN EUCH ALLE... super FORUM!!!

Java:
//_BAUPLANKLASSE KONTO
class Konto
{

//_VARs
private double zinssatz=0.0125d, kontostand, betrag, zins;
private String	Kundenname;

//_
public Konto(double kontostand, double betrag)
{
this.kontostand = kontostand;
this.betrag = betrag;
}

//_METHODEN
//__BUCHEN
	public void buchen(double betrag)
	{
	 if (betrag < 0 && kontostand + betrag < 0) {
				System.out.println("Buchung nicht moeglich! - Guthaben zu gering!");
				} else {
				kontostand += betrag;
				System.out.println("Buchung erfolgreich!");
				}
	System.out.println("Kontostand:" +kontostand);
	}
	
//__ZINSEN	
	public double zinsberechnung()
	{
	zins = kontostand * zinssatz;
	System.out.println("Zinsen auf akt. Kontostand: " + zins + " Euro");
				if(betrag<0 && kontostand-betrag<0){
				kontostand -= betrag;
				}else{
				kontostand += zins;
				} 
		
	return(kontostand); 
	}

}
//_KLASSE KONTOTEST
class KontoTest
{
  public static void main(String[] args)
	{
	
	//_VARs
	double kontostand, betrag, aktStand;
	String kundenname;
	
	//_LESE PARAMETER 
	kundenname = args[0];
	kontostand = Double.parseDouble(args[1]);
	betrag = Double.parseDouble(args[2]);
	
	//_ERZEUGE 
	Konto kunde;
	kunde = new Konto(kontostand,betrag);
	
	//_RUFE AUF...
	
	//__buchen()
	System.out.println("Kunde:" +kundenname);
	kunde.buchen(betrag);
	
	//__zinsbrerechnung()
	aktStand = kunde.zinsberechnung();
	System.out.println(aktStand);
	}
}

Falls ihr mal nicht wisst, wie man ne Integer-Variable erstellt, helf ich euch auch gerne! 😀

schönen Abend noch... 😛
 
@s87:
Dein Problem ist, daß Du nicht weißt, was Klassen und was Objekte sind und wie man Objekte erzeugt. Bei der objektorientierten Programmierung erweist sich das als kleines Defizit. Im Buch „Java ist auch eine Insel“ gibt es dazu ein eigenes Kapitel. Ich habe das nie gelesen, also kann ich Dir nicht sagen, ob diese Quelle nun ratsam ist oder Du nicht besser woanders nachlesen solltest.

Meine Klasse Konto war übrigens gebrauchsfertig. Dort siehst Du, daß jedes Konto einen Besitzer, einen Kontostand und einen Zinssatz haben soll, die in den gleichnamigen Variablen besitzer, kontostand und zinssatz gespeichert werden.

Die Klasse dient aber nur als Bauplan, mit dem Objekte erzeugt werden. Von der Klasse Konto kann man also beliebig viele Konto-Objekte erzeugen, und jedes einzelne hat dann einen Besitzer, einen Kontostand und einen Zinssatz. Das Erzeugen eines Objektes aus einer Klasse geht mit der Anweisung new.

Der Besitzer und der Kontostand können nur bei der Erzeugung eines neues Kontos festgelegt werden, indem sie dem Konstruktor mitgegeben werden:
Java:
Konto timsKonto = new Konto("Tim Buktu", "1500");
Konto paulsKonto = new Konto("Paul Ahna", "500");
Konto heinzensKonto = new Konto("Heinz Ellmann", "0");

Nun haben wir drei Konto-Objekte erzeugt, jedes mit einem anderen Besitzer und mit anderem Kontostand. Den Kontostand in einem dieser Objekte können wir mit seiner Methode buchen(double betrag) ändern. Wenn wir auf Paul Ahnas Konto 250 Einheiten Geld zahlen wollen, machen wir das so:
Java:
paulsKonto.buchen(250);

Die Methode wird aufgerufen und ändert den Zustand des Objektes, zählt also zum Kontostand 250 dazu (Zeile 15) und gibt dann aus: „Es wurden 250 Taler verbucht“. Ob das wirklich funktioniert hat, können wir uns auch anschauen:
Java:
double stand = paulsKonto.gibKontostand();
System.out.println("Pauls Kontostand beträgt: " + stand); /* => 750 */
/* Wir können uns auch noch den Kontostand von Tims Konto anzeigen,
 * den haben wir aber nicht geändert, daher ist er noch so, wie wir ihn bei
 * Objekterzeugung übergaben.
 */
System.out.println("Tims Kontostand beträgt: " + timsKonto.gibKontostand()); /* => 1500 */

Versuchen wir, von Heinzens Konto Geld abzuheben, bekommen wir die Meldung, daß zu wenig Geld drauf ist:
Java:
heinzensKonto.buchen(-100); /* => Zu wenig Geld auf dem Konto. */
 
Zuletzt bearbeitet:
hehe ich werd mir auf jedenfall nochmal durch lesen. hab mir jetzt erstmal das skript von nem schulfreund zu kommen lassen und das gelesen...

aber wie kommst du jetzt da drauf? steht da irgendwo bockmisst? 😀
 
Lies meinen Beitrag bitte nochmal, da habe ich nämlich gerade noch vieles erklärt, was eben noch nicht dort stand.

> aber wie kommst du jetzt da drauf? steht da irgendwo bockmisst?
Nein, Bockmist nicht, aber Dir fehlen wohl noch die Zusammenhänge von Klassen, Objekten, Objektvariablen und Konstruktoren.
 

Neue Themen


Zurück
Oben