7.3

Fragen zur Aufgabe 7.3

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

7.3
Guten Abend,

wie sollen bei der 7.3 die übergebenen Arrays (Bsp. modulverantwortliche) beim setzen implementiert werden? Als Referenz auf das Array, oder als echte Kopie?

Mit Grüßen,

Alicen


Für dein Beispiel:
Du übergibst der Klasse Modul Objektverweise der Klasse Dozent,diese Verweise werden als ein Attribut in der Klasse Modul gespeichert. Sprich du übergibst eine Reihung von Verweisen der gespeicherten Objekte.

Also wenn ich es richtig verstanden habe…


Das meine ich nicht. Mein Problem ist sowas wie das hier:

—ANFANG BEISPIELCODE----
static Dozent[] dozent1;
static Dozent[] dozent2;

public static void main(String[] args){
	Dozent johnDoe = new Dozent("Dipl. plag. check", "John Doe", "observer@pastebin.com", false);
	Dozent[] testdoz = new Dozent[] { new Dozent("Dr.-Ing.", "Klaudia Dussa-Zieger", "no-reply@fau.de", false), johnDoe };

	dozent1 = testdoz; //REFERENZ

	dozent2 = new Dozent[2];  //ECHTE KOPIE
	dozent2[0] = testdoz[0]; 
	dozent2[1] = testdoz[1];

	System.out.println("Vorher");
	System.out.println(dozent1[0].kurzDarstellung() + ", " + dozent1[1].kurzDarstellung());	
	System.out.println(dozent2[0].kurzDarstellung() + ", " + dozent2[1].kurzDarstellung());	

	testdoz[1] = new Dozent("Dr.-Ing.", "Klaudia Dussa-Zieger", "no-reply@fau.de", false);	//AENDERUNG DES URSPRUNGSOBJEKTS

	System.out.println("Nachher");
	System.out.println(dozent1[0].kurzDarstellung() + ", " + dozent1[1].kurzDarstellung());	
	System.out.println(dozent2[0].kurzDarstellung() + ", " + dozent2[1].kurzDarstellung());	

}

----ENDE BEISPIELCODE----
—ANFANG TESTAUSGABE----
Vorher
Dr.-Ing. Klaudia Dussa-Zieger, Dipl. plag. check John Doe
Dr.-Ing. Klaudia Dussa-Zieger, Dipl. plag. check John Doe
Nachher
Dr.-Ing. Klaudia Dussa-Zieger, Dr.-Ing. Klaudia Dussa-Zieger
Dr.-Ing. Klaudia Dussa-Zieger, Dipl. plag. check John Doe
—ENDE TESTAUSGABE—

Hier wurde ein Array mit Informationen angelegt/(in der Aufgabe wird es übergeben), und dazu existieren zwei Dozent dozent1/2.

dozent1 wurde referenziert, dozent2 echt kopiert. Nachdem man jetzt das ursprüngliche array ändert, verändert sich dozent1, nicht aber dozent2.

Die Frage: Sollen wir es in der Aufgabe referenzieren oder echt kopieren?


Auch nicht schlecht :wink:


Wie kann es sein, dass meine Ausgabe augenscheilich mit dem vorgegebenen Output bis auf die “Länge” der Einrückung übereinstimmt, ich aber nur ein Ausrufezeichen bekomme?
Muss ich da noch was formatieren?


Hey Leute!

Habe hier ebenfalls folgendes Problem bei der Aufgabe:

Wenn ich das UnivIS ausführe, dann ist das hier mein Ergebnis:

BABY

----- Dozent(en) ------------------------------
null null
eMail: null
(Pseudoeintrag)
Dr.-Ing. Norbert Oster
eMail: no-reply@fau.de
[X] Lehrperson
Pruefernummer: 100120
----- LehrVeranstaltung(en) ------------------------------
null [null]
Dozentinnen/Dozenten: N.N
SWS: 0.0
ECTS: 0.0
null [null]
Dozentinnen/Dozenten: N.N
SWS: 0.0
ECTS: 0.0

EASY

----- PruefungsLeistung(en): Informatik Master, Vertiefung SWE/PSWT ------------------------------
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)
----- PruefungsLeistung(en): PS - Informatik Bachelor, Vertiefung Programmiersysteme ------------------------------
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)
----- PruefungsLeistung(en): PS - Informatik Master, Vertiefung Programmiersysteme ------------------------------
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)

TRICKY

----- PruefungsOrdnungsModul: Bachelor_Vertiefung_SWE ------------------------------
null
Pruefungsnummer: 0
Pruefungsleistungen:
----- UnivISModul: TSWS ------------------------------
null
Modulverantwortliche: null null
Praesenzzeit: 60, Eigenstudium: 90
Lehrende: null null, null null
Lehrveranstaltungen:
null [null]
Studien-/Pruefungsleistungen:
0 null

AuD

----- Dozent(en) ------------------------------
null null
eMail: null
(Pseudoeintrag)
Pruefernummer: 100113
null null
eMail: null
(Pseudoeintrag)
Pruefernummer: 100120
----- LehrVeranstaltung(en) ------------------------------
null [null]
Dozentinnen/Dozenten: N.N
SWS: 0.0
ECTS: 0.0
null [null]
Dozentinnen/Dozenten: N.N
SWS: 0.0
ECTS: 0.0
null [null]
Dozentinnen/Dozenten: N.N
SWS: 0.0
ECTS: 0.0
----- PruefungsLeistung(en): Informatik Bachelor, Pflichtfach ------------------------------
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)
0 null (0.0 ECTS) (0.0 Bonuspunkte, Pruefung, Pruefungform: null)
----- PruefungsOrdnungsModul: AuD ------------------------------
null
Turnus: WS
Modulverantwortliche: null null
Pruefungsnummer: 0
Pruefungsleistungen:
----- UnivIS-Modul: AuD ------------------------------
null
Modulverantwortliche: null null
Praesenzzeit: 120, Eigenstudium: 180
Lehrende: null null
Lehrveranstaltungen:
null [null]
null [null]
null [null]
Studien-/Pruefungsleistungen:
0 null

Eclipse zeigt an, dass keine Fehler im Programm vorliegen und ich hab die ganzen Codeschnippsel ordnungsgemäß eingefügt, trotzdem sieht es aber so aus, als ob die ganzen Werte nicht übernommen wurden :confused:

Könnte es vielleicht irgendwas damit zu tun haben, dass ich die ganzen Konstruktoren leer gelassen habe?^^

Wäre klasse wenn mir jemand auf die Sprünge helfen könnte :slight_smile:


Hm, was meinst Du denn? :wink:
Selbstverstaendlich spielt das eine Rolle. Dem Konstruktor werden Werte uebergeben, die in den entsprechenden Attributen gespeichert werden sollen und die spaeter natuerlich auch wieder fuer die Ausgabe benutzt werden. Wenn Du im Konstruktor die uebergebenen Werte nicht den entsprechenden Attributen zuweist, dann sollte es dich nicht wundern, dass es nicht funktioniert…


Du willst also in jeder Klasse es so umsetzen, dass du eine echte Kopie der Objekte machst und nicht nur einfach auf das bestehende Objekt verweist?


Oh man, ich hab vergessen die Werte in den Attributen zu speichern :smiley:

Danke nochmal für den Hinweis br0gr4mm3r, irgendwie bin ich da grad überhaupt nicht drauf gekommen^^

Jetzt funktioniert es einwandfrei :smiley:


P.S: Beim hochladen wird mir trotzdem statt einem grünen Haken ein “!” angezeigt, obwohl in Eclipse alles normal funktioniert hat und das richtige Ergebnis rauskam :confused:
Weiß jemand was ich falsch gemacht habe?


Setzt du bei dir im Konstruktor vom PruefungsOrdnungsModul() die modulVerantwortliche auf null? Andernfalls wird da noch eine einzige Zeile zusätzlicher Code ausgegeben (Zeile 32 / 33 dürfte das sein) - dann frisst das EST das nicht.


Wenn im UML-Diagramm Attribute weggelassen wurden weil sie bspw. durch den Konstruktor impliziert werden, müssen die dann von außen Sichtbar sein?


Für alle, die nicht extra im CIP Pool vergleichen wollen, ob ihre Ausgabe identisch ist:

http://www.diffchecker.com/

Hat mir grad geholfen, einen vergessenen “.” zu finden.


Soweit ich mich erinner, brauchte man keine zusätzliche Attribute und alle angegebenen wurde definiert , ob sie public,private oder protected sind.

Oder was meinst du?


Beispielsweise bei Modul den turnus. Der ist nicht oben als Attribut angegeben.


An dem Pfeilzu Turnus steht doch protected Turnus und das jedes Modul einen Turnus beseitzt. Sprich um es nicht doppelt zu schreiben wurde es unter der Klassenbeschreibung weggelassen steht aber da :wink:


Ah, macht Sinn. Vielen Dank :wink:


Uebrigens etwas, das man bei seinen eigenen Klassendiagrammen auch so machen sollte. Vielleicht etwas spaet fuer die Abgabe, aber was soll’s :smiley: