objekt erstellen, set/get methoden

theoneand

Aktives Mitglied
Hallo,
bin gerade am Prüfungen durchacker und hätte mal ne kleine frage, dies ist die aufgabestellung:

Für die Personalverwaltung eines Unternehmens ist ein Klasse ‚Employee’ zu entwickeln.
Die Analysephase ergab folgende Anforderungen:

- Ein Firmenmitarbeiter wird charakterisiert durch Personalnummer und Gehalt.

- Das Monatsgehalt soll zufallsverteilt sein im Intervall [2000, 8000].

- Die Klasse Employee soll Auskunft über die Gesamtanzahl der beschäftigten
Mitarbeiter geben können.

- Die Attribute sollen initial bei der Anlage eines neuen Mitarbeiters gesetzt werden.

- Die Attribute sollen von aussen nur über entsprechende Methoden geändert werden
können.

- Das Gehalt soll nachträglich geändert werden können, wobei die Spezifikation der
Operation durch ein Interface zu realisieren ist.

- Es soll eine Methode bereitgestellt werden, um die Objektattribute in eine Datei zu
schreiben, der Dateiname ist hierbei an die Methode zu übergeben.

Erstellen Sie das Coding für die Klasse ‚Employee’.

das ist meine klasse employee:

Java:
public class Employee implements IF_Gehalt 
{
	private int persnr;
	private double gehalt;
	private static int AnzahlMa;
	

	Employee (int persnr, double gehalt)
	{
		this.persnr = persnr;
		this.gehalt = Math.random() * 6000 + 2000;
		AnzahlMa ++;
		

	}
	
	public void setneuepersnr (int neuepersnr)
	{
		persnr = neuepersnr;
	}
	
	public int getneuepersnr()
	{
	return persnr;
	}
	
	public void setneugehalt (double neugehalt)
	{
		gehalt = neugehalt;
	}
	
	public double getneugehalt (double neugehalt)
	{
		return gehalt;
	}
	
	public static int getAnzahlMa() {
		return AnzahlMa;
	}

	public static void setAnzahlMa(int anzahlMa) {
		AnzahlMa = anzahlMa;
	}
	
	public void setgehalt (double neugehalt)
	{
		gehalt = neugehalt;
	}

public static void main (String [] args)
		{
			Employee arbeiter1 = new Employee(50,  );
                        System.out.println (arbeiter1);

		}

}

und dies mein interface:

Java:
public interface IF_Gehalt 
{

	void setgehalt (double neugehalt);
	
}

ich hätte 2 fragen:
wie kann ich jetzt einen neuen Mitarbeiter anlegen und ausgeben, da ich ja ein zufallsgehalt haben möchte, kann ich ja nicht einfach nen wert eintragen, da dieser ja von der methode math.random zugewiesen wird.

2. wozu brauche ich die setter/ getter methoden, bzw was machen die explizit.

danke schon mal
 
Java:
Employee arbeiter1 = new Employee(50,  0);
legt einen neuen Mitarbeiter an. Welches Gehalt übergeben wird spielt gar keine Rolle, weil du diesen Parameter gar nicht ausliest. Du könntest ihn also (In deinem Konstruktor) weglassen.
Employee (int persnr, double gehalt) muss sich mit new Employee(50, 0) decken.
Getter und Setter Methoden
 
ja, das ist mir auch klar, aber wie übergebe ich den wert, den ich im konsturktor mit der methode math.random errechnet habe, dass das so nich geht ist klar, da ja 2 werte erwartet werden, wenn ich ein neues objekt erzeuge.
 
Wo übergeben?

Du hast übrigens zwei Getter fürs Gehalt. Wobei der eine sogar einen unnötigen Parameter hat.

Code:
Math.random() * 6000 + 2000;
liefert eine Zahl im Intervall [2000; 8000).
 
wenn ich ein neues objekt der klasse employee erzeugen möchte, wie muss ich da vorgehen??
die eine getter kommt ja noch vom interface, brauch ich dann nur eine oder wie?
 
Habe mich verguckt. Du hast einen überflüssigen Setter. Der eine Getter hat aber trotzdem einen falschen Parameter.
Klar brauchst du nur einen Setter für dieselbe Variable.

Eine Instanz erstellt man mit
Code:
new
und folgendem Konstruktor.
 
scroll doch mal nach unten, ich hab das doch so gemacht.

Employee arbeiter1 = new Employee ( )

aber was für werte kommen in die klammer rein, die nummer kann ich ja selber festlegen, aber wie geht das mit dem gehalt, da dies ja durch math.random ermittelt wurde und ich ja nich einfach nen gehalt reinschreiben kann.

wie lese ich den wert aus den ich mit math.random festgelegt habe, das ist mein problem
 
scroll doch mal nach unten, ich hab das doch so gemacht.

Employee arbeiter1 = new Employee ( )

aber was für werte kommen in die klammer rein, die nummer kann ich ja selber festlegen, aber wie geht das mit dem gehalt, da dies ja durch math.random ermittelt wurde und ich ja nich einfach nen gehalt reinschreiben kann.

wie lese ich den wert aus den ich mit math.random festgelegt habe, das ist mein problem

zu dem Zeitpunkt, wo du einen neuen arbeiter anlegst hast du noch gar kein Gehalt, wo du drauf zugreifen kannst. Es wird doch erst im Konstruktor initialisiert.

Alternativ kannst du natürlich ein zufälliges Gehalt in der main erstellen und mit übergeben.
 
aha, und was bringt mir der kack dann, den ich im konstruktor gemacht habe^^?
oder wie muss ichs machen, dass ein zufallsgehalt festgelegt wird?
bzw., wenn ich das ganze ausgeben will kommt sowieso nur s***** raus, auch wenn ich bei der
Erzeugung:

Employee arbeiter1 = new Employee (50, 50);
System.out.println (arbeiter1);

kommt als ausgabe:
Employee@23fc4bec
 
weil in der aufgabenstellung verlangt war, dass ein zufallsgehalt im intervall 2000-8000 festgelegt werden soll.... deshalb, ich mach das ja nich zum spass
 
paratmeter ist ein wert, den ich z.b. bei der initilalisierung vom konstruktor festlege, oder durch den aufruf von methoden übergeben kann.
 
Du kannst es auch so abändern:
Java:
    Employee (int persnr)
    {
        this.persnr = persnr;
        this.gehalt = Math.random() * 6000 + 2000;
        AnzahlMa ++;
    }

dann erstellst du so einen neuen Mitarbeiter:

Java:
Employee arbeiter1 = new Employee (50);

und so gibst du was aus:

Java:
System.out.println("Personalnr.: " + arbeiter1.getneuepersnr() + " bekommt ein Gehalt in Hoehe von: " + arbeiter1.getneugehalt());
 
ach netzt hab ich gerafft was du gemeint hast^^
den parameter im konstruktor weglassen, aber trotzdem den befehl mit dem math.random drinlassen.
war es dass, was du gemeint hast?
 
-->System.out.println (arbeiter1);
-->
-->kommt als ausgabe:
-->Employee@23fc4bec

Wenn du willst, dass hier was sinnvolles raus kommt, musst du nur einfach die toString Methode in deiner Klasse implementieren.

Ansonsten wird die toString von java.lang.Object verwendet.

Und die gibt nun mal Klassennamen + hashCode aus.
 

Zurück
Oben