Unverständliche HA 10

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von guido » 24. Jan 2008 21:25

Krümelmonster hat geschrieben:Ok, ich wusste nicht, dass Java bei konstanten Strings, die den selben Inhalt haben,
diesen nur einmal instanziert und dann entsprechend referenziert.
Das stimmt so übrigens auch nicht ganz. Erstens sind Strings "immutable" (unveränderlich) und daher immer "konstant" (durch "+" etc. wird einfach ein neuer String erzeugt!). Zweitens klappt es nicht nur bei "konstanten" Strings im Sinne von static final. Vielmehr speichert Java alle in einer Klasse auftretenden Strings nur einmal pro .class-Datei. Tritt der gleiche String also mehrfach im Quelltext auf oder wird in der gleichen Klasse genutzt, weisen beide Referenzen auf den gleichen String (!!!). Das spart Speicherplatz ("Hello World" nur einmal statt 50-mal gespeichert, auch wenn es 50-mal im Source auftritt). Leider führt es dazu, dass "==" anscheinend "mal geht und mal nicht" - nämlich dann, wenn der String in der gleichen Klasse schon gespeichert wurde. :shock:

Was das ".equals" für getID() betrifft: da habe ich wohl zu viel korrigiert; der Fehler ist nun wieder raus.

Viele Grüße,

Guido

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Unverständliche HA 10

Beitrag von Krümelmonster » 24. Jan 2008 22:12

Ok. Danke für den Hinweis.

Da der Compiler nicht während der Laufzeit auf Gleichheit prüfen kann, zeigt der folgende Code
das erwartete Verhalten:

Code: Alles auswählen

public class Stringtest {
	public static void main(String[] args) {
		String a = "test";
		String b = "test";
		
		System.out.println("a: " + a + "; b: " + b + "; a==b: " + (a==b) + "; a.equals(b): " + a.equals(b));
		a = "".concat(a);
		System.out.println("a: " + a + "; b: " + b + "; a==b: " + (a==b) + "; a.equals(b): " + a.equals(b));
	}
}
Ausgabe:
a: test; b: test; a==b: true; a.equals(b): true
a: test; b: test; a==b: false; a.equals(b): true
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
mba
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 260
Registriert: 13. Jul 2007 19:16

Re: Unverständliche HA 10

Beitrag von mba » 24. Jan 2008 22:23

@Krümelmonster,
Was das ".equals" für getID() betrifft: da habe ich wohl zu viel korrigiert; der Fehler ist nun wieder raus.
jetzt ist der Fehler in der Lösung raus (vorher war er noch da) :roll: .
»Es ist noch kein Meister vom Himmel gefallen«
Wenn doch, wär er jetzt tot.
Bild

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von guido » 25. Jan 2008 08:12

mba hat geschrieben:@Krümelmonster,
Was das ".equals" für getID() betrifft: da habe ich wohl zu viel korrigiert; der Fehler ist nun wieder raus.
jetzt ist der Fehler in der Lösung raus (vorher war er noch da) :roll: .
Nobody is perfect... :)

Guido

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Re: Unverständliche HA 10

Beitrag von itportal2 » 25. Jan 2008 15:59

Ich wollte nur fragen, ob ich das richtig verstanden habe. Also...

Bei 2 (das mit dem Comparator) .. die Methode soll in StoreManager sein und übernimmt einen Comparator T, also Comparator<StockItem> oder Klassen unter dieser Klasse. Ok, also wir haben nur einen Comparator. In der Aufgabe steht "Bestimmung des Maximums der Liste" ... Was ist das für eine Liste? Ist damit die 3 Vektoren von der selben Klasse gemeint, oder?

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Unverständliche HA 10

Beitrag von Krümelmonster » 25. Jan 2008 16:04

Ja, wie schon mehrfach beantwortet, soll die compare() Methode des Comparators
auf alle Elemente der drei Vektoren innerhalb von StoreManager angewendet werden.

Trotzdem willkommen im Forum. ;)
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Re: Unverständliche HA 10

Beitrag von itportal2 » 25. Jan 2008 17:26

Danke :) Und noch was .. dürfen wir Collections.max oder Collections.sort verwenden?

netzwerkarchitekt
Neuling
Neuling
Beiträge: 6
Registriert: 5. Nov 2007 18:49

Re: Unverständliche HA 10

Beitrag von netzwerkarchitekt » 25. Jan 2008 21:54

hallo,

ich bin auch recht frustriert über diese übung. schon allein weil ich nicht einen beträchtlichen teil meiner arbeitszeit als student an diese übung binden kann/möchte.

einen vorschlag zur verbesserung. ich verstehe, dass herr dr. rößling natürlicher weise auch noch andere aufgaben hat. ich möchte festhalten, dass ich nicht ihn persönlich oder den betreffenden hiwi kritisiere. andererseits bin ich der auffassung, dass es auch nicht zu lasten der studenten gehen darf (klarstellung der aufgabe, bug fixing, usw).

ich stelle daher die frage (insbesondere an herrn dr. rößling), ob nicht die (ohnehin anfallenden studiengebühren) auch dafür eingesetzt werden können neue stellen/kapazitäten am fb informatik zu schaffen. ich könnte mir vorstellen damit eine entlastung der mitarbeiter und eine bessere betreuung der übungen zu erreichen.

gruß,

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Re: Unverständliche HA 10

Beitrag von Krümelmonster » 25. Jan 2008 21:59

Was genau kritisierst du an der Übung?
Zu kompliziert? Zu zeitaufwändig? Beides?

Und wozu das zusätzliche Personal?
Ich finde die Übung nicht gerade gut besucht.

Kann allerdings auch an der Tageszeit liegen: Freitag nachmittag ;)
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

netzwerkarchitekt
Neuling
Neuling
Beiträge: 6
Registriert: 5. Nov 2007 18:49

Re: Unverständliche HA 10

Beitrag von netzwerkarchitekt » 25. Jan 2008 22:54

also meine kritik richtet sich eigentlich nur gegen diese ha 10.

um das zu konkretisieren:
ich war in der sprechstunde für die übung 10 und auch dieser tutor/hiwi konnte mir nicht wirklich antworten auf meine fragen zu verständnis. auch ihn kritisiere ich nicht direkt, aber antworten wie "weiß ich auch nicht" und "musst du nicht unbedingt wissen" helfen mir überhaupt nicht weiter.

ich kritisiere die mangelhaften erklärung/erläuterung der aufgabenstellung zu dieser ha und den hintergrund dieser aufgabe. insbesondere ist mir (wie hier einigen) nicht klar, wie mein inventory aussieht (baum, vector, liste, foo, bar?), wie komme ich an den inhalt dieser struktur, welche kriterien gelten für das maximum (ich kann schlecht ein maximum einer sammlung von büchern, audo-cds und dvds erraten). welche dateien gehören in welcher version zur bearbeitung der ha? darüber herscht ja doch eine gewisse konfusion. was sind bugs, was sind "reale" aufgaben? wo ist der hintergrund/zielstellung der lösung, der in den vorhergehenden übungen eigentlich ganz gut zur sprache kam (z.b. "erstellen sie die methode max zur erhebung des am meisten vorhanden produktyp." oder "es geht um die suche in dem warenbestand eines online-versandhauses" oder so netter smalltalk.)

viele der o.g. fragen kamen in diesem oder einem anderen thread schon mehr oder weniger ausführlich zur sprache. ich würde mir solche klarstellungen jedoch in der aufgabe wünschen. einerseits ist es zu begrüßen, dass die veranstalter updates zur verfügung stellen und korrekturen nachzuliefern. andererseits senkt es nur mit der zeit die motivation (zumindest bei mir), nur tröpfchenweise nachbesserungen und anmerkungen zu erfahren.

zum vorschlag für weiteres personal:
ich wollte anregen, dass mehr zeit für die ausarbeitung/kontrolle der übungsaufgaben bereitgestellt werden kann. ich kann die situation der veranstalter/autoren durchaus nachvollziehen. da hier geäussert wurde, es läge zum teil an der mangelnden zeit. aber ich als student habe widerum auch keine zeit, mich ein komplettes wochenende mit der hausübung zu beschäftigen. und mein problem ist nicht, das in java zu übersetzen, wohl jedoch erstmal zu verstehen was überhaupt sinn und anforderung der aufgabe ist.

gruß,

Benutzeravatar
guido
Computerversteher
Computerversteher
Beiträge: 378
Registriert: 30. Nov 2003 21:24
Wohnort: Mühltal
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von guido » 26. Jan 2008 09:37

netzwerkarchitekt hat geschrieben:also meine kritik richtet sich eigentlich nur gegen diese ha 10.
Zunächst einmal vielen Dank für diese (und jede andere) konstruktive Kritik! Ich freue mich immer, wenn ihr sagt, wo es klemmt - auch wenn ich nicht immer etwas dagegen tun kann.
netzwerkarchitekt hat geschrieben: ich war in der sprechstunde für die übung 10 und auch dieser tutor/hiwi konnte mir nicht wirklich antworten auf meine fragen zu verständnis. auch ihn kritisiere ich nicht direkt, aber antworten wie "weiß ich auch nicht" und "musst du nicht unbedingt wissen" helfen mir überhaupt nicht weiter.
Das tut mir leid zu lesen, und den Frust kann ich auch gut verstehen. Natürlich helfen so Antworten nicht weiter. Das Problem ist aber systembedingt, wenn die Aufgaben erst kurz vor der Ausgabe an die Studierenden fertig werden und die Tutoren sie vorher auch nicht sehen können.

Da wir das Problem kennen, sollten die Aufgaben eigentlich schon im Vorfeld erstellt werden -- konzeptuell sogar schon vor der ersten Vorlesung "fertig" sein. Dann wäre genug Zeit zum Testen etc. gewesen. Leider hat das nicht geklappt - hier spielten auch Faktoren wie "andere Arbeitsaufgaben", "Ferien", "Lernen für Prüfungen" bzw. "Stellen von Prüfungen" mit hinein, sowohl auf Seiten der Dozenten als auch der Studierenden, die die Aufgaben erstellen sollten. So wurde manche Übung im Java-Teil erst am Tag der Ausgabe an die Tutoren fertig, oder nur 1-2 Tage vorher. Dass da nicht genug Zeit zum kompletten Durchrechnen mehr ist, ist vermutlich klar. Dabei habe ich mir schon immer viel Zeit genommen (die ich oft eigentlich gar nicht hatte), wenigstens alle mir auffallenden Fehler zu beseitigen.

Aber wie heißt es schon im "Testen"-Kapitel: Testen kann nur das Vorhandensein von Fehlern zeigen, aber nie deren Abwesenheit. Und irgendwas bleibt immer "hängen" - so war (rückblickend) die eine oder andere Aufgabenstellung mir zwar "klar", aber für die Hörer wohl nicht. Das fiel dann aber nicht mehr auf.
netzwerkarchitekt hat geschrieben:ich kritisiere die mangelhaften erklärung/erläuterung der aufgabenstellung zu dieser ha und den hintergrund dieser aufgabe. insbesondere ist mir (wie hier einigen) nicht klar, wie mein inventory aussieht (baum, vector, liste, foo, bar?), wie komme ich an den inhalt dieser struktur, welche kriterien gelten für das maximum (ich kann schlecht ein maximum einer sammlung von büchern, audo-cds und dvds erraten). welche dateien gehören in welcher version zur bearbeitung der ha? darüber herscht ja doch eine gewisse konfusion. was sind bugs, was sind "reale" aufgaben? wo ist der hintergrund/zielstellung der lösung, der in den vorhergehenden übungen eigentlich ganz gut zur sprache kam (z.b. "erstellen sie die methode max zur erhebung des am meisten vorhanden produktyp." oder "es geht um die suche in dem warenbestand eines online-versandhauses" oder so netter smalltalk.)
Wie werden die Daten gespeichert? In "irgendeiner" Collection, hier habt ihr also die Freiheit der Wahl gehabt (und auch die Qual der Wahl). Rückblickend wäre eine Vorgabe -- etwa "nutzen Sie java.util.Vector<StockItem> zur Speicherung" -- wohl einfacher gewesen.

Für das Maximum gilt, was Euer Vergleichsoperator als "Comparator" implementiert. Das kann also z.B. einfach ein Vergleich der ID sein, oder ein alphabetischer Vergleich des Namens, ... Im Vordergrund stand "implementiert einen Comparator", nicht "implementiert ihn so, dass...". Auch hier wäre mehr Vorgabe zwar auch mehr Gängelung, aber dafür wohl auch weniger Suchaufwand zur Folge gehabt.
netzwerkarchitekt hat geschrieben: viele der o.g. fragen kamen in diesem oder einem anderen thread schon mehr oder weniger ausführlich zur sprache. ich würde mir solche klarstellungen jedoch in der aufgabe wünschen. einerseits ist es zu begrüßen, dass die veranstalter updates zur verfügung stellen und korrekturen nachzuliefern. andererseits senkt es nur mit der zeit die motivation (zumindest bei mir), nur tröpfchenweise nachbesserungen und anmerkungen zu erfahren.
Das kann ich zwar verstehen, aber wir sind einerseits auch nur Menschen (und neigen dazu Fehler zu machen), und andererseits sieht man nicht immer sofort, wo andere Verständnisprobleme haben könnten ("Betriebsblindheit"). Und je knapper die Zeit für Korrekturen bemessen ist, desto mehr Unklarheiten verbleiben (auch hier: siehe Folien zu Testen und dem "Teufelskreis").

Wenn uns die Fehler oder Unklarheiten nicht direkt selbst auffallen, können wir halt leider nur dann tätig werden, wenn wir darauf hingewiesen werden - ob durch einen Tutor in der Besprechung, eine Frage in der Vorlesung oder einen Beitrag im Forum. "Proaktiv" Fehler und Unklarheiten beseitigen, die man nicht sieht, geht prinzipbedingt nicht :). Früheres Testen (die Tutoren kriegen die Aufgaben viel früher und sehen sie durch) könnte hier helfen, aber dazu müssen die Aufgaben eben auch so rechtzeitig fertig sein...Siehe oben dazu.
netzwerkarchitekt hat geschrieben:zum vorschlag für weiteres personal:
ich wollte anregen, dass mehr zeit für die ausarbeitung/kontrolle der übungsaufgaben bereitgestellt werden kann. ich kann die situation der veranstalter/autoren durchaus nachvollziehen. da hier geäussert wurde, es läge zum teil an der mangelnden zeit. aber ich als student habe widerum auch keine zeit, mich ein komplettes wochenende mit der hausübung zu beschäftigen. und mein problem ist nicht, das in java zu übersetzen, wohl jedoch erstmal zu verstehen was überhaupt sinn und anforderung der aufgabe ist.
...Genau für diese Verständnisfragen (unter anderem) werden ja die Tutoren bezahlt. DIe meisten dieser Fragen lassen sich relativ einfach beantworten, wenn man - wie bei den Tutoren der Fall - auf die Lösungsvorschläge oder den Sourcecode zugreifen kann. Dort steht schließlich (indirekt) drin, wie es gedacht war...

Viele Grüße,

Guido

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Re: Unverständliche HA 10

Beitrag von itportal2 » 26. Jan 2008 10:02

Eigentlich ist die Hausaufgabe an sich nicht schwer. Das Problem liegt nur daran, zu verstehen was von uns erwartet ist.

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von andre_w » 26. Jan 2008 17:04

Hallo,

ich würde gerne nochmal auf das ursprüngliche Thema des Threads zu sprechen kommen, die generischen Typparameter bei mergeInventory.
Aus den bisherigen Kommentaren (und daraus, dass ein 3. generischer Typ in der Vorlage dabei steht) schließe ich, dass wir uns über Rückgabewert besondere Gedanken machen, also nicht einfach Collection<StockItem> verwenden sollen.

Ist das korrekt?

Die beste Lösung wäre es ja eigentlich, den ersten gemeinsamen "Super"-typen von Type1 und Type2 zu bestimmen und als Rückgabewert zu verwenden (als Collection natürlich). Mein Problem dabei ist, dass Java scheinbar nicht mehrere "super"-Einschränkungen auf die Typparameter gestattet (bei "Collection<? super Type1 & Type2>" kommt ein Syntaxfehler.
Bin ich auf dem richtigen Dampfer?

Vielen Dank, Andre
let's be friends on twitter studivz facebook - my blog

_Peter_
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 170
Registriert: 1. Okt 2007 19:56

Re: Unverständliche HA 10

Beitrag von _Peter_ » 26. Jan 2008 17:35

Wie sieht eigentlich die Punkte Verteilung bei der HA10 aus.

Und, ich schließe mich den anderen an, die Aufgabenstellung ist eine Zumutung.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Re: Unverständliche HA 10

Beitrag von Stumpf.Alex » 26. Jan 2008 17:40

Naja, die Idee ist ja nicht schlecht. Aber du muss daran denken, dass super nur die untere Schranke festlegst und nach oben offen bist, also auch theoretisch Object akzeptieren würdest. Probiers mal mit extends um die Vererbungshierarchie von oben aus aufzubröseln.

Antworten

Zurück zu „Archiv“