# Übungsangabe



## Reap (10. Mrz 2006)

Hallo...ich kenn mich da bei einer Angabe nicht so recht bzw. wie man das implementieren soll....

Gesucht ist die Definition und Realisierung einer PhoneSimulation. Implementieren Sie eine Klasse
Person mit name, phoneNumber und eMail. Implementieren Sie weiters eine Klasse Student,
welche zusätzlich zu den von Person geerbten Elementen auch eine matrikelNumber speichert.
Implementieren sie weiters die Klasse Employee, welche zusätzlich zu den Elementen einer Person
auch das jeweilige *Kostenstelle (costCenter) *vermerkt.

Zu jedem Employee ist also eine Kostenstelle zu implementieren. Was ist eine Kostenstelle (die Definition von Wikipedia ist so schwammig...da wird zudem zusätzlich zu Verwirrung zwischen Kostenstelle und costCenter unterschieden...das muss doch einfach zu erklären sein..)....was kann ein Mitarbeiter mit einer Kostenstelle anfangen? Welche Schnittstelle hat also bsp. so eine Kostenstelle wenn ich sie als Methode implementiere oder soll ich die Kostenstelle als einzelne Variable definieren...ich hab irgendwie keinen Plan...

mfg,
Hannes

_[Edit by Beni: verschoben]_


----------



## Caffè Latte (10. Mrz 2006)

Hi,

bei solchen Aufgaben reicht es meistens eine entsprechende Membervariable zu deklarieren (i.d.R. private mit den enstprechenden getter- und setter-Methoden).

Aber ohne die Aufgabe im Detail zu kennen ist das nur spekulativ.

Caffè Latte


----------



## Leroy42 (10. Mrz 2006)

Ich gehe mal davon aus, daß die genaue Definition von Kostenstelle
in dieser Aufgabe völlig bedeutungslos ist. Es geht in der Aufgabe
vornehmlich darum, daß du zeigen sollst, in der Lage zu sein, Beziehungen
in der realen Welt auf eine Klassenstruktur abzubilden. 

Für die Klasse Employee mal als Beispiel

```
class Employee extends Person {
	private Kostenstelle costCenter;
	
	public Employee(String name, String phoneNumber, String eMail, Kostenstelle costCenter) {
		super(name, phoneNumber, eMail);
		setKostenstelle(costCenter);
	}
	public void setKostenstelle(Kostenstelle costCenter) {this.costCenter = costCenter;}
	public Kostenstelle getKostenstelle() {return costCenter;}
}

class Kostenstelle {
	// Was auch immer das mal sein wird.
}
```


----------



## Reap (10. Mrz 2006)

Ja....die Kostenstelle ist auch völlig bedeutungslos in der Aufgabe,...denn da gehts um Verebungshierachein....

danke für den Vorschlag....

mfg,
Hannes


----------



## Reap (10. Mrz 2006)

Hmmm...das costCenter spielt zwar keine unmittelbare Rolle in der Aufgabe doch bei einem Bsp. kommts dann halt doch vor...wie is das wieder gmeint....ich geb euch mal das volle Bsp. und dann die Codestelle wo ich häng....

PhoneSimulation (12 Punkte)
Gesucht ist die Definition und Realisierung einer PhoneSimulation. Implementieren Sie eine Klasse
Person mit name, phoneNumber und eMail. Implementieren Sie weiters eine Klasse Student,
welche zusätzlich zu den von Person geerbten Elementen auch eine matrikelNumber speichert.
Implementieren sie weiters die Klasse Employee, welche zusätzlich zu den Elementen einer Person
auch das jeweilige Kostenstelle (costCenter) vermerkt. Abgeleitet von der Klasse Employee
implementieren Sie nun die Klasse Scientist und Technician, wobei ein Scientist eine
ResearchArea (Computerscience, Mathematics, Physics oder Chemistry) hat und
ein Techniker ein Expertise (Workstations, Server oder Networks).

 Realisieren Sie
sowohl die Forschungsrichtungen als auch die Spezialgebiete mit Enumerationen.
Person soll folgendes ermöglichen:
- call(Person): Jemanden (eine andere Person) anrufen (Ausgabe von : „Hello “ +
nameDerAnderenPerson)
- receiveCall(Preson): Einen Anruf einer anderen Person entgegennehmen (Ausgabe von:
„Hello “ +nameDerAnderenPerson + „ you are calling “+ eigenerName
Student soll folgendes ermöglichen:
- call(Person): Jemanden (eine andere Person) anrufen (Ausgabe von : „Hello “ +
nameDerAnderenPerson + „ “ + eigenerName + matrikelNummer + „ is calling“)
Employee soll folgendes ermöglichen:
*- receiveCall(Person) Einen Anruf einer anderen Person entgegennehmen (Ausgabe von:
„Hello “ +nameDerAnderenPerson + „ you are calling “+ eigenerName + CostCenter*
Scientist soll folgendes ermöglichen
- receiveCall(Person) Einen Anruf einer anderen Person entgegennehmen (Ausgabe von:
„Hello “+ eigenerName + „ is speaking. I´m currently working on “ + ResearchArea)
Technician soll folgendes ermöglichen
Übung Softwareentwicklung 2 SS 2006
- receiveCall(Person) Einen Anruf einer anderen Person entgegennehmen (Ausgabe von:
„Hello “ +nameDerAnderenPerson + „ I promise to finish it tomorrow.“)
Achten Sie bei der Ausarbeitung auf die bestmöglich Verwendung von Methoden der Basisklassen in
Form von Super-Calls.

So...beim fettgedruckten weiß ich wieder nicht was gmeint is....was wollen die????

Codestelle:


```
//receiveCall(Person) Einen Anruf einer anderen Person entgegennehmen (Ausgabe von:
	//„Hello “ +nameDerAnderenPerson + „ you are calling “+ eigenerName + CostCenter
	public String receiveCall(Person caller){
		String display = super.receiveCall(caller) + "??????????costCenter";
		System.out.println(display);
		
		return display;	
	}
```


----------



## norman (10. Mrz 2006)

```
String display = "Hello " + caller + ", you are calling " + this.name + this.CostCenter;
```
meinst du sowas? (weiß ja nicht wie dein super.receiveCall(caller) aussieht..daher mein beispiel mit dem hello etc)


----------



## Guest (10. Mrz 2006)

Ja genau...sorry..:


```
String display = "Hello " + caller.getName() + ", you are calling " + this.getName() + this.CostCenter;
```

Jetzt hab ich wie gesagt CostCenter einfach so in eine leere Klasse implementiert....und jetzt gibt es mir bei Costcenter einen entsprechenden Blödsinn aus zumahl ich ja noch die Object() Methode this.CostCenter.toString() aufrufen muss....also was mach ich da....

mfg,
Hannes


----------



## Han (10. Mrz 2006)

Hallo...hmmm...in der Angabe steht:

Ausnahmebehandlung (12 Punkte)
Erweitern Sie das obige Beispiel um eine Ausnahmebehandlung. Definieren Sie dazu eine Klasse
CallException (abgeleitet von Exception) und Spezialisierungen für folgende Ausnahmen.
SelfCallException : Niemand darf sich selbst anrufen. (Ausgabe „You are not allowed to call
yourself“)
StudentCallsTechException: Ein Student darf keinen Techniker anrufen (Ausgabe „The
technician is not responsible in this case“)
ScientistCallsStudentException: Ein Wissenschaftler darf keinen Studenten anrufen
(Ausgabe „Stand by until we call back“)


Wenn ein Student keinen Techniker anrufen darf, darf dann ein Techniker einen Anruf von einem Studenten entgegennehmen? Auf gut deutsch: muss ich in der Methode receiveCall(Person) auch eine Exception einbauen oder nicht?..ein so ein blödes unsinniges Bsp....

mfg,
Hannes


----------



## Caffè Latte (12. Mrz 2006)

Hi,



			
				Han hat gesagt.:
			
		

> ...
> Wenn ein Student keinen Techniker anrufen darf, darf dann ein Techniker einen Anruf von einem Studenten entgegennehmen? Auf gut deutsch: muss ich in der Methode receiveCall(Person) auch eine Exception einbauen oder nicht?..ein so ein blödes unsinniges Bsp....



Wenn ein Student keinen Techniker anrufen kann, dann kann auch ein Techniker nie einen Anruf von einem Studenten bekommen. Also brauchst du IMHO in der Aufgabe da keine Exception werfen. In der Praxis würde ich es trotzdem machen; es könnte ja sein, dass jemand die Anrufmethode verdummbeutelt (wenn man mal bei diesem Beispiel bleibt) oder aus anderen Gründen illegalerweise doch die Methode aufrufbar ist.

Caffè Latte


----------

