Person V

Cloud1993

Mitglied
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:
Java:
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:
Java:
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:
Java:
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...

Top Contributor
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

Mitglied
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

Mitglied
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):

Java:
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;
	}
}
 

Neue Themen


Oben