Methoden Room-Programm

cheerLady

Neues Mitglied
Hallo Zusammen,

ich habe mich grade ganz frisch hier angemeldet weil ich mit meiner "Hausaufgabe" nicht ganz zurecht komme. Ich muss dazu gleich sagen dass ich blutige Anfängerin bin und jetzt im ersten Semster Wirtschaftsinformatik studiere. Ich entschuldige mich also vorab für Unsauberkeit weils mir da einfach noch an der Praxis und am Verständnis fehlt. Habe vorher eine Ausbildung zur Fachinformatikerin f. Sys. gemacht und hatte da nur C++, allerdings sehr erfolglos weil ich (und in diesem Fall wirklich) einen sehr schlechten Dozenten hatte. Seit dem Studium nun eben Java..

Und zwar gehts um ein Programm das Räume ausgeben und die Fläche berechnen soll. Das Programm besteht aus einer Klasse Room, Apartment und der Main Class. In der Room.java sollen (logischerweise) die Räume definiert werden und in Apartment die Wohnungen.

Die Teil-Aufgabenstelle an dem Punkt wo ich nicht weiterkomme ist folgende:
"Implementieren Sie einen Konstruktor, der als Parameter geeignete Werte für die Beschreibung, den Quadratmeterpreis und die Räume empfängt und diese Werte entsprechend an die passenden Attribute zuweist. Des Weiteren berechne der Konstruktor aus den gegebenen Werten die Gesamtfläche der Wohnung und lege sie ebenfalls im passenden Attribut ab."

Hier nun ein Teil des Quelltextes aus der Klasse Room
Und zwar soll eigentlich an der Stelle der Methode printRoom()
Code:
88
bei RoomArea der berechnete Wert von der Breite * Länge angegeben werden. Dazu hab ich die Methode calculateRoomArea()
Code:
79
.
Allerdings weiß ich echt nicht wie ich das ganze gestalten soll. Weil eigentlich soll ja der Konstruktor die Methode aufrufen und dann den Wert irgendwie da angeben aber leider fehlt mir da wirklich noch das Verständnis wie das nun aussehen müsste...

Und dann heißt es noch dass für RoomArea nur eine
Code:
59
get-Methode (lesender Zugriff?) erfolgen soll und warum eine set-Methode hier nicht sinnvoll ist. Versteh ich leider auch nicht :(

Ich freue mich über Antworten und bitte um Verständnis dass ich da noch nicht so erfahren bin.

Java:
/**
 * Repräsentiert die Klasse Room und deren grundlegenden Eigenschaften
 * und Verhaltensweisen
 * 
 * @author blabla
 *
 */

class Room {

	// Attribute der Klasse Room
	/** Deklaration des Attributs Raumname*/
	private String RoomName;
	
	/** Deklaration des Attributs Raumlänge */
	private int RoomLength = 0;
	
	/** Deklaration des Attributs Raumbreite */
	private int RoomWidth = 0;
	
	/** Deklaration des Attributs Raumfläche */
	private int RoomArea = 0;
	
	// Methoden der Klasse Room
	/** getter-Methode von RoomName (Raumname) */
	public String getRoomName() {
		return RoomName;
	}
	
	/** setter-Methode von RoomName (Raumname) */
	public void setRoomName(String inRoomName) {
		this.RoomName = inRoomName;
	}
	
	/** getter-Methode von RoomLength (Raumlänge) */
	public int getRoomLength() {
		return RoomLength;
	}
	
	/** setter-Methode von Roomlength (Raumlänge) */
	public void setRoomLength(int inRoomLength) {
		this.RoomLength = inRoomLength;
	}
	
	/** getter-Methode von RoomWidth (Raumbreite) */
	public int getRoomWidth() {
		return RoomWidth;
	}
	
	/** setter-Methode von RoomWidth (Raumbreite) */
	public void setRoomWidth(int inRoomWidth) {
		this.RoomWidth = inRoomWidth;
	}
	
	/** getter-Methode von RoomArea (Raumfläche) */
	public int getRoomArea() {
		return RoomArea;
	}
	// eine setter-Methode (schreibender Zugriff) für die Raumfläche ist hier deshalb 
	// nicht sinnvoll weil, ....
	//
	//
	
	/** 
	 * Konstruktor: Erzeuge einen neuen Raum und initialisiere
	 * alle Attribute mit entsprechend übergebenen Werten.
	 * 
	 * @param name Raumname
	 * @param length Raumlänge
	 * @param width Raumbreite
	 */
	Room (String name, int length, int width) {
		RoomName = name;
		RoomLength = length;
		RoomWidth = width;
	}
	
	/** Methode zur Berechnung der Raumfläche */
	void calculateRoomArea() {
		this.RoomArea = this.RoomLength * this.RoomWidth;
	}
	
	/** 
	 * Methode zur Konsolenausgabe von der Länge, der Breite, dem Namen und der
	 * Fläche eines Raumes 
	 */
	void printRoom() {
		System.out.print(RoomName + ": " + RoomLength + "m lang, " + RoomWidth + "m breit, " + RoomArea + "m groß" );
		System.out.println();
	}
}
 
Zuletzt bearbeitet von einem Moderator:

Plopo

Bekanntes Mitglied
Wieso lässt du den nicht einfach deinen Konstruktor die Methode "calculateRoomArea()" ausführen?

Java:
    Room (String name, int length, int width) {
        RoomName = name;
        RoomLength = length;
        RoomWidth = width;

        RoomArea = calculateRoomArea();
    }
    
    /** Methode zur Berechnung der Raumfläche */
    void calculateRoomArea() {
        this.RoomArea = this.RoomLength * this.RoomWidth;
    }

Du könntest es auch so gestalten (vll. übersichtlicher)

Java:
    Room (String name, int length, int width)
    {
        RoomName = name;
        RoomLength = length;
        RoomWidth = width;

        RoomArea = calculateRoomArea(length, width);
    }
    
    /** Methode zur Berechnung der Raumfläche */
    int calculateRoomArea(int length, int width)
    {
        return length * width;
    }

PS: Eine Get-Methode für "RoomArea" wäre nicht sinnvoll, da sich die "RoomArea" ja nur ändert, wenn man die Länge bzw. Breite ändert.
D.h. du führst in der Set-Methode von RoomWidth und RoomLength einfach deine Methode calculateRoomArea() aus um die neue "RoomArea" automatisch zu bekommen.
 
Zuletzt bearbeitet:

cheerLady

Neues Mitglied
Hallo,

vielen lieben Dank für deine schnelle Antwort!
Ich hätte vielleicht noch dazu sagen sollen dass sich die Werte je nach neu erzeugtem Objekt auch wirklich ändern. Also es gibt unterschiedliche Räume die wiederum eine ganze Wohnung ergeben und somit auch unterschiedliche Maße haben.

Aber die Methode hab ich jetzt auch so ähnlich eingebaut und ein Kommillitone hat mir nun zusätzlich geholfen und das Programm funktioniert jetzt zum Glück.

Ich bedanke mich trotzdem ganz herzlich für deine Mühe, ich werde deine Methode natürlich versuchen einzuprägen. Bringt mich ja schließlich auch weiter.

Danke!
 

Neue Themen


Oben