Referenzen

Status
Nicht offen für weitere Antworten.
M

MoeMoeFlash

Gast
Hi Leute,

ich hab mal eine Frage:
Ich will so ein kleines Bank Programm schreiben, mit Konto.class Person.class und eine Main.class.
Es läuft alles soweit ganz gut, ich möchte aber nun eine Methode schreiben, die überprüft ob ein Kontostand 0 oder weniger ist. Nur ich möchte von der Personen.class von den jeweiligen Objekten den Vornamen und den Nachnamen haben.
Bekomme aber leider immer wieder nur "null " in der Ausgabe raus.

Danke schonmal im voraus.
MoeMoeFlash



Code:
public void Kontostandüberprüfen(){
		
		Kontostand = Kontostand;
		super.Vorname = Vorname;
		super.Nachname = Nachname;
		 
		
		if (Kontostand <=0){
			System.out.println("WARNUNG!!!");
			System.out.println("Auf dem Konto "+ Name  +" ist kein Geld mehr vorhanden!!");
			System.out.println("Die Person "+ Vorname +" "+ Nachname + " besitzt kein Geld mehr auf dem Konto!");
			System.out.println("Der Kontostand Betrag beträgt "+ Kontostand);
			}
 
G

Gast

Gast
Das sieht alles nicht gut aus, angefangen von den großgeschriebenen Variablen bis zu dem super das hier IMHO keinen Sinn macht. Poste doch mal die gane Klasse.
 

Fu3L

Top Contributor
Die Konstruktion mit

super.

sieht relativ merkwürdig aus. Kannst du vllt etwas mehr posten, damit man sehen kann, was sich worauf beziehen soll?
Zum Beispiel weiß ich jetzt nich, in welcher Klasse kontostandPrüfen() steht und woher die Variablen für nachname, vorname und kontostand kommen...

(Das als kleiner Tipp: Man schreibst Variablen im Normalfall mit einem kleinen Anfangsbuchstaben und erst ein zweites Wort innerhalb des Variablennamens wird groß angefangen, also:

String meinText;

oder so. Hilft zur Unterscheidung zwischen Klassen und Variablennamen)

edit: Bei Methodennamen genauso wie bei Variablennamen, also kontostandPruefen()
edit2: und am besten niemals Sonderzeichen (also auch unsere Umlaute) für irgendwas in nem Quelltext gebrauchen...
 
M

MoeMoeFlash

Gast
Hi,

erstmal Dankeschön für all eure Tipps, ich werde Sie gleich mal übernehmen mit der Groß/Kleinschreibung.

Aber ich poste euch erstmal den gesamten Quelltext.




Code:
import Tools.IOTools;


public class Konto extends Person  {
 
	Person Kontobesitzer;
	double Kontostand;
	String Name;
	
	
	double getKontostand()
	{
		return Kontostand;
	}
	
	
	
	void setKontostand( double neuKto){
		
		Kontostand= neuKto;
	}



	public Person getKontobesitzer() {
		return Kontobesitzer;
	}



	public void setKontobesitzer(Person Person) {
		Kontobesitzer = Person;


	}



	public String getName() {
		return Name;
	}



	public void setName(String name) {
		Name = name;
	}
	
	
	
	
	
	
	
	
	
	public void Kontostandüberprüfen(){
		
		Kontostand = Kontostand;
		super.Vorname = Vorname;
		super.Nachname = Nachname;
		boolean Entscheidung=false;
		String kleineEntscheidung;
		 
		
		if (Kontostand <=0){
			System.out.println("WARNUNG!!!");
			System.out.println("Auf dem Konto "+ Name  +" ist kein Geld mehr vorhanden!!");
			System.out.println("Die Person "+ Vorname +" "+ Nachname + " besitzt kein Geld mehr auf dem Konto!");
			System.out.println("Der Kontostand Betrag beträgt "+ Kontostand);
			
			if(Entscheidung == false){
				
				kleineEntscheidung=IOTools.readLine("Möchten Sie eine Transaktion ausführen? Ja/Nein?!");
				
				if(kleineEntscheidung == "Ja"){
					
					Entscheidung = true;
				}
				
				
			}
					while(Entscheidung == false){
						
						int einzahlungen=IOTools.readInteger("Bitte geben Sie den einzahlungsbetrag an: ");
						Kontostand = Kontostand + einzahlungen;
						System.out.println("Ihr Kontostand beträgt nun:" + Kontostand);
						
					if(Kontostand <=0){
							
							System.out.println("Ihr Kontostand ist noch nicht ausgeglichen, möchten Sie noch eine Einzahlung machen: ?");
							int einzahlungen2=IOTools.readInteger("Bitte geben Sie den einzahlungsbetrag an: ");
							Kontostand = Kontostand + einzahlungen2;
							System.out.println("Herzlichen Glückwunsch, ihr Kontostand beträgt nun "+ Kontostand);

					}
						
						Entscheidung = true;
					}
			
					
			
			
			
			System.out.println("");
			
			}
		
		
		
	}
	
}




Code:
public class Main {

	
	
	public static void main(String[] args) {
		

		Konto kto1 = new Konto();
		Konto kto2 = new Konto();		
		Konto kto3 = new Konto();
		Konto kto4 = new Konto();
		Konto kto5 = new Konto();
		
		Person Person1 = new Person();
		Person Person2 = new Person();
		Person Person3 = new Person();
		Person Person4 = new Person();
		

		
		Person1.setVorname("Mike");
		Person1.setNachname("Steinbach");
		kto1.setName("Sparkasse");
		kto1.setKontobesitzer(Person1);
		Person1.setMeinKonto(kto1);
		
		Person2.setVorname("Alex");
		Person2.setNachname("Stroica");
		kto2.setName("Dresderbank");
		kto2.setKontobesitzer(Person2);
		Person2.setMeinKonto(kto2);
		
		
		
		Person3.setVorname("Sebstian");
		Person3.setNachname("Heuser");
		kto3.setName("Volksbank");
		kto3.setKontobesitzer(Person3);
		Person3.setMeinKonto(kto3);
		
		
		Person4.setVorname("Manuel");
		Person4.setNachname("Weitzel");
		kto3.setName("Deutsche Bank");
		kto4.setKontobesitzer(Person4);
		Person4.setMeinKonto(kto4);
		
		
		
		
		
		
		
		kto1.setKontostand(03.0);

		kto2.setKontostand(100.0);

		kto3.setKontostand(200.0);

		kto4.setKontostand(00.0);
		
		
		
		
		
		
		kto1.Kontostandüberprüfen();
		kto2.Kontostandüberprüfen();
		kto3.Kontostandüberprüfen();
		kto4.Kontostandüberprüfen();
		
							
	
		
		

		System.out.println("Auf dem Konto"+ Person1.getMeinKonto().Name +" von " + kto1.getKontobesitzer().Vorname + kto1.getKontobesitzer().Nachname  + " sind noch "+kto1.getKontostand() + "€ ");
		System.out.println("-------------------------------------------------------");
		
		System.out.println("Auf dem Konto von"+ Person2.getMeinKonto().Name +" von " + kto2.getKontobesitzer().Vorname + kto2.getKontobesitzer().Nachname  + " sind noch "+kto2.getKontostand() + "€ ");
		System.out.println("-------------------------------------------------------");
		
		System.out.println("Auf dem Konto von"+ Person3.getMeinKonto().Name +" von " + kto3.getKontobesitzer().Vorname + kto3.getKontobesitzer().Nachname  + " sind noch "+kto3.getKontostand() + "€ ");
		System.out.println("-------------------------------------------------------");
		
		System.out.println("Auf dem Konto von"+ Person4.getMeinKonto().Name +" von " + kto4.getKontobesitzer().Vorname + kto4.getKontobesitzer().Nachname  + " sind noch "+kto4.getKontostand() + "€ ");
		System.out.println("-------------------------------------------------------");

		
		
	}

}




Code:
public class Person {

	
	String Vorname;
	String Nachname;
	Konto meinKonto;
	
	void setVorname(String vor_Name){
		
		Vorname = vor_Name;	
	}
	
	String getVorname(){
		return Vorname;
		
	}
	
	
	void setNachname(String nach_Name){
		Nachname = nach_Name;
		
	}
	
	String getNachtname(){
		return Nachname;
		
	}

	public Konto getMeinKonto() {
		return meinKonto;
	}

	public void setMeinKonto(Konto meinKonto) {
		this.meinKonto = meinKonto;
	}
	
	
	
}





So nochmals Vielen Dank, ich weiß es ist etwas viel Quelltext, aber so kann sich jeder ein Bild davon machen.

LG MoeMoeFlash :###
 
M

maki

Gast
Warum erbt Konto von Person????????????

Vererbung missbrauchen ist keine gute Sache...
 

Fu3L

Top Contributor
Da muss ich maki recht geben. Du könntest sagen, du hast ne Basisklasse Mensch und leitest davon Maennlich und Weiblich ab oder die Klasse Tier von der die Klasse Saeuger erbt und von der dann wiederrum der Mensch oder der Elefant oder sonst ein Säugetier erbt. So kannst du dann sagen: Ein Elefant ist ein Saeuger. Ein Sauger ist ein Tier. Das ist der Sinn der Vererbung. Aber du kannst ja nicht sagen: " Ein Konto ist eine Person".



Was du tun könntest, wäre eher:


Code:
public class Person {

	String name;
	String vorname;
	//Eine Person hat ein Konto, also Konto als Feld verwenden
	Konto konto;
	
	//Eine neue Person erstellen und ihr dabei auch ein neues Konto geben
	public Person(String name, String vorname) {
	
		this.name = name;
		this.vorname = vorname;
		this.konto = new Konto();
		
	}
	
	//Hier einen anderen Kontruktor, dem man ein bereits existierendes Konto mitgeben kann
	public Person(String name, String vorname, Konto konto) {
	
		this.name = name;
		this.vorname = vorname;
		this.konto = konto;
		
	}
	
	public void kontostandPruefen() {
	
		if(konto.getGuthaben() <= 0) {
		
			System.out.println("Herr/Frau " + name + " ist pleite!");
			
		}
		
	}

}

class Konto {

	double guthaben;
	
	//Leeres Konto anlegen
	public Konto() {
	
		guthaben = 0;
		
	}
	
	//Konto mit einem gewissen Startguthaben anlegen
	public Konto(double startGuthaben) {
	
		guthaben = startguthaben;
		
	}
	
	//Funktioniert auch mit negativen Beträgen
	public void einzahlen(double betrag) {
	
		guthaben += betrag;
		
	}
	
	//Das Guthaben zurückgeben
	public double getGuthaben() {
	
		return guthaben;
		
	}
	
}

Natürlich könnte man eine Guthabensprüfung auch in dem Konto einbauen oder direkt im Konto auch den Namen des Besitzers speichern und könnte sich gleich die Klasse Person sparen. Es gibt viele Möglichkeiten...
 
M

MoeMoeFlash

Gast
Super Dankeschön... hab wieder was dazu gelernt.

LG MoeMoeFlash :applaus:
 

ARadauer

Top Contributor
Code:
public class Konto extends Person
das hatten wir diese woche schon 3 mal, die leute wollen methoden von anderen klassen benutzen und erben aus diesem grund... keine ahnung was diezur zeit für einen schmarn unterrichten...
 

Leroy42

Top Contributor
Fu3L hat gesagt.:
edit2: und am besten niemals Sonderzeichen (also auch unsere Umlaute) für irgendwas in nem Quelltext gebrauchen...

Warum denn das nicht? :shock:

Umlaute in Klassennamen zu vermeiden sehe ich
ja noch ein (wegen BS...) aber warum auch keine
Umlaute in Methodennamen? ???:L
 

Fu3L

Top Contributor
Leroy42 hat gesagt.:
Fu3L hat gesagt.:
edit2: und am besten niemals Sonderzeichen (also auch unsere Umlaute) für irgendwas in nem Quelltext gebrauchen...

Warum denn das nicht? :shock:

Umlaute in Klassennamen zu vermeiden sehe ich
ja noch ein (wegen BS...) aber warum auch keine
Umlaute in Methodennamen? ???:L

Das haben mir mein Javabuch und die Programmiererin, die mich auch zum Java-Programmieren gebracht hat, so gelehrt... Die ganzen Programmiersprachen sind halt auf englische Zeichen gemünzt, ich denke, dass es zur Vorsicht so gemacht wird. Wenn ich zB bei meinem apache-server einen Ordner mit Sonderzeichen erstelle und will darin ne php-datei ausführen, bekomm ich grundsätzlich ne Fehlermeldung...
 
M

maki

Gast
>> aber warum auch keine Umlaute in Methodennamen?

zB. werden russische Entwickler es schwer haben, deutsche Umlaute auf ihrer Tastatur zu finden, umgekehrt genauso ;)

Das Problem stellt sich aber nicht wirklich, da im Quellcode nur englische Begriffe benutzt werden!
Ansonsten droht das schlimmste Denglisch wie getAlter(), etc. pp.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Hab ich dass so richtig erklärt (Objekte und Referenzen)? Java Basics - Anfänger-Themen 5
B Erste Schritte Frage zu Instanzierung und Referenzen Java Basics - Anfänger-Themen 8
M Referenzen zuweisen und wird gleichzeitig ausgeführt Java Basics - Anfänger-Themen 6
B JaxB - Unique Name updaten / Referenzen in XML Java Basics - Anfänger-Themen 0
B Objekt kopieren und sämtliche Referenzen von diesem Objekt? Java Basics - Anfänger-Themen 3
B JaxB - Referenzen erstellen? Java Basics - Anfänger-Themen 2
Zrebna Frage zum "Referenzen-konzept" in Java Java Basics - Anfänger-Themen 8
B Datenbank: Entity mit vielen Referenzen? Ansatz so ok? Java Basics - Anfänger-Themen 8
scratchy1 Referenzen Java Basics - Anfänger-Themen 32
O Referenzen Java Basics - Anfänger-Themen 2
A Variablen Verständnisfrage bzgl. Variablen/Referenzen Java Basics - Anfänger-Themen 3
A Variablen Referenzen Java Basics - Anfänger-Themen 6
A GUI-Bedienelemente mit Zeiger/Referenzen-Array veralten Java Basics - Anfänger-Themen 4
K Operatoren 2D Int Array auf Null-Referenzen prüfen Java Basics - Anfänger-Themen 18
F Referenzen zwischen Methoden Java Basics - Anfänger-Themen 5
T Klassen Referenzen auf Klassen / Objekte Java Basics - Anfänger-Themen 5
J OOP Ein Fahrrad - zwei Besitzer: Zwei Referenzen auf ein Objekt Java Basics - Anfänger-Themen 43
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
K Collections Auf Referenzen in ArrayList zugreifen? Java Basics - Anfänger-Themen 3
B ArrayList.clear - Daten in allen Referenzen weg Java Basics - Anfänger-Themen 2
L Grundlegende Verständnisfrage Hasmap Referenzen Java Basics - Anfänger-Themen 4
C OOP Referenzen-Problem Java Basics - Anfänger-Themen 3
N Referenzen Problem Java Basics - Anfänger-Themen 2
K Referenzen - 2ter Versuch Java Basics - Anfänger-Themen 17
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
C Referenzen in Java Java Basics - Anfänger-Themen 11
J Referenzen vergleichen Java Basics - Anfänger-Themen 8
M Referenzen verschieben Java Basics - Anfänger-Themen 2
J Mehrere Referenzen auf ein Objekt Java Basics - Anfänger-Themen 6
G Netzwerk: RMI Objekt-Referenzen Java Basics - Anfänger-Themen 2
I clone() und Referenzen Java Basics - Anfänger-Themen 25
A Referenzen zu festen Werten machen? Java Basics - Anfänger-Themen 5
F Referenzen Java Basics - Anfänger-Themen 7
H Problem mit Events bzw. Referenzen Java Basics - Anfänger-Themen 4
M Zugriff auf Textfelder über Referenzen? Java Basics - Anfänger-Themen 3
F ArrayList! Pointer, Referenzen! Java Basics - Anfänger-Themen 4
K Verständnisfrage Collection, ArrayList und Referenzen Java Basics - Anfänger-Themen 4
H Begriff: Objekt enthält Referenzen Java Basics - Anfänger-Themen 3
J Referenzen Java Basics - Anfänger-Themen 5
P HashSet und Referenzen Java Basics - Anfänger-Themen 9
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
T Referenzen. Java Basics - Anfänger-Themen 5
Z Referenzen in LinkedList Java Basics - Anfänger-Themen 3
F Referenzen in Java - Fehlerpotenzial ! Java Basics - Anfänger-Themen 5
G Instanzen und Referenzen Java Basics - Anfänger-Themen 5
G array auf null-referenzen überprüfen ! Java Basics - Anfänger-Themen 9
G Referenzen Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben