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.
Objekt der selben Klasse wie selbst mit Aufrufen des Konstruktors erzeugen
Hallo
Ich habe eine Klasse Stadt und will in einer Methode dieser Klasse ein weiteres Objekt der Klasse Stadt erzeugen.
Java:
public class Stadt{
private Stadt[] partnerstadt;
private Buergermeister buergermeister;
private String name;
private int einwohnerzahl;
private int zaehler;
public Stadt(int laenge, String new_name, int einwohner){
partnerstadt=new Stadt[laenge];
name=new_name;
einwohnerzahl=einwohner;
zaehler=0;
}
public String nameGeben(){
return name;
}
public void nameSetzen(String n){
name=n;
}
public int eZahlGeben(){
return einwohnerzahl;
}
public void eZahlSetzen(int e){
einwohnerzahl=e;
}
public void partnerstadtAusgeben(int stelle){
if(stelle>-1&&stelle<partnerstadt.length){
System.out.println("name ist "+partnerstadt[stelle].nameGeben()+" und hat "+partnerstadt[stelle].eZahlGeben()+" Einwohner.");
}
}
public void partnerstadtHinzufuegen(Stadt s){
if(zaehler<partnerstadt.length){
partnerstadt[zaehler]=new Stadt(int laenge, String new_name, int einwohner);
zaehler++;
}
}
}
Beim compilen kommt bei [..] =new Stadt(int laenge, [...]
der Fehler dass beim komma ein ; sein soll und dass vor laenge ein .class erwartet wird.
Ich verstehe nicht wo der Fehler liegt, da ich den Konstruktor doch aufrufe und die benötigten werte übergebe. Der selbe Fehler tritt dann auch in der selben Zeile bei den anderen eingangsparametern auf.
Ok ich habs jetzt !
Habe eine weitere Methode buergermeisterWaehlen()
Bei dieser soll ebenfalls ein neues Objekt erzeugt werden:
Der Klasse Buergermeister:
Java:
public class Buergermeister{
private Stadt stadt;
private Rathaus rathaus;
private String name;
private int alter;
public Buergermeister(String new_name, int new_alter){
alter=new_alter;
name=new_name;
}
}
Und zwar mit der Methode:
Java:
public void buergermeisterWaehlen( Buergermeister b, String new_name, int new_alter){
buergermeister= new Buergermeister(new_name, new_alter);
}
Es wird alles compiled kein Fehler jedoch beim Aufrufen der Methode wird ja ein wert für Buergermeister b erwartet und es besteht ja noch kein Objekt der Klasse Buergermeister mit welchem wert kann die methode ausgführt werden?
public void buergermeisterWaehlen( Buergermeister b, String new_name, int new_alter){
buergermeister= new Buergermeister(new_name, new_alter);
}
Es wird alles compiled kein Fehler jedoch beim Aufrufen der Methode wird ja ein wert für Buergermeister b erwartet und es besteht ja noch kein Objekt der Klasse Buergermeister mit welchem wert kann die methode ausgführt werden?
Es wurde uns der Auftrag geben 3 Klassendiagramme in Java umzusetzen und bei buergermeisterWaehlen() steht:
+buergerneisterWaehlen(b: Buergermeister) : void
also muss es doch so umgesetzt werden?
Und es funktioniert nur falls bereits ein Objekt besteht ?
Der Konstruktor wird aufgerufen, weil du ihn aufrufst...
Wenn dir aber in dem Fall die Signatur aus dem Klassendiagramm egal ist, warum ist sie dann plötzlich nicht egal, wenns um den Bürgermeisterparameter geht?
Die Methode bekommt einen Bürgermeister übergeben - warum erstellst du denn dann einen neuen Bürgermeister in der Methode?
Der Konstruktor wird aufgerufen, weil du ihn aufrufst...
Wenn dir aber in dem Fall die Signatur aus dem Klassendiagramm egal ist, warum ist sie dann plötzlich nicht egal, wenns um den Bürgermeisterparameter geht?
Die Methode bekommt einen Bürgermeister übergeben - warum erstellst du denn dann einen neuen Bürgermeister in der Methode?
Weil dies dazu gesagt wurde, dass mit dieser ein neues Objekt erzeugt wird, andererseits war schon öfter ein Fehler in den Angaben dieser Lehrkraft... sogar auch schon in diesem vielleicht liegts da dran
Aber danke für die Hilfe
Zudem: eine Stadt wird vom Bürgermeister "regiert", ein Bürgermeister "regiert" die Stadt und ist eine Person.
Eine Person hat Namen und Nachnamen. Wenn Bürgermeisterwahlen abgeschlossen sind, dann bekommt die Stadt ein Bürgermeister, ein Bürgermeister die Stadt und die Person
Java:
public class Test {
public static void main(String[] args) {
Person person = new Person("Max", "Mustermann");
City city = new City("Musterstadt");
MayorOfCity mayorOfCity = new MayorOfCity(city, person);
System.out.println(mayorOfCity);
}
}
/** Konsolenausgabe */
Musterstadt, Max, Mustermann
edit:
Java:
Person next_person = new Person("Schlimmer", "Willi");
mayorOfCity.electionMayorOfCity(next_person);
System.out.println(mayorOfCity);
/** Konsolenausgabe */
Musterstadt, Schlimmer, Willi
Stimmt eigentlich, eine City hat den Bürgermeister. Was ich vermitteln wollte, dass, wie du es geschrieben hast, ein Objekt der jeweiligen Klasse an die Methode zu übergeben ist.