Java Aufgabe: Eine Klasse Party nach folgenden Angaben erstellen

Zeboo

Lt. Commander
Registriert
Juli 2008
Beiträge
1.562
Hallo,

also es soll eine Klasse Party erstellt werden. Man soll beachten, dass eine Party einen Besitzer hat, sowie einen Namen (name des Partys) sowie partygröße (größe des raumes oder sonstwas in quadratmeter). Jetzt sollten die Felder für die Eigenschaften eingetragen werden (soweit ok). Man soll auch einen Konstruktor sinnvollerweise füllen und die Felder initialisieren (verstehe ich nicht).

Ich kam nur soweit:

PHP:
public class Party {

	private String name;
	private String besitzer;
	private int groesse;
	
	Party() {
		// was soll ich hier sinnvollerweise reinschreiben?
		//was heißt Felder initalisieren?
	}
	
	public void setName(String name){
		
		this.name = name;
	}
	
	public void setBesitzer(String besitzer) {
		
		this.besitzer = besitzer;
	}
	
	public void setGroesse(int groesse) {
		
		this.groesse = groesse;
	}
}


Soweit ich weiß sieht das jetzt sinnvoll aus. Also ich weiß nicht wirklich was in den Konstruktor rein soll bzw. was Felder initalisieren bedeutet. Jemand ne idee?

Gruss
 
Das sind die Felder deiner Klasse:
Code:
private String name;
private String besitzer;
private int groesse;

Mit Initialisieren ist gemeint das sie mit einem Startwert befüllt werden. Bisher hast du dem Compiler nur gesagt das es diese 3 Variablen gibt, aber nicht das sie erstmal befüllt werden sollen.
 
Das könnte ungefähr so aussehen:

Code:
public class Party {

    private String name;
    private String besitzer;
    private int groesse;
    
    Party() {
        // was soll ich hier sinnvollerweise reinschreiben?
        //was heißt Felder initalisieren = den Feldern einen Startwert zuweisen
        // üblicherweise geschieht dies in einem Konstruktor
        this.name="";
        this.besitzer="";
        this.groesse=-1;
    }
    
    /**
     * Standardzugriffsmethoden
     */
    public void setName(String name){
        
        this.name = name;
    }
    
    public void setBesitzer(String besitzer) {
        
        this.besitzer = besitzer;
    }
    
    public void setGroesse(int groesse) {
        
        this.groesse = groesse;
    }
}

zu Konstruktoren generell:
Konstruktoren sind vom Aufbau her ähnlich wie Methoden, sie erfüllen jedoch einen anderen Zweck: Konstruktoren dienen zur Initialisierung von Objekten, wenn diese kreiert werden. Der Konstruktor wird bei der Instanzierung einer Klasse als Parameter an den Operator new übergeben und wird dann automatisch ausgeführt.

Jede Klasse hat mindestens einen Konstruktor. Java stellt einen impliziten Default-Konstruktor zur Verfügung für den Fall, daß bei der Klassendeklaration kein Konstruktor angegeben wird; der Default-Konstruktor macht gar nichts. Wenn Objekte einer Klasse mit Werten initialisiert werden sollten, dann muß ein expliziter Konstruktor deklariert werden.

Ein Konstruktor hat denselben Namen wie die Klasse selbst. Es besteht die Möglichkeit, mehrere Konstruktoren zu definieren, die alle denselben Namen tragen, jedoch unterschiedliche Anzahl und Typ von Parametern haben.

Quelle: http://www.kbs.uni-hannover.de/Lehre/Info1/skript_0001/java/konstruktoren.htm
 
Hallo und danke,

irgendwie verstehe ich den Sinn von so einem Initalisierung nicht ganz. Warum sollte ich
this.name="";
this.besitzer="";
this.groesse=-1;

machen, wenn das eh egal ist. Sobald ich ein exemplar von der klasse erstelle, ändert sich das. Sagen wir ich schreibe eine main, ich erstelle ein exemplar von der klasse und gebe name,besitzer und groesse ein. Es ist also egal was im konstruktor steht... oder?
 
Wenn du zuerst ein Objekt erstellst und dann erst die entsprechenden set-Methoden aufrufst, dann kann das Objekt zwischen Erstellung und Aufrufen der Methoden in einem ungültigen Zustand sein. Außerdem ist das sowieso eine doofe Idee, wenn der Benutzer der Klasse wissen muss, dass er nach der Instanzierung zuerst einen Haufen Methoden aufrufen muss. Als Autor der Klasse ist es deine Aufgabe dafür zu sorgen, dass ein Objekt niemals in einen illegalen Zustand gerät. Direkt nach Erstellen eines Objektes gibt es aber keinen Besitzer, Namen und keine Größe. Woher soll denn jemand anderes wissen, dass man zuerst die entsprechenden Methoden aufrufen muss?

Hier kommt dann der Konstruktor ins Spiel:
PHP:
public Party(String besitzer, String name, int groesse) {
    this.setBesitzer(besitzer);
    this.setName(name);
    this.setGroesse(groesse);
}
Wenn der Konstruktor so aussieht, dann müssen die entsprechenden Parameter beim Erzeugen des Objektes mit übergeben werden:
PHP:
new Party("Heinz", "Geburtstagsfeier", 30);
 
Sinn eines Konstruktors ist es, wie oben geschrieben, das Objekt so zu erstellen, das es gleich weiter verwendet werden kann ohne das man Hintergrundwissen haben muss. Schließlich kaufst du auch kein Auto in Einzelteilen um es in der heimischen Garage zusammen zu bauen. (Geht übrigens auch, ist aber nur für Hobbyisten sinnvoll).
 
Getter sollten sinnvollerweise auch noch hinzugefügt werden, ansonsten kann man von außen nicht auf die Eigenschaften zugreifen (es sei denn, das ist wirklich so gewollt).
 
Zurück
Oben