# Person V



## Cloud1993 (25. Okt 2010)

Hallo liebe Community
Neue Woche, neues Problem...
Und zwar folgendes:
Es besteht eine Klasse Person, welche aus einer vorigen Übung / Aufgabe fest ist. 
Hier mal der Java-Code dazu:

```
public class Person_V {
	
  public int m_Jahrgang;
  public String m_Name;
	
  public Person_V (int p_Jahrgang)
  {
    setJahrgang(p_Jahrgang);
  }
	
  public Person_V (int p_Jahrgang, String p_Name)
  {
    setJahrgang(p_Jahrgang);
	m_Name = p_Name;
  }
	
  public void setJahrgang(int p_Jahrgang)
  {
    m_Jahrgang = p_Jahrgang;
  }	
	
  public int getAlter(int p_Jahr)
  {
    return p_Jahr - m_Jahrgang;
  }
	
  public String getName()
  {
    return m_Name;
  }
	
}
```

In einem Testszenario würde es nun folgendermassen lauten:

```
Person_IV erstePerson = new Person_IV(1984, "Rudi");
System.out.print(erstePerson.getName() + " ist " + erstePerson.getAlter(2010) + " Jahre alt\n");
```

Ausgabe: "Rudi ist 26 Jahre alt"


Nun wird eine neue Klasse Arzt erstellt, welche von der Klasse Person erbt.
Diese beinhaltet zusätzlich die Fachrichtung (bsp. Allgemeinmedizin, innere Medizin).
Auch hier mal den Java-Code:

```
public class Arzt extends Person_V {
	public String m_Fachrichtung;
	
	public Arzt (int p_Jahrgang, String p_Name, String p_Fachrichtung)
	{
		super(p_Jahrgang, p_Name);
		m_Fachrichtung = p_Fachrichtung;
	}
	
	public String getName()
	{
		//return m_Name;
	}
}
```

Nun muss via getName() der Name, die Fachrichtung und später noch der Titel (bsp. Dr.) zurückgegeben werden. Der Name über die Klasse Person, die Fachrichtung und der Titel über die Klasse Arzt.

Nun mein Problem :
Wie kann ich das anstellen? Return ist nur 1-mal pro Methode möglich. Also Titel und Fachrichtung gleichzeitig in der Methode ist deshalb nicht möglich. Und wie kann ich im Testprogramm (PersonenTest.java) zwischen den beiden Klassen unterscheiden?

Besten Dank für Eure Hilfe
mfG
Cloud1993


----------



## Michael... (25. Okt 2010)

Cloud1993 hat gesagt.:


> Nun muss via getName() der Name, die Fachrichtung und später noch der Titel (bsp. Dr.) zurückgegeben werden.


Warum muss die Fachrichtung über getName() ausgegeben werden? Die Ausgabe sollte doch eher in einer eigenen Methode der Klasse Arzt erfolgen.
Das Attribut Titel hätte ich in der Klasse Person implementiert. Alternativ könnte man den Titel als Teil des Namens betrachten und gemeinsam mit diesem übergeben bzw. die Methode getName() in den Subklassen entsprechend überschreiben.


----------



## Cloud1993 (25. Okt 2010)

Genaue Aufgabenstellung:
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Schritt 2:
  - Erstellen Sie nun die Methode _getName_ in der neuen Klasse _Arzt_. Diese soll nun nebst     dem Namen auch den Titel (Dr.) und die Fachrichtung zurückgeben. (z.B. Dr. Helfer , Arzt fuer Allgemeinmedizin). Der Name ist via _getName_ der Klasse _Person_ zu ermitteln.

Hinweis: Das erneute implementieren einer bereits existierenden Methode in einer abgeleiteten Klasse nennt man *überschreiben*.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Hab mir auch schon gedacht, dass man das in einer seperaten Methode machen soll, jedoch ist unser Lehrer so pingelig (der hat mir bei der Bruchaufgabe, welche auch in dem Forum ist, Abzug gegeben, weil ich zusätzlich das Kürzen mit einbezogen habe), dass ich mich genau an die Aufgabenstellung halten muss. 
Deshalb wär ich auch froh, wenn irgendeine Lösung zu exakt diesem Problem hat (bzw. einen Anstoss )


----------



## Cloud1993 (25. Okt 2010)

Gelöst. Vollständigkeitshalber noch der Code zum _getName()_ in der Klasse Arzt (Falls da noch jemand etwas zu bemängeln hat, bitte Antworten, mir ist aktuell nur diese Lösung in den Sinn gekommen):


```
public class Arzt extends Person_V {
	private String m_Fachrichtung;
	
	public Arzt (int p_Jahrgang, String p_Name, String p_Fachrichtung)
	{
		super(p_Jahrgang, p_Name);
		m_Fachrichtung = p_Fachrichtung;
	}	
	
	public String getName()
	{
		return "Dr. " + super.getName() + ", Arzt fuer " + m_Fachrichtung;
	}
}
```


----------

