Seite 4 von 5

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 15:16
von netzwerkarchitekt
hallo,

ich bin SEHR frustriert!
1. ich kann mir nicht erklären, warum der quellcode für die stocktree klasse zwar in der mulö ist, aber nicht als quelltextdatei auf der homepage bereitgestellt wird.
2. wenn ich mir schon den quellcode für die stocktree klasse aus dem pdf ziehe, dann sollte dass dank pdf doch wenigstens funktionieren und nicht so aussehen:

[code] package S t o c k k e e p i n g ;
1
2
p u b l i c c l a s s S t o c k T r e e <T e x t e n d s S t o c k I t e m > {
3
private T data ;
4
p r i v a t e S t o c k T r e e <T> l e f t ;
5
p r i v a t e S t o c k T r e e <T> r i g h t ;
6
7
private int height = 0;
8
p r i v a t e s t a t i c i n t maxHeight ;
9
10
/∗ ∗
11
∗ c o n s t r u c t s a new S t o c k T r e e u s i n g t h e l e f t a n d r i g h t s u b − t r e e p l u s
12
∗ a s i n g l e i t e m . N o t e t h a t l e f t T r e e , r i g h t T r e e may b e n u l l .
13

14
∗ @param l e f t T r e e t h e l e f t s u b t r e e ( i f a n y )
15
∗ @param r i g h t T r e e t h e r i g h t s u b t r e e ( i f a n y )
16
∗ @param i t e m D a t a t h e d a t a o f t h e c u r r e n t i t e m
17
∗/
18
[/code]
etc.

dieses problem wurde mir auch von anderen berichtet.

ps.
(natürlich hätte ich den code so oder ähnlich ja selbst in der übung programmieren sollen, aber wie gesagt habe ich mit der übung auch noch sehr viel gravierendere probleme und nicht ewig zeit)

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 15:20
von Stumpf.Alex
Ja das Problem habe ich auch wenn ich Code von den pdfs raus kopieren will. :cry:

Dafür können die aber auch nichts, außer die Codes seperat zum download zur Verfügung stellen.

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 15:29
von netzwerkarchitekt
[quote]Ja das Problem habe ich auch wenn ich Code von den pdfs raus kopieren will. :cry:

Dafür können die aber auch nichts, außer die Codes seperat zum download zur Verfügung stellen.[/quote]

mir ist schon fast klar dass ich damit ungerecht bin. aber ich habe keine chance außer abtippen.
@Alex: hast du die stocktree klasse als code? wenn ja dann fände ich es super die hier mal zu posten.

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 15:33
von C0RNi666
ich bin mir nicht sicher, ob der code nich schonmal irgendwo gepostet wurde oder sonstwo zum download bereit steht.

im anhang findet ihr die StockTree.java

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 15:37
von netzwerkarchitekt
vielen dank!

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 16:55
von Osterlaus
Wofür braucht ihr einen StockTree? Bei mir klappt alles ohne, wir haben doch die Vektoren als Speichermöglichkeit.

Und trotzdem sind noch zwei Dinge unklar. Denn sowohl beim Filtern als auch beim Maximum habe ich noch Probleme mit den Generics. Zum max: Wie schreibe ich mir am besten den Comparator zum Testen? Der müsste doch unter Umständen eine AudioCD mit einem Video vergleichen können, oder? Der Funktion übergebe ich einen Comparator<Type1>, Type1 extended StockItem, aber dann bekomme ich beim Aufruf des Comparators die folgende Fehlermeldung:
The method compare(Type1, Type1) in the type Comparator<Type1> is not applicable for the arguments (StockItem, AudioCD)
Dieselbe Fehlermeldung erhalte ich, wenn ich in meiner Filterfunktion check aufrufe:
The method check(Type) in the type IFilterPredicate<Type> is not applicable for the arguments (AudioCD)
Wie umgehe ich das nun?

//Nachtrag: Problem in beiden Fällen gelöst, indem eben weder IFilterPredicator noch Comparator mit generischem Typ übergeben werden....

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 18:54
von S. Oelmann
Der StockTree wird in der Testklasse verwendet.

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 20:00
von C0RNi666
Osterlaus hat geschrieben://Nachtrag: Problem in beiden Fällen gelöst, indem eben weder IFilterPredicator noch Comparator mit generischem Typ übergeben werden....
hmm sollen IFilterPredicator und Comparator nicht laut template generisch übergeben werden?
das template sorgt nur für verwirrungen..

bei mir funzt das auch ohne generische parameter, allerdings bin ich mir nicht sicher, ob wir hier wirklich das template so abändern dürfen. schließlich hat sich der autor was dabei gedacht oder nich ( zumindest bei mergeInventory)?

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 20:26
von Stumpf.Alex
Wie meinst du das? Benutzt du comperator als raw-Typ? Also einfach:

Code: Alles auswählen

public <T extends Comparator> StockItem max(T comparator)
oder meinst du bei den Paramenter?

Code: Alles auswählen

public <T extends Comparator<StockItem>> StockItem max(StockItem comparator)

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 21:44
von C0RNi666
also den Comparator hab ich schon generisch als parameter drin.
inzwischen hab ich das auch template conform hingefummelt, also eigentlich läuft das ^^

allerdings bin ich mir nicht sicher, wie ich einen Comparator zum testen implementieren soll :roll:
auch in der javadoc konnte ich leider nichts dazu finden.. hat jemand vielleicht einen tipp für mich?

//Nachtrag: najoa nen eigene comparator klasse zum testen tuts auch :wink:

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 21:56
von Krümelmonster

Code: Alles auswählen

package Stockkeeping;

import java.util.Comparator;

public class StockItemComparator implements Comparator<StockItem> {
	public int compare(StockItem o1, StockItem o2) {
		return o1.getID() - o2.getID();
	}
}
Gibt eine positive Zahl zurück, falls die ID des ersten Objekts größer ist, als die des zweiten Objekts.
Gibt eine negative Zahl zurück, falls die ID des zweiten Objekts größer ist, als die des ersten Objekts.
Gibt eine Null zurück, falls die ID des ersten Objekts so groß wie die des zweiten Objekts ist.

So kannst du das Objekt mit der größten ID herausfinden, indem du dir das Objekt mit der größten ID
merkst und es mit dem nächsten Objekt in der Liste vergleichst.

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 22:11
von C0RNi666
jo, ein anderes Beispiel wäre nach Namen, Hashwert oder sonstwas zu sortieren. das ist dem programmierer laut interface freigegeben.

allerdings greife ich doch nochmal meine frage von vorhin auf. und zwar bezog sich die nicht auf den generischen type des Comparator paramter in der max methode sondern darauf, dass laut template max einen generischen <type> verwendet.

Code: Alles auswählen

  <Type> StockItem max(T comparator);
meine implementierung schaut stattdesssen so aus:

Code: Alles auswählen

   StockItem max(Comparator<Object> comparator);
ist uns die freiheit auch überlassen?

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 22:20
von Krümelmonster

Code: Alles auswählen

StockItem max(Comparator<Object> comparator);
Comparator<StockItem> ist kein Subtyp von Comparator<Object>.
Du musst sicherstellen, dass der Comparator eine Erweiterung von Comparator<StockItem>
ist.

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 22:38
von C0RNi666
hmm mal abgesehen davon, dass Comparator nicht implementiert werden muss, ist es doch auch nicht nötig diesen auf StockItem einzuschränken, bzw. den Type davon erben zu lassen.

Da du in deiner Comparator klasse ein Comparator<StockItem> interface implementierst macht das so wie du sagst auch sinn, genauso gut kann je nach comparator klasse auch jeder andere Typ verwendet werden :wink:

Re: Unverständliche HA 10

Verfasst: 27. Jan 2008 22:49
von Stumpf.Alex
Wenn man aber wirklich einen Comperator implementiert, muss dieser typbeschränkt sein, ansonsten könnte man mit dem comperator z.B. StockItem IDs vergleichen.
Deshalb sollte max auch schon typbeschränkt sein, da ansonsten die Methode compare des comperator nicht StockItems als Parameter akzeptiert.