# Enum Attribut in Konstruktoren



## PeterK (7. Jun 2011)

Hallo Zusammen,

ich habe gestern angefangen eine Übungsaufgabe meiner Uni zu machen. In dieser Aufgabe sollen zwei Aufzählungskonstanten vom Typ ENUM realisiert werden. Zum einen für AbteilungsType...


```
public enum AbteilungType {
	
	BUCHHALTUNG,
	PRODUKTION,
	EINKAUF,
	ENTWICKLUNG,
	MANAGEMENT,
	EDV,
	VERTRIEB,
	LAGERVERWALTUNG,

}//end enum AbteilungType
```

zum anderen von Typ Geschlecht. 

Beispiel für den Konstruktor


```
public Mitarbeiter()
	{
		this("unbekannt", 01.01 , geschlecht_ref, 0, abteilung_ref);
	}
	
	
	public Mitarbeiter(String name_ref, GregorianCalendar geburtsdatum_ref, GeschlechtType geschlecht_ref, int personalnummer, AbteilungType abteilung_ref)
	{
				
		super(name_ref, geburtsdatum_ref, geschlecht_ref);
		
		if(personalnummer>0)
			this.personalnummer = personalnummer;
		
		else
			this.personalnummer = 0;
		
		
		this.abteilung_ref = abteilung_ref;				
	
	}//end constructor
```

So, nun zu meiner Frage. Was muss ich in meinem Parameterlosen Konstruktor anstelle der Referenzvariablen geschlecht_ref und abteilung_ref einsetzen? 

Ich hoffe mir kann jemand einen Tipp geben was ich falsch mache bzw. wo mein Denkfehler ist. Danke im Voraus.

Gruß


----------



## Gast2 (7. Jun 2011)

> So, nun zu meiner Frage. Was muss ich anstelle der Referenzvariablen geschlecht_ref und abteilung_ref einsetzen, so das der Konstruktor funktioniert?


z.b. AbteilungType.PRODUKTION, etc.


----------



## PeterK (7. Jun 2011)

@EikeB

sorry, das ich so dumm frage, aber wenn ich sonst den Konstruktor mit this(....,...usw.) fülle gebe ich immer einen neutralen Parameter ein. 

Bsp. String name_ref -> this("unbekannt")

Muss ich bei ENUM immer eine der enthaltenen Parameter eingeben oder gibt es da noch eine andere Möglichkeit?


----------



## maki (7. Jun 2011)

Überlege dir, ob du wirklich den Default Konstruktor ohne Parameter brauchst/anbieten willst, falls das wirklich der Fall sein sollte, wozu dann noch dummy Parameter setzen, wenn die Objekte danach sowieso nicht gültig sind?
[c]null[/c] wäre auch eine option, aber wie gesagt, warum erst "kaputte" Objekte erstellen lassen?

Ach ja, solltest die Namenskonventionen einhalten, Java ist nicht C/C++.


----------



## SlaterB (7. Jun 2011)

ich schreibe manchmal auch explizite Dummy-Enumwerte:


    EDV,
    VERTRIEB,
    LAGERVERWALTUNG,
    NONE, // oder irgendwas deutsches, KEIN


----------



## PeterK (7. Jun 2011)

@maki

habe gerade deinen Tipp mit null ausprobiert, leider nimmt mein Konst. das auch nicht an. Bezüglich der Namen muss ich mich an die Vorgaben unseres Prof. halten. Ob er irgendwie C++ vorbelastet ist kann ich aber wirklich nicht sagen.

Hier nochmal der bisherige Quellcode. Evtl. liegt der Fehler ja wo anders und ich sehe es einfach nicht mehr. Wäre super wenn sich einer erbarmt.


```
public abstract class Mitarbeiter extends Person {
	
	//ATTRIBUTE
	
	protected int personalnummer;
	protected AbteilungType abteilung_ref;
	
	
	//KONSTRUKTOR
	
	public Mitarbeiter()
	{
		this("unbekannt", 01.01 , ...hier sollte das Attribut aus GeschlechtType stehen...., 0, ...hier sollte das Attribut aus AbteilungType stehen....);
	}
	
	
	public Mitarbeiter(String name_ref, GregorianCalendar geburtsdatum_ref, GeschlechtType geschlecht_ref, int personalnummer, AbteilungType abteilung_ref)
	{
				
		super(name_ref, geburtsdatum_ref, geschlecht_ref);
		
		if(personalnummer>0)
			this.personalnummer = personalnummer;
		
		else
			this.personalnummer = 0;
		
		
		this.abteilung_ref = abteilung_ref;				
	
	}//end constructor
```


----------



## SlaterB (7. Jun 2011)

null war nicht explizit meine Idee (edit: hast du nun ja korrigiert, ich antworte trotzdem  ), 
aber was kann man da schon groß falsch schreiben? erst ein n, dann ein u, dann ein l und dann noch ein l

dein Code zeigt nicht deinen null-Versuch und du schreibst auch nicht die Fehlermeldung dazu, was erwartest du nun?

aus
>   this("unbekannt", 01.01 , ...hier sollte das Attribut aus GeschlechtType stehen...., 0, ...hier sollte das Attribut aus AbteilungType stehen....);
wird
  this("unbekannt",null , null, 0, null); // auch der Calendar null
?
bitte sehr


----------



## PeterK (7. Jun 2011)

SlaterB hat gesagt.:


> null war nicht explizit meine Idee (edit: hast du nun ja korrigiert, ich antworte trotzdem  ),
> aber was kann man da schon groß falsch schreiben? erst ein n, dann ein u, dann ein l und dann noch ein l
> 
> dein Code zeigt nicht deinen null-Versuch und du schreibst auch nicht die Fehlermeldung dazu, was erwartest du nun?
> ...



Super, jetzt hab ich meinen Fehler gefunden. Danke dir. Auch wenn ich mich jetzt vielleicht irre, hab ich leider das Gefühl das hier immer so schnell ein leicht genervter Ton herrscht. Ich poste ja nicht umsonst im Anfänger Forum, damit meine ich ,dass es keine böse Absicht ist wenn ich oder jemand anders sich bei der Fehlerbeschreibung etwas schwerer tut als die Profis die es beantworten. 

Also, danke nochmal.


----------



## Sonecc (7. Jun 2011)

Der Ton war deshalb etwas gereizt, weil es nervt, wenn die Hilfesuchenden den Helfern nicht helfen. ( ^.^ )
Zu sagen "es geht nicht" ist nunmal nicht ausreichend. Damit kann niemand was anfangen. Die Fehlermeldung zu posten hilft da schon weitaus mehr. (Nur mal als Beispiel)


----------



## SlaterB (7. Jun 2011)

auf Java-Nichtwissen kann man als pampige Antwort höchstens 'lies im Buch/ bei google nach' erhalten,

alles andere sind wohldifferenziert Kritiken zum allgemeinen Stil, etwa dass man schreibt was nicht geht statt 'bei mir geht irgendwas nicht',
dass sollte doch jeder nach der 5. Klasse beherrschen, da gibts keine Anfänger-Entschuldigung


----------



## maki (7. Jun 2011)

Auch hier der Hinweis: http://www.java-forum.org/forum-faq-beitraege/7407-man-fragen-richtig-stellt.html


----------

